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

7
我对“物理系统建模”这个主题还很陌生。我读了一些基础文献,做了一些Modelica和Simulink/Simscape的教程。我想问你,我是否正确地理解了以下内容:
  • 符号处理是将微分代数方程组(物理模型:DAE)转换为可以由标准求解器(Runge、Kutta、BDF等)求解的微分方程组(ODE)的过程。
  • 也有一些求解器可以直接求解DAE。但Modelica(openModelica、Dymola)和Simscape将系统转化为ODE(为什么与直接使用DAE求解器相比,这些方法更好呢?)
  • “平面化的Modelica代码”就是转换的结果(= ODE)。
非常感谢您的答案。
3个回答

9

Modelica中的符号处理包括:

  • 去除面向对象结构并获得混合DAE(扁平化的Modelica)
  • 进行匹配、指标降低和因果化以获得ODE
  • 执行优化(切割、公共子表达式消除等)
  • 为特定求解器生成代码

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

"扁平化的Modelica代码"是指已移除面向对象结构、连接方程已展开为常规方程的Modelica代码。结果是一个混合DAE。

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


3
因为 Modelica 的编程方式是声明式的(相对于命令式的),因此我们立即得到了大量代数方程式。通过(部分)符号求解,有以下重要优势:
  • 速度。如果不消除代数环路,Modelica 将无法实际使用于任何现实世界问题中,即使在简单情况下也会剩余一些代数方程。这将会导致过慢,并强制你手动在Modelica中进行转换(就像在命令式语言中例如C / C ++或Simulink中)。即使今天,Modelica 应用程序仍然可能比手动转换和优化的解决方案慢。 此外,Modelica 应用程序通常需要实时模拟。

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


1
一个额外的考虑因素是,有不同形式的DAEs,建模往往会导致数值求解复杂的高指数DAEs(*)。 (注意,“高”表示指数大于1,通常为2-但有时甚至更高。)
符号变换可以将高指数DAEs降为半显式指数1 DAEs,然后通过(数值上)解方程组将它们转化为ODEs。
因此,即使工具直接求解DAEs,通常也是解决半显式指数1 DAEs,而不是原始的高指数DAE。
(我知道这个答案晚了。用于符号变换的混合部分更加复杂,仍在研究中。)
有关更多信息,请参见https://en.wikipedia.org/wiki/Differential-algebraic_system_of_equations (*):有一些求解高指数DAEs(特别是指数2)的求解器,但通常它们依赖于模型的特定结构,而找到该结构需要类似于将指数降为1的技术。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接