我目前正在评估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个方程。

标量的数量Real未知元素为3。标量的数量
实方程元素为4。

Real元素的部分问题是过高的。有1个
标量方程组太多了:a.T = T; a.P = P; Q = Q;

最佳答案

您的示例有两个独立的问题:


连接器通常包含跨变量/势变量和流/通过变量Modelica Language Specification,第9.3.1节。遵循此约定,使用这些连接器的模型通常定义流与跨变量之间的关系。有关连接器定义的一些常规信息(非常易读),请参见Modelica by Exmple。我认为遵循此约定不是强制性的,但是如果您在对物理系统进行建模时这样做会使生活变得容易得多。
Inlet设置所有接口变量。物理源模型设置跨变量或流变量。您有压力源或流量源,不能同时设置两者。这可以归结为计算流量压力降或压力流量的管道。模型通常假定跨变量或流变量由外部确定。据此,该模型使用其equation部分中定义的关系来计算另一个模型。对于您的示例,所有这些都归结为:如果删除任何方程式,例如从a.Q = Q;中的Inlet,模型进行检查。对此的解释是如何从连接器和模型生成方程式。有关此的更多信息,请参见Modelica Language Specification,第110页底部的9.2节,说“每个连接集都用于生成...”。


关于以上两点,我建议您看一下Modelica标准库的FluidHeatFlow库,尤其是Modelica.Thermal.FluidHeatFlow.Interfaces.FlowPort中定义的接口。从您的接口变量来看,该库可提供类似的物理域。

对于更简单的开始,仔细查看Modelica.Thermal.HeatTransfer也很有意义。该软件包只有一对跨/流变量,因此更易于理解。

关于modelica - 计算带连接器的模型中的方程数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58805965/

10-13 03:07