Kennedy 和 Carpenter 的高阶 IMEX 方法的实现细节

计算科学 龙格库塔 数字
2021-12-24 21:19:52

这个问题是关于实施的四阶 IMEX Runge-Kutta 方法的延续 在我看来,第一个隐含阶段值涉及直接评估,而不是求解某个方程。也就是说,如果 ,并且阶段用,然后dU(t)dt=FSTIFF(t)+FNONSTIFF(t)kSTIFFikNONSTIFFikSTIFF1=FSTIFF

这对于大多数方案来说似乎很常见,因为隐式部分的 Butcher 画面在第一列中只有非零元素。然而,这似乎不是一种隐含的处理方式。我错过了什么?

1个回答

这对于大多数方案来说似乎很常见,因为隐式部分的 Butcher 画面在第一列中只有非零元素。然而,这似乎不是一种隐含的处理方式。我错过了什么?

这称为 ESDIRK 方法或显式第一步单对角隐式 Runge-Kutta 方法。需要明确的第一步来实现 DAE 的高阶条件(称为“stiffly-accurate”)。另一个订单条件是 FSAL 是必需的,因此您会注意到所有方案也都这样做,并且由于它是 ESDIRK,您可以将其翻转为第一阶段,因此实际上不需要明确的评估(取决于您节省的数量)。

dt*f但是你需要小心,因为如果你放宽项而不是输入本身,迭代只会对高刚性方程的数值稳定。这是Shampine 的 TRBDF2论文中讨论的内容。因此,日晷实现是一个很好的资源,但是如果您曾经打开过日晷,您会注意到测试方程中发生了一些奇怪的事情(并且测试方程需要相当大地降低收敛系数)。我的理论是这是由于他们的迭代选择,因为DifferentialEquations.jl 版本没有这个问题。这意味着,当您确实找到它们起作用的方程式时,它们的运行时间比应有的要高...作为参考,如果你想复制一些东西,这里是 3 阶 KenCap 的开源Julia 实现,以不适当的形式就地表格以及其他订单也在该文件中。

编辑

正如另一篇文章中提到的,FSAL 属性仅在画面的隐含部分。因此,当您将其用作 ESDIRK 方法时,它是 FSAL,这是非常精确的订单条件之一。但是用IMEX求解时更新值并不是直接来自隐式tableau,所以隐式部分的第一步确实需要函数求值。