在Dymola中,我经常会遇到非线性系统初始化失败或者可能是在大型热流体系统中很难解决的刚性系统,但对于一个简单的系统来说,不会出现这种问题。我的问题是:
这些都是很难以普遍有效的方式回答的问题。我仍然会尝试分享我在 Dymola 和非线性系统方面的一些经验。
没有限制大小的硬数字。它更多地取决于方程的非线性程度,而不是它们的数量。我用 150 大小的非线性系统模拟了模型,这些模型非常稳定,而其他大小为 10 的模型可以制动......
对此有多种观点
Advanced.CompileWith64=2会有所帮助。那么你不应该再耗尽内存了。这仅指尺寸而已。Advanced.Define.DAEsolver=true。但这并不适用于所有求解器。Advanced.MoveEquationsToDynamics=true,手册指出:“它迫使积分器在每个积分器步骤中求解非线性方程,从而更频繁地更新初始猜测。”homotopy()-operator 非常重要,因为它可以帮助求解器在初始化困难的情况下收敛。这是非常特定于模型的。解耦可以提供帮助,例如通过添加能量存储元件/状态将系统拆分为更小的系统。这可以基于系统的物理特性来完成,并且如果可能的话是优选的解决方案。可以添加(更人为的)替代过滤器/延迟。通常这会对准确性产生负面影响。
小智 5
我非常同意 Markus 的建议,但也想提醒你关于 Modelica 的同伦算子。一个精心选择的简化模型可以极大地帮助 Dymola 初始化具有大型且困难的非线性系统的模型。
通常,在求解非线性系统时,良好的初始猜测非常重要。使用同伦只是提供这些好的猜测的一种隐式方式。