1
我有我創建作爲一個坦克模型如下:限制罐流時的水平<= 0的Modelica
model Tank "Simple model of a tank"
parameter Real volume=1 "tank volume (m^3)";
parameter Integer num_ports=1 "Number of ports";
parameter Real static_pressure=1 "Internal Tank Pressure";
parameter Real initial_level = 0;
Stream[num_ports] ports "Stream Connectors";
Real level "Level in % 0-100";
protected
Real vol "Volume of medium in the tank";
Real pressure(start=static_pressure) "Pressure inside the tank";
initial equation
level = initial_level;
/* Pressure */
equation
pressure = vol * 0.01; // Add correct factor here to get from volume to pressure change (based on height and head)
for i in 1:num_ports loop
ports[i].pressure = static_pressure + pressure;
end for;
/* Volume Flow */
equation
der(vol) = sum(ports.m_flow); // Add density factor to get form mass flow to Volume Flow
level = vol * 100/volume;
end Tank;
我怎樣才能讓這個當電平< = 0的坦克將不允許任何負值的流量(沒有端口可以流體流出,但流體仍然可以進入)?我覺得我缺少一些微不足道的東西,但似乎無法找到一種方法,沒有太多的方程式(超定系統)。
感謝
什麼是重新發起功能Modelica的呢? – 2015-03-13 18:09:40
它將變量重新初始化爲新值,請參閱Modelica規範: https://modelica.org/documents/ModelicaSpec33Revision1.pdf – 2015-03-13 18:19:52
我猜在什麼時候應該是級別<0而不是<=的條件,因爲它會觸發等式再次。 – 2015-03-13 18:21:20