微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与使用 DASSL 的正常计算模式相比,Dymola 中的内联集成性能

如何解决与使用 DASSL 的正常计算模式相比,Dymola 中的内联集成性能

我正在尝试使用 Dymola 中的内联集成进行实时模拟,我以 Modelica.Fluid.Examples.HeatingSystem 为例,但无论我选择哪种内联集成方法,模拟总是失败。

  1. 当我选择显式方法时,Dymola 无法开始集成。
  2. 当我选择隐式方法时,Dymola 卡住了。
  3. 特殊的是 Rosenbrock 方法错误显示 Dymola 无法对某些方程进行微分。

在我的理解中,内联积分意味着将离散化方程添加到模型方程中,然后 Dymola 可以进行更多的符号操作并获得新的 BLT 形式。我知道这种方法可能会导致更多的代数环,并使牛顿法很难解决这些代数环。
我的问题是:

  1. 与 Dymola 中的普通方法相比,哪种模型更适合内联集成方法
  2. 内联积分旨在提高仿真速度,但当非线性代数环难以求解时,这可能会很困难,那么使用内联积分方法是否存在限制或规则?
  3. Modelica.Fluid.Examples.HeatingSystem 为例,如何调整模型以使用内联集成?
  4. 我知道 Dymola 只支持使用内联积分方法和欧拉积分器(固定步长积分算法),那么为什么内联积分方法支持固定步长呢?是否没有必要使用可变步长?如果不限于实时仿真,我只是想使用在线积分来提高仿真速度,是否可以将在线积分方法与DASSl结合起来?

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

解决方法

对于大多数隐式求解器来说似乎卡住了,因为:

  • 这是一个大小合理的模型,您可以将其与 6 000 秒的毫秒时间步长集成在一起;这意味着 600 万步(每个都涉及方程组)。
  • 在线集成期间的反馈较少(因为提供反馈需要花费太多时间)。

但隐式 Euler 并没有卡住 - 只需几分钟即可完成。

不过,对于这个模型,你可以大量增加隐式欧拉的步长,它实际上用 1 s 就可以了;然后在不到一秒的时间内完成。

内联显式 Euler 失败,除非您使用更小的步长(与非内联显式 Euler 相同)。

注意:Dymola 中的内联求解器都是固定步长的求解器,因此设置太短的步长会减慢模拟速度,太长的步长会导致模拟失败,而 dassl、lsodar、radau、esdirk* 都在集成过程中调整步长以避免这两个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。