我们正在开发一个简单的库来同时模拟水文过程和开放渠道流程。
对于明渠流量元素(一维浅水方程,堰等),我们使用一个带排放(Q)的连接器作为流量变量,水位(H)作为变量。另一方面,在水文应用中,路由模式的流行选择仅涉及Q作为变量。在这样的模型中,流动不是由潜在的(H)差异驱动,而是更经验地指定。
Whe希望以这样的方式设置包:(Q,H) - 元素可以连接到仅Q元素。此外,如果可能,一种元素应该可以容易地与另一种元素互换。
例如,下面是一个简单的设置(“集成”),带有一个储存器(“存储”),一个路由元素(“PassFlow”)和一个源(“放电”)。储层需要暴露Q和H,以便它可以与(Q-H)明渠流动元件(在该实例中不存在)相互作用。这里,它连接到原则上仅Q的元素。它仍然使用(Q,H)连接器来允许连接。但是,没有水位等式。这意味着我们需要在Integrated模型中添加一个虚拟方程来关闭系统,这显然是不可取的。
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;
是否可以为两种类型的元素定义单个连接器,而无需添加虚拟方程式?我们尝试过使用可扩展连接器,但到目前为止还没有成功。可扩展连接器是否适合这种想法?