【发布时间】:2021-02-09 17:58:06
【问题描述】:
我对 Dymola 中解决 DAE 的过程感到困惑。所以我做了一个例子来探索它。
这是示例方案和控制方程的屏幕截图
基于以下变量的定义,我认为求解DAEs的过程是
- 选择状态变量
- 使用积分器根据其导数计算状态变量。
- 计算其他变量。
我使用以下调试设置在 Dymola 中构建模型。
由于我的模型中 DAE 的指数是 3,所以需要做指数约简,使用 Pantelides 算法后,Dymola 会在 DAE 系统中添加更多微分方程。
翻译日志验证了我的推断。
现在,根据方程浏览器,很明显 DAE 系统已被修改为 BLT 形式,我想我可以对当前方程系统使用牛顿法,但 Dymola 会使用 DASSL 算法。显然,DASSL 会再次从头构建结构雅可比矩阵,因此在初始化(使用 Pantelides 算法)和模拟(使用 DASSL 算法)过程中,将使用不同的结构雅可比矩阵。
我的问题是:
使用 Pantelides 算法进行索引缩减和分区后,我可以使用牛顿法求解方程,但为什么 Dymola 必须再次进行分区并使用 DASSL 算法?
另外,我在 Wolfram System Modeler 中比较了初始化和仿真过程中的结构雅可比矩阵,这表明这两个矩阵是不同的。
【问题讨论】:
-
设置
Advance.Define.DAEsolver=true;有什么改变吗? -
@Priyanka。问题不是关于特定示例,我想知道为什么在执行 Pantelides 算法并获得 DAE 系统的可解 BLT 形式之后必须使用 DASSL。我觉得没必要再做分区,用DASSL,直接计算状态变量的导数,做状态变量的积分,更新状态变量,进入下一个瞬间。
标签: differential-equations modelica dymola