与使用 DASSL 的正常计算模式相比,Dymola 中的内联集成性能
Performance of inline integration in Dymola compared to normal calculation mode using DASSL
我尝试在Dymola中使用inline integration做实时仿真,我以Modelica.Fluid.Examples.HeatingSystem
为例,但是无论我选择哪种inline integration方法,仿真总是失败。
- 当我选择显式方法时,Dymola 无法启动集成。
- 当我选择隐式方法时,Dymola 卡住了。
- 比较特殊的是Rosenbrock方法,错误显示Dymola无法微分一些方程。
在我的理解中,内联积分意味着将离散化方程添加到模型方程中,然后 Dymola 可以进行更多的符号操作并得到新的 BLT 形式。我知道这种方法可能会导致更多的代数环,并使牛顿法难以解决这些代数环。
我的问题是:
- 与Dymola中的普通方法相比,什么样的模型更适合内联集成方法?
- 内联积分旨在提高仿真速度,但在非线性代数环难以求解的情况下可能会很困难,那么使用内联积分方法是否有限制或规则?
- 以
Modelica.Fluid.Examples.HeatingSystem
为例,如何调整模型以使用内联集成?
- 我知道Dymola只支持使用Euler积分器(固定步长积分算法)的内联积分法,那么为什么内联积分法只支持固定步长?是否不需要使用可变步长?如果不局限于实时仿真,只想使用inline integration来提高仿真速度,是否可以将inline integration方法与DASSl结合起来?
对于大多数隐式求解器来说似乎卡住了,因为:
- 这是一个合理大小的模型,您将其与 6000 秒的毫秒时间步长集成在一起;这意味着 600 万步(每一步都涉及方程组)。
- 在线集成期间反馈较少(因为提供反馈需要太多时间)。
但隐式 Euler 并没有卡住 - 只需几分钟即可完成。
但是,你可以为这个模型增加隐式欧拉的步长很多,它实际上在 1 秒时工作得很好;然后在不到一秒内完成。
内联显式 Euler 失败,除非您使用更小的步长(与非内联显式 Euler 相同)。
注意:Dymola中的内联求解器都是固定步长求解器,因此设置太短的步长会减慢模拟速度,太长的步长- size 会导致模拟失败,而 dassl, lsodar, radau, esdirk* 都会在积分时调整步长以避免这两个问题。
我尝试在Dymola中使用inline integration做实时仿真,我以Modelica.Fluid.Examples.HeatingSystem
为例,但是无论我选择哪种inline integration方法,仿真总是失败。
- 当我选择显式方法时,Dymola 无法启动集成。
- 当我选择隐式方法时,Dymola 卡住了。
- 比较特殊的是Rosenbrock方法,错误显示Dymola无法微分一些方程。
在我的理解中,内联积分意味着将离散化方程添加到模型方程中,然后 Dymola 可以进行更多的符号操作并得到新的 BLT 形式。我知道这种方法可能会导致更多的代数环,并使牛顿法难以解决这些代数环。
我的问题是:
- 与Dymola中的普通方法相比,什么样的模型更适合内联集成方法?
- 内联积分旨在提高仿真速度,但在非线性代数环难以求解的情况下可能会很困难,那么使用内联积分方法是否有限制或规则?
- 以
Modelica.Fluid.Examples.HeatingSystem
为例,如何调整模型以使用内联集成? - 我知道Dymola只支持使用Euler积分器(固定步长积分算法)的内联积分法,那么为什么内联积分法只支持固定步长?是否不需要使用可变步长?如果不局限于实时仿真,只想使用inline integration来提高仿真速度,是否可以将inline integration方法与DASSl结合起来?
对于大多数隐式求解器来说似乎卡住了,因为:
- 这是一个合理大小的模型,您将其与 6000 秒的毫秒时间步长集成在一起;这意味着 600 万步(每一步都涉及方程组)。
- 在线集成期间反馈较少(因为提供反馈需要太多时间)。
但隐式 Euler 并没有卡住 - 只需几分钟即可完成。
但是,你可以为这个模型增加隐式欧拉的步长很多,它实际上在 1 秒时工作得很好;然后在不到一秒内完成。
内联显式 Euler 失败,除非您使用更小的步长(与非内联显式 Euler 相同)。
注意:Dymola中的内联求解器都是固定步长求解器,因此设置太短的步长会减慢模拟速度,太长的步长- size 会导致模拟失败,而 dassl, lsodar, radau, esdirk* 都会在积分时调整步长以避免这两个问题。