Modelica 计算带有连接器的模型中的方程数

Modelica 计算带有连接器的模型中的方程数,modelica,dymola,Modelica,Dymola,我目前正在评估Dymola 2020,以建立一个太阳能发电厂模型,但在使用自定义连接器的模型中,我很难处理大量方程 代码如下: connector Port flow Real Q; Real P; Real T; end Port; 我在模型中设置了3个方程,但有一个错误显示有4个方程。方程式是如何计算的?为什么有四个呢 这个问题在结构上是单一的 它有3个标量未知数和4个标量方程。真正的部分有3个 未知数和4个方程。整数部分有0个未知数和0个 方程。布尔部分有0个未知数和0个方程

我目前正在评估Dymola 2020,以建立一个太阳能发电厂模型,但在使用自定义连接器的模型中,我很难处理大量方程

代码如下:

connector Port
  flow Real Q;
  Real P;
  Real T;
end Port;
我在模型中设置了3个方程,但有一个错误显示有4个方程。方程式是如何计算的?为什么有四个呢

这个问题在结构上是单一的

它有3个标量未知数和4个标量方程。真正的部分有3个 未知数和4个方程。整数部分有0个未知数和0个 方程。布尔部分有0个未知数和0个方程。弦 零件有0个未知数和0个方程式

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

真实元素的部分问题是过度确定的。有1个 集合中的标量方程太多:a.T=T;a、 P=P;a、 Q=Q


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

  • 连接器通常包含第9.3.1节中的交叉/电位和流动/通过变量对。按照这一惯例,使用这些连接器的模型通常定义流和跨变量之间的关系。有关连接器定义的一些一般信息,请参见。我认为遵守这个约定不是强制性的,但是如果你在建模物理系统时这样做的话,会让生活变得更轻松

  • 入口
    设置所有接口变量。物理源模型可设置交叉变量或流量变量。您有一个压力源流动源,它不能同时设置这两个。这可以归结为管道计算流量压降或压降流量。模型通常假设跨变量或流量变量由外部决定。由此,模型使用其
    方程
    部分中定义的关系计算另一个。以你的例子来说,这一切归结为:如果你去掉任何等式,例如
    a.Q=Q
    进口
    ,型号检查。对此的解释是如何从连接器和模型生成方程式。有关这方面的更多信息,请参见第110页底部的第9.2节,其中说“每个连接集用于生成…”

  • 关于以上两点,我建议大家看看Modelica标准库的FluidHeatFlow库,特别是
    Modelica.Thermal.FluidHeatFlow.Interfaces.FlowPort
    中定义的接口。从您的接口变量来看,这个库服务于类似的物理域


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

    如评论中所述,我认为您应该研究Modelica的
    流连接器
    ,该连接器本质上支持热流体组件中的零流动和反向流动

    它们可能有点难以理解,所以不久前我在GitHub上放了一个小的示例包,演示了流连接器的基本原理。如果您感兴趣,可以在此处找到:。还有一页解释
    流连接器
    语法

    顺便说一句,Claytex有一个极好的每周更新。他们有一篇2017年在线连接器的帖子:

    致以最良好的祝愿,
    Rene Just Nielsen

    是否有一个列表显示流量变量和跨变量的耦合。至于热流体系统,我正在考虑在连接器的定义中使用压力、焓、质量流量。压力和质量流量可以看作是一对,但对于焓,我不确定哪一个变量应该一起使用。我认为你应该研究
    Modelica.Fluid
    ,它使用“流连接器”来表示比焓。学习曲线可能有点陡峭,但如果你要使用热流体系统,那么值得付出努力。这里也可以找到一些:特别是对于流体领域:我正在尝试重构modelica库,因为这个库中的连接器。不要使用任何流变量和流变量。如果我打算重写代码,是否有任何参考示例?
    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;