如何在 STRANG 拆分中应用 BDF2

计算科学 稳定 时间积分 运算符拆分
2021-12-10 05:59:25

我有一个 3D 扩散方程,我想使用时间分裂 (2D+1D) 来求解。假使,假设A是二维离散扩散算子和B是一维离散扩散算子。

我想使用 STRANG 拆分来确保全局二阶精度:

ft=12Afft=Bfft=12Af
对于每次积分,我想应用 BDF2 隐式公式来确保稳定性和局部二阶精度:
ftfn+143fn+13fn123Δt
我的问题是:对于时间迭代nΔt, 是什么fn1分裂的每个阶段?是不是状态f在上一次迭代或上一个分裂阶段?

更确切地说,我是否遵循这个算法?

f0,f1(Δt2A)f21f1,f21(ΔtB)f22f21,f22(Δt2A)f2
对于接下来的迭代,我们初始化f0=f22f1=f2.

还是这个?

f0,f1(Δt2A)f21f0,f21(ΔtB)f22f0,f22(Δt2A)f2
对于接下来的迭代,我们初始化f0=f1f1=f2.

是否有另一种方法来确保无条件稳定的时间积分分裂与全局和局部二阶?

1个回答

如果你设置fn1对于 BDF 集成的先前结果(即在拆分过程中集成的其他项没有任何影响,在对 BDF 方法的连续调用之间),我认为其他项的中间拆分集成将充当不连续性或,更糟糕的是,您只会“忘记”在两次调用 BDF 方法之间完成的集成。最好的办法是使用一步法重新启动 BDF 方法,这可能会使其效率大大降低...... Hundsdorfer 和 Verwer 的文章“关于平流反应方程的分裂误差的说明”也处理了这个问题和表明它可以导致O(1)全局错误...

(如果我弄错了,请在评论中解释;))