在 Dymola 中求解非线性系统模型的最大能力是多少?

Mar*_*vel 2 modelica dymola

在Dymola中,我经常会遇到非线性系统初始化失败或者可能是在大型热流体系统中很难解决的刚性系统,但对于一个简单的系统来说,不会出现这种问题。我的问题是:

  1. 所以我想知道解决非线性系统模型的最大能力是多少?例如,我的模型中最多可以包含多少个非线性方程?
  2. Dymola 中是否有任何设置可以提高求解非线性系统的能力?
  3. 如何在不损害模型精度的情况下减少模型中非线性方程的数量?

Mar*_* A. 7

这些都是很难以普遍有效的方式回答的问题。我仍然会尝试分享我在 Dymola 和非线性系统方面的一些经验。

  1. 没有限制大小的硬数字。它更多地取决于方程的非线性程度,而不是它们的数量。我用 150 大小的非线性系统模拟了模型,这些模型非常稳定,而其他大小为 10 的模型可以制动......

  2. 对此有多种观点

    • 我曾研究过一些模型,这些模型使 C 编译器在编译过程中内存不足。如果您遇到此类问题,通过设置强制 64Bit 编译Advanced.CompileWith64=2会有所帮助。那么你不应该再耗尽内存了。这仅指尺寸而已。
    • 非线性系统的性能可以通过设置激活 DAE 模式来提高Advanced.Define.DAEsolver=true。但这并不适用于所有求解器。
    • 除上述内容外,它还可以帮助设置Advanced.MoveEquationsToDynamics=true,手册指出:“它迫使积分器在每个积分器步骤中求解非线性方程,从而更频繁地更新初始猜测。”
    • 正如 Erik 所提到的,homotopy()-operator 非常重要,因为它可以帮助求解器在初始化困难的情况下收敛。
  3. 这是非常特定于模型的。解耦可以提供帮助,例如通过添加能量存储元件/状态将系统拆分为更小的系统。这可以基于系统的物理特性来完成,并且如果可能的话是优选的解决方案。可以添加(更人为的)替代过滤器/延迟。通常这会对准确性产生负面影响。


小智 5

我非常同意 Markus 的建议,但也想提醒你关于 Modelica 的同伦算子。一个精心选择的简化模型可以极大地帮助 Dymola 初始化具有大型且困难的非线性系统的模型。

通常,在求解非线性系统时,良好的初始猜测非常重要。使用同伦只是提供这些好的猜测的一种隐式方式。