Dymola 在非线性系统初始化过程中如何选择迭代变量?

How does Dymola choose the iteration variables during nonlinear system initialization process?

假设我有一个使用 Dymola 构建的非常复杂的热流体模型。在初始化过程中,dymola 将如何为非线性求解器选择迭代变量? dymola 中是否有针对此问题的标准?我想说清楚,因为有时如果迭代变量的起始值离正确的解决方案太远,在初始化过程中会出现分歧问题。我想如果我知道迭代变量的选择,我可以确保它们的值是合适的而不是检查所有的起始值。

我认为 public 无法获得此信息。至少我在用户手册中找不到任何内容。因此,您只有有限的选择。

您可以做的是:

  • 列出您当前的迭代变量
  • 尝试影响选择
  • 获取有关已执行迭代的信息

列出迭代变量

您可以通过激活标志来列出您当前的迭代变量

Advanced.LogNonLinearIterationVariables = true;

迭代变量将作为信息消息 Variables appearing in the nonlinear systems of equations:

Translation 选项卡中列出

影响所选变量

您可以通过设置起始值来影响(但不能控制)为迭代选择的变量。以此代码为例:

model MyNonLinear
  Real x;
  Real y;
  Real z(start=-1);
equation 
  0 = y - z;
  x = (y + z)^2;
  x = (y + z) + time;
end MyNonLinear;

如果您在激活上述标志的情况下进行翻译,Dymola 将在消息的翻译选项卡中提供此信息 window:

Iteration variables:
y

当您另外设置 x 的起始值时,(例如 start=1)x 在这种情况下成为迭代变量。

执行迭代的信息

要获得有关已执行迭代的更多信息,请激活 Simulation SetupDebug 选项卡中的 Nonlinear solver diagnostics 标志:

Dymola 随后将在模拟日志中显示其他信息。请注意,其中一些标志可以生成输出日志。

这可以通过一个非常简单的文档功能来实现。有关一些有限信息,请参阅 2019 FD01 发布亮点:https://www.3ds.com/fileadmin/PRODUCTS/CATIA/DYMOLA/PDF/Dymola-2019FD01-highlights.pdf

具体来说: