我目前正在评估Dymola 2020建立太阳能发电厂模型,但我很难在使用自定义连接器的模型中计算出方程的数量。
以下是代码:
connector Port
flow Real Q;
Real P;
Real T;
end Port;model Inlet
parameter Real Q = 1;
parameter Real P = 2;
parameter Real T = 3;
Port a;
equation
a.Q = Q;
a.P = P;
a.T = T;
end Inlet;我在模型中设置了3个方程,但是有一个误差显示有4个方程。方程是如何计算的?为什么有四个?
这个问题在结构上是单数的。 它有3个标量未知数和4个标量方程。实部有3个未知数和4个方程。整数部分有0个未知数和0个方程。布尔部分有0个未知数和0个方程。字符串部分有0个未知数和0个方程。 标量实未知元数为3,标量实方程元数为4。 实元素的部分问题被高估了。集合中有1个标量方程: a.T = T;a.P = P;a.Q = Q;
发布于 2019-11-12 07:43:48
您的示例有两个分离的问题:
Inlet设置所有接口变量。物理源模型设置跨变量或流变量。您有一个压力源或是一个流源,它不能同时设置两者。这可以归结为管道计算来自流的压降,或者从压降计算流量。模型一般假设跨变量或流变量由外部决定。由此,该模型使用其equation部分中定义的关系计算另一个模型。对于您的示例,所有这些都归结为:如果从a.Q = Q;中删除任何方程(例如Inlet ),则模型将进行检查。对此的解释是如何从连接器和模型中生成方程。有关此问题的更多信息,请参见Modelica语言规范,第9.2节,第110页底部,“每个连接集都用于生成.”关于上述两点,我建议查看一下Modelica的FluidHeatFlow库,特别是在Modelica.Thermal.FluidHeatFlow.Interfaces.FlowPort中定义的接口。从您的接口变量来看,这个库提供了类似的物理域。
为了更简单的开始,密切关注Modelica.Thermal.HeatTransfer也是有意义的。这个包只有一对跨/流变量,这样就更容易理解了。
发布于 2019-11-14 09:07:00
正如评论中提到的,我认为您应该研究一下Modelica的stream connectors,它本质上支持热流体组件中的零流量和流量反转。
理解它们可能有点棘手,所以不久前,我在GitHub上放置了一个小型示例包,演示了流连接器的基本知识。如果你感兴趣,你可以在这里找到它:https://github.com/justnielsen/ModelicaTutorials。还有一个维基页面解释Stream connector语法。
顺便说一下,Claytex有一个出色的博客,每周更新一次。他们在2017年发布了一篇关于流连接器的文章:https://www.claytex.com/tech-blog/fluid-connectors-modelica-standard-library/
向你问好,雷内只是尼尔森
https://stackoverflow.com/questions/58805965
复制相似问题