如何在Dymola中找到撕裂算法选择的变量

我想在 Dymola 中找到由撕裂算法选择的变量集。这样我就可以知道哪些变量将系统的不同部分连接在一起。但我不确定如何在 Dymola 中显示这些变量。我查看了 Dymola 的帮助文档,但没有找到与如何显示这些变量相关的任何内容。

回答

您应该能够在 中看到它dsmodel.mof,它是在Advanced.OutputModelicaCode = true;使用“模拟设置 -> 翻译 -> 在 dsmodel.mof 中生成已翻译的 Modelica 代码列表”在 UI 中设置或激活它后创建的。

Dymola 将在// Torn part. 搜索此dsmodel.mof文件是一个不错的选择,因为文件可能会变得非常大。

确切的代码将取决于问题的类型。两个例子:

(1) 像这样一个相当简单的电气

将象征性地解决,结果代码:

...
// Linear system of equations
// Tag: simulation.linear[1]
  // Symbolic solution
    /*  Original equation
    resistor1.v = constantVoltage.V-resistor.v-capacitor.v;
    */
    resistor1.p.i :=  -(capacitor.v-constantVoltage.V+resistor.R_actual*
      inductor.i)/(resistor.R_actual+resistor1.R_actual);
  // Torn part
    resistor.p.i := inductor.i+resistor1.p.i;
    resistor.v := resistor.R_actual*resistor.p.i;
    resistor1.v := resistor1.R_actual*resistor1.p.i;
// End of linear system of equations
...

在这种情况下,撕裂变量是resistor1.p.i,其中直接说明了计算它的方程。

(2) 翻译Modelica.Thermal.FluidHeatFlow.Examples.TwoMass会给你一个非线性的情况,即当需要迭代来求解方程组时。你应该找到类似的东西:

...
  // Start values for iteration variables of non-linear system of 1 equations: 
  //   pipe2.V_flow(start = 0)
algorithm // Torn part
  pipe2.flowPort_a.m_flow := pipe2.V_flow*pipe2.medium.rho;
  pipe1.flowPort_a.m_flow :=  -(pipe2.flowPort_a.m_flow+ambient1.flowPort.m_flow);
...

pipe2.V_flow在这种情况下,撕裂变量是迭代的起始值。


以上是如何在Dymola中找到撕裂算法选择的变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>