如何解决与使用 DASSL 的正常计算模式相比,Dymola 中的内联集成性能
我正在尝试使用 Dymola 中的内联集成进行实时模拟,我以 Modelica.Fluid.Examples.HeatingSystem
为例,但无论我选择哪种内联集成方法,模拟总是失败。
在我的理解中,内联积分意味着将离散化方程添加到模型方程中,然后 Dymola 可以进行更多的符号操作并获得新的 BLT 形式。我知道这种方法可能会导致更多的代数环,并使牛顿法很难解决这些代数环。
我的问题是:
- 与 Dymola 中的普通方法相比,哪种模型更适合内联集成方法?
- 内联积分旨在提高仿真速度,但当非线性代数环难以求解时,这可能会很困难,那么使用内联积分方法是否存在限制或规则?
- 以
Modelica.Fluid.Examples.HeatingSystem
为例,如何调整模型以使用内联集成? - 我知道 Dymola 只支持使用内联积分方法和欧拉积分器(固定步长积分算法),那么为什么内联积分方法只支持固定步长呢?是否没有必要使用可变步长?如果不限于实时仿真,我只是想使用在线积分来提高仿真速度,是否可以将在线积分方法与DASSl结合起来?
解决方法
对于大多数隐式求解器来说似乎卡住了,因为:
- 这是一个大小合理的模型,您可以将其与 6 000 秒的毫秒时间步长集成在一起;这意味着 600 万步(每个都涉及方程组)。
- 在线集成期间的反馈较少(因为提供反馈需要花费太多时间)。
但隐式 Euler 并没有卡住 - 只需几分钟即可完成。
不过,对于这个模型,你可以大量增加隐式欧拉的步长,它实际上用 1 s 就可以了;然后在不到一秒的时间内完成。
内联显式 Euler 失败,除非您使用更小的步长(与非内联显式 Euler 相同)。
注意:Dymola 中的内联求解器都是固定步长的求解器,因此设置太短的步长会减慢模拟速度,太长的步长会导致模拟失败,而 dassl、lsodar、radau、esdirk* 都在集成过程中调整步长以避免这两个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。