Modelica 如何';连接';具有相互为子集的接口的元素?
我们正在开发一个简单的库来同时模拟水文过程和明渠水流 对于明渠水流要素(1-D浅水方程、堰等),我们使用流量(Q)作为流量变量,水位(H)作为横向变量的连接器。另一方面,在水文应用中,路由模式的流行选择只涉及Q变量。在这种模型中,流动不是由势差(H)驱动的,而是更经验性的 Whe希望以(Q,H)-元素可以连接到仅Q-元素的方式设置包。此外,如果可能,一种类型的元件应易于与另一种类型的元件互换 作为一个例子,下面是一个简单的设置(“集成”)与一个水库(“存储”),一个路由元素(“通行”)和一个源(“排放”)。储层需要同时暴露Q和H,以便能够与(Q-H)明渠流量元件(本例中不存在)相互作用。这里,它连接到原则上仅为Q的元素。它仍然使用(Q,H)-连接器来允许连接。然而,没有水位方程。这意味着我们需要在集成模型中添加一个虚拟方程来关闭系统,这显然是不可取的Modelica 如何';连接';具有相互为子集的接口的元素?,modelica,Modelica,我们正在开发一个简单的库来同时模拟水文过程和明渠水流 对于明渠水流要素(1-D浅水方程、堰等),我们使用流量(Q)作为流量变量,水位(H)作为横向变量的连接器。另一方面,在水文应用中,路由模式的流行选择只涉及Q变量。在这种模型中,流动不是由势差(H)驱动的,而是更经验性的 Whe希望以(Q,H)-元素可以连接到仅Q-元素的方式设置包。此外,如果可能,一种类型的元件应易于与另一种类型的元件互换 作为一个例子,下面是一个简单的设置(“集成”)与一个水库(“存储”),一个路由元素(“通行”)和一个源(
within Deltares;
package Test
connector FlowPort
flow Real Q;
Real H;
end FlowPort;
model Discharge
Real Q;
FlowPort port;
equation
port.Q + Q = 0;
end Discharge;
model Storage
FlowPort port;
equation
der(port.H) = port.Q;
end Storage;
model PassFlow "Inflow is outflow, level is untouched"
FlowPort upstream;
FlowPort downstream;
equation
upstream.Q + downstream.Q = 0;
end PassFlow;
model Integrated
Deltares.Test.Discharge discharge;
Deltares.Test.PassFlow passflow;
Deltares.Test.Storage storage;
equation
connect(discharge.port, passflow.upstream);
connect(passflow.downstream, storage.port);
discharge.Q = 10;
passflow.upstream.H = -1;
//I want to avoid this equation
end Integrated;
end Test;
是否可以为这两种类型的元素定义一个连接器,而无需添加虚拟方程式?我们尝试使用可扩展连接器,但迄今为止没有成功。可扩展连接器能适应这种想法吗