一致的术语:建模,DAE,ODE

时间:2016-05-20 19:14:50

标签: modeling symbolic-math modelica simscape

我不熟悉主题"物理系统建模"。我阅读了一些基础文献,并在Modelica和Simulink / Simscape中做了一些教程。如果我正确理解以下内容,我想问你:

  • 符号操作是将方程的微分代数系统(物理模型:DAE)转换为微分方程(ODE)系统的过程,可以通过标准求解器(Runge,Kutta,BDF,......)求解
  • 也有解决方案可以直接解决DAE问题。但Modelica(openModelica,Dymola)和Simscape将系统转换为ODE(为什么这种方法与直接DAE求解器相比更好?)
  • A"平面Modelica代码"是转换的结果(= ODE)。

非常感谢您的回答。

3 个答案:

答案 0 :(得分:7)

Modelica的符号处理包括:

  • 移除面向对象的结构并获得混合DAE(平面Modelica)
  • 执行匹配,索引缩减,临时化以获得ODE
  • 执行优化(撕裂,常见的子表达式消除等)
  • 为特定解算器生成代码

OpenModelica也可以在DAE模式下解决系统而不将其转换为ODE,我猜其他Modelica工具也可以这样做。

A"平面Modelica代码"是Modelica代码,其中对象方向被移除,连接方程被扩展为正规方程。结果是混合DAE。

有关所有这些的更多信息,请参阅Modelica Spec 3.3(例如附录C): https://modelica.org/documents/ModelicaSpec33Revision1.pdf

答案 1 :(得分:1)

所以我认为你对术语的理解也很好。 由于在modelica中编程的声明方式(与命令式相反),我们立即获得了非常多的代数方程。首先,解决这些(部分)象征性地具有这些重要优势:

  • 速度。在不消除代数循环的情况下,modelica实际上不能用于任何现实世界的问题,即使这样,只有在简单的情况下才能保留代数方程。它会太慢并且会迫使你自己在modelica中手动进行转换(例如在命令式语言中,例如在C / C ++或Simulink中)。即使在今天,modelica仍然比手动转换和优化的解决方案慢。 此外,modelica应用程序通常需要实时模拟。

  • 正确性。符号转换基​​于证明,而modelica应用程序通常属于安全关键或网络物理系统领域。

答案 2 :(得分:1)

另外一个考虑因素是存在不同形式的 DAE,并且建模通常会导致高指数 DAE,这些 DAE 在数值上求解很复杂 (*)。 (注意“高”表示指数大于 1,通常为 2 - 但有时甚至更高。)

符号变换可以将高指数 DAE 简化为半显式指数 1 DAE,然后通过(数值上)求解方程组,将它们转化为 ODE。

因此,即使工具直接解决 DAE,通常也解决的是半显式索引 1 DAE,而不是原始的高索引 DAE。

(我知道这个答案来晚了。符号转换的混合部分更复杂,仍在研究中。)

有关详细信息,请参阅 https://en.wikipedia.org/wiki/Differential-algebraic_system_of_equations

(*):对于高指数 DAE(特别是指数 2)有一些求解器,但通常它们依赖于模型的特定结构,并且找到该结构需要与将指数减少到 1 类似的技术。