【发布时间】:2016-08-15 13:25:04
【问题描述】:
我正在尝试找出 Dymola 解决 Modelica 代码所需的步骤。通过阅读一些参考论文和书籍,我了解到 Dymola:
- 将 Modelica 代码转换为混合 DAE(展平)。
- 操纵 DAE 以将其转换为 ODE 形式(索引缩减和其他技术)。
- 使用 DASSL 算法。
我的问题是:为什么 Dymola 需要使用 DASSL 来解决 ODE?使用 BDF 或 Runge-Kutta 等通用 ODE 求解器还不够吗?
提前感谢您的关注。 万事如意,
亚历山德罗
【问题讨论】:
-
简答:效率更高。 Francois Cellier 在他的著作《Continuous System Simulation》第 8.4 章(DASSL)中给出了详细的答案
-
您好 Lukas,感谢您的评论。我实际上读过那一章,但我的疑问是:DASSL 是一个 DAE 求解器,它如何求解 ODE?如果你告诉我 DASSL 也可以解决 ODE,那么一切都是有道理的,是合乎逻辑的。
-
ODE 是 DAE 的子集;基本上,ODE 是 der(x)=f(x),而 DAE 是 g(der(x),x)=0。因此,通过设置 g(der(x),x)=der(x)-f(x),ODE 被转换为 DAE - 因此 Dassl 可以解决它。