如何将元素与作为彼此子集的接口“连接”?

时间:2016-01-25 09:38:55

标签: modelica

我们正在开发一个简单的库来同时模拟水文过程和开放渠道流程。

对于明渠流量元素(一维浅水方程,堰等),我们使用一个带排放(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;

是否可以为两种类型的元素定义单个连接器,而无需添加虚拟方程式?我们尝试过使用可扩展连接器,但到目前为止还没有成功。可扩展连接器是否适合这种想法?

0 个答案:

没有答案