Dymola 求解非线性系统模型的最大能力是多少?
How much is the largest capability of solving the nonlinear system model in Dymola?
在Dymola中,我经常遇到非线性系统初始化失败,或者是大型热流体系统中难以求解的刚性系统,但对于简单系统,不会有这种问题。我的问题是:
- 所以我想知道求解非线性系统模型的最大能力是多少?例如,我的模型最多可以包括多少个非线性方程?
- Dymola 中是否有任何设置可以提高求解非线性系统的能力?
- 如何在不损害模型精度的情况下减少模型中非线性方程的数量?
这些问题很难以普遍有效的方式回答。我仍然会尝试分享我在 Dymola 和非线性系统方面的一些经验。
没有限制大小的硬性数字。它更多地取决于方程的非线性程度而不是它们的数量。我模拟了带有 150 号非线性系统的模型,这些模型非常稳定,而其他 10 号系统可以制动...
对此有多种观点
- 我曾研究过一些模型,这些模型在编译期间使 C 编译器 运行 内存不足。如果您遇到此类问题,通过设置
Advanced.CompileWith64=2
强制 64 位编译会有所帮助。那么你不应该再 运行 内存不足了。这仅指尺寸而已。
- 通过设置
Advanced.Define.DAEsolver=true
激活 DAE 模式可以提高非线性系统的性能。但这并不适用于所有求解器。
- 除上述内容外,它还可以帮助设置
Advanced.MoveEquationsToDynamics=true
,手册对此进行了说明:“它强制积分器求解非线性
对每个积分器步骤进行方程式,因此它也更频繁地更新初始猜测。"
- 正如 Erik 所提到的,
homotopy()
运算符非常重要,因为它可以帮助求解器在难以初始化的情况下收敛。
这是非常特定于模型的。解耦可以提供帮助,例如通过添加能量存储 elements/states 将系统拆分为更小的系统。这可以根据系统的物理特性来完成,如果可能的话,这是更可取的解决方案。作为(更人为的)替代方案 filter/delays 可以添加。通常这会对准确性产生负面影响。
我非常同意Markus的建议,但也想提醒您有关Modelica的同伦算子。精心选择的简化模型可以极大地帮助 Dymola 初始化具有大型且困难的非线性系统的模型。
一般来说,良好的初始猜测在求解非线性系统时非常重要。使用同伦只是提供这些好的猜测的隐含方式。
在Dymola中,我经常遇到非线性系统初始化失败,或者是大型热流体系统中难以求解的刚性系统,但对于简单系统,不会有这种问题。我的问题是:
- 所以我想知道求解非线性系统模型的最大能力是多少?例如,我的模型最多可以包括多少个非线性方程?
- Dymola 中是否有任何设置可以提高求解非线性系统的能力?
- 如何在不损害模型精度的情况下减少模型中非线性方程的数量?
这些问题很难以普遍有效的方式回答。我仍然会尝试分享我在 Dymola 和非线性系统方面的一些经验。
没有限制大小的硬性数字。它更多地取决于方程的非线性程度而不是它们的数量。我模拟了带有 150 号非线性系统的模型,这些模型非常稳定,而其他 10 号系统可以制动...
对此有多种观点
- 我曾研究过一些模型,这些模型在编译期间使 C 编译器 运行 内存不足。如果您遇到此类问题,通过设置
Advanced.CompileWith64=2
强制 64 位编译会有所帮助。那么你不应该再 运行 内存不足了。这仅指尺寸而已。 - 通过设置
Advanced.Define.DAEsolver=true
激活 DAE 模式可以提高非线性系统的性能。但这并不适用于所有求解器。 - 除上述内容外,它还可以帮助设置
Advanced.MoveEquationsToDynamics=true
,手册对此进行了说明:“它强制积分器求解非线性 对每个积分器步骤进行方程式,因此它也更频繁地更新初始猜测。" - 正如 Erik 所提到的,
homotopy()
运算符非常重要,因为它可以帮助求解器在难以初始化的情况下收敛。
- 我曾研究过一些模型,这些模型在编译期间使 C 编译器 运行 内存不足。如果您遇到此类问题,通过设置
这是非常特定于模型的。解耦可以提供帮助,例如通过添加能量存储 elements/states 将系统拆分为更小的系统。这可以根据系统的物理特性来完成,如果可能的话,这是更可取的解决方案。作为(更人为的)替代方案 filter/delays 可以添加。通常这会对准确性产生负面影响。
我非常同意Markus的建议,但也想提醒您有关Modelica的同伦算子。精心选择的简化模型可以极大地帮助 Dymola 初始化具有大型且困难的非线性系统的模型。
一般来说,良好的初始猜测在求解非线性系统时非常重要。使用同伦只是提供这些好的猜测的隐含方式。