在 Dymola 中使用和不使用内联集成有什么区别?
What's the difference between using and not using inline integration in Dymola?
我试图弄清楚在 Dymola 中模拟期间使用内联集成和不使用内联集成之间的区别。
下面是DASSL算法的基本流程:
我发现以下关于内联集成技术的总结:
To summarise, inline integration harnesses the symbolic manipulation of Dymola to insert discretization expressions, representing the numerical integration algorithms, into the differential-algebraic equation (DAE) model to be solved. In effect, the inserted discretization expressions (representing the numerical integration algorithms) are solved “inline” with the model, rising to the name of the technique. The upshot is a DAE which is easier to solve numerically, thus leading to a shorter solve time.
- 至于
insert discretization expression into DAE model to be solved
的部分,我觉得DASSL也是这么做的,如上图所示,DASSL会将y=h*der(y)+old(y)
的表达式插入到原来的DAE中。
- 但是
inserted discretization expressions are solved inline with the model
是什么意思?在DASSL算法中,我只是用牛顿法求解f(y-old(y)/h,y,t)=0
的非线性方程,看起来很自然。那么如果我使用内联积分方式会怎么样呢?
Dymola 目前没有内联 DASSL。
对于非内联显式 Euler,C 代码包含(好吧,具有不同的变量名):
der(y)=f(y)
(并且有一些计算 y(t+h)=y(t)+h*der(y)
的集成代码)。
对于内联显式 Euler,C 代码包含:
y(t+h)=y(t)+h*f(y)
主要好处是:
- 对于可以单独求解每个方程组的隐式方法。
- 它可以在其他本身不支持集成方法的工具中使用(作为 FMU/S-function)。
我试图弄清楚在 Dymola 中模拟期间使用内联集成和不使用内联集成之间的区别。
下面是DASSL算法的基本流程:
我发现以下关于内联集成技术的总结:
To summarise, inline integration harnesses the symbolic manipulation of Dymola to insert discretization expressions, representing the numerical integration algorithms, into the differential-algebraic equation (DAE) model to be solved. In effect, the inserted discretization expressions (representing the numerical integration algorithms) are solved “inline” with the model, rising to the name of the technique. The upshot is a DAE which is easier to solve numerically, thus leading to a shorter solve time.
- 至于
insert discretization expression into DAE model to be solved
的部分,我觉得DASSL也是这么做的,如上图所示,DASSL会将y=h*der(y)+old(y)
的表达式插入到原来的DAE中。 - 但是
inserted discretization expressions are solved inline with the model
是什么意思?在DASSL算法中,我只是用牛顿法求解f(y-old(y)/h,y,t)=0
的非线性方程,看起来很自然。那么如果我使用内联积分方式会怎么样呢?
Dymola 目前没有内联 DASSL。 对于非内联显式 Euler,C 代码包含(好吧,具有不同的变量名):
der(y)=f(y)
(并且有一些计算 y(t+h)=y(t)+h*der(y)
的集成代码)。
对于内联显式 Euler,C 代码包含:
y(t+h)=y(t)+h*f(y)
主要好处是:
- 对于可以单独求解每个方程组的隐式方法。
- 它可以在其他本身不支持集成方法的工具中使用(作为 FMU/S-function)。