我试图计算两个连接器之间的压力差,但是其中一个条件是参数calc_dp的条件。仅当calc_dp为true时才计算dp。
我尝试过这样的事情:
equation
if calc_dp then
inlet.p - outlet.p = dp;
else
dp = 0;
end if;
这不起作用,我收到一条错误消息,说由于移除连接器而导致方程的一部分丢失。
答案 0 :(得分:4)
问题是端口optipng
可能有条件存在。如果存在outlet
,则这些方程应该很好。否则,变量outlet
不存在,因为outlet.p
未实例化。
以下变通办法实际上来自outlet
:
Modelica.Electrical.Analog.Interfaces.ConditionalHeatPort
更多说明:由于Modelica模型不是因果关系,因此强烈建议使用package ConditionalPort
connector Port
Modelica.SIunits.Pressure p "Pressure";
end Port;
model ConditionalTwoPort
parameter Boolean useOutlet = false "Enable outlet, if true";
Port inlet "Port" annotation (Placement(transformation(extent={{-110,-10},{-90,10}})));
Port outlet(p=pOutlet) if useOutlet "Conditional port" annotation (Placement(transformation(extent={{90,-10},{110,10}})));
Modelica.SIunits.Pressure dp "Pressure difference";
Modelica.SIunits.Pressure pOutlet "Pressure of conditional port, if present";
equation
if not useOutlet then
pOutlet = 0;
end if;
dp = inlet.p - pOutlet;
end ConditionalTwoPort;
end ConditionalPort;
和port_a
而不是port_b
和inlet
。