如何在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在这种情况下,撕裂变量是迭代的起始值。