我目前正在评估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。
Real元素的部分问题已被确定。有1个 标量方程组太多了:a.T = T; a.P = P; a.Q = Q;
答案 0 :(得分:7)
您的示例有两个独立的问题:
连接器通常包含跨对/潜在和流/通过变量Modelica Language Specification的对,第9.3.1节。遵循此约定,使用这些连接器的模型通常定义流与跨变量之间的关系。有关连接器定义的一些常规信息(非常易于阅读),请参见Modelica by Exmple。我认为遵循此约定不是强制性的,但是如果在对物理系统进行建模时这样做会使生活变得容易得多。
Inlet
设置所有接口变量。物理源模型设置跨变量或流变量。您有一个压力源或流量源,它不能同时设置两者。这可以归结为计算流量的压降或流量的压降的管道。模型通常假定跨变量或由外部变量确定。据此,模型使用在其equation
部分中定义的关系来计算另一个模型。对于您的示例,所有这些都归结为:如果删除任何方程式,例如由a.Q = Q;
中的Inlet
进行模型检查。对此的解释是如何从连接器和模型生成方程式。有关此内容的更多信息,请参见第110页底部的Modelica Language Specification,第9.2节,说“每个连接集都用于生成...”
关于以上两点,我建议看一下Modelica标准库的FluidHeatFlow库,尤其是在Modelica.Thermal.FluidHeatFlow.Interfaces.FlowPort
中定义的接口。从您的接口变量来看,该库具有类似的物理域。
为简单起见,仔细研究Modelica.Thermal.HeatTransfer
也很有意义。该软件包只有一对跨/流变量,因此更易于理解。
答案 1 :(得分:2)
正如评论中提到的,我认为您应该研究Modelica的stream connectors
,它固有地支持热流体组件的零流量和流量逆转。
要理解它们可能有些棘手,所以不久前,我在GitHub上放了一个小示例包,展示了流连接器的基本知识。如果您有兴趣,可以在这里找到:https://github.com/justnielsen/ModelicaTutorials。还有一个Wiki页介绍了Stream connector
语法。
顺便说一句,Claytex具有出色的blog,每周更新一次。他们在2017年发布了有关流连接器的帖子:https://www.claytex.com/tech-blog/fluid-connectors-modelica-standard-library/
最好的问候, 雷内·贾斯·尼尔森