首页 > 解决方案 > 在一个系统组件中重新声明两个中包

问题描述

我是modelica的新手,我没有太多的经验,但我当然掌握了基础知识。我正在尝试对微流体网络进行建模。该网络由两个阀门控制的水和油两个来源组成。两种介质的流动在 T 形接头处相互作用,然后进入罐或腔室。我不关心混合物的流动性,因为这不是我的目的。我的问题是如何在一个系统组件(例如 Tjunction 或油箱)中重新声明两个中型包装(水和油)以模拟系统。在我的真实模型中,两种介质不会相遇,因为每种介质在不同的时间通过通道。

我用这条消息附加了模型。这是链接。 https://www.dropbox.com/s/yq6lg9la8z211uc/twomediumsv2.zip?dl=0

谢谢您的帮助 。

标签: fluidmodelicaopenmodelica

解决方案


我认为您不能在模拟期间重新声明媒介。在您的情况下(您不需要混合两种流体),您可以创建一个新的介质,例如称为OilWaterMixture,从 扩展Modelica.Media.Interfaces.PartialMedium

如果您查看代码,PartialMedium您会发现它包含许多partial(“空”)函数,您应该在新的介质模型中填写这些函数。例如,OilWaterMixture您应该扩展函数specificEnthalpy_pTX以返回特定水/油混合物的水/油混合物的比焓(由质量分数向量给出X)。这可以通过将以下模型添加到OilWaterMixture包中来完成:

redeclare function extends specificEnthalpy_pTX "Return specific enthalpy"
  Oil = Modelica.Media.Incompressible.Examples.Essotherm650;
  Water = Modelica.Media.Water.StandardWater;
algorithm 
  h_oil := Oil.h_pT(p,T);
  h_water := Water.specificEnthalpy_pT(p,T);
  h := X[0]*h_oil + X[1]*h_water;
end specificEnthalpy_pTX;

质量分数向量X在中定义,PartialMedium并且OilWaterMixture您必须定义它有两个元素。

同样,由于您不会实际使用混合属性,而仅质量分数向量{0,1}{1,0}简单的线性混合方程就足够了。

当您OilWaterMixture在各种组件中使用时,错误日志会告诉您它们需要哪些介质功能。所以你可能不需要在PartialMedium.


推荐阅读