使用非线性源项改进隐式离散 PDE 的时间积分

计算科学 pde 离散化 时间积分
2021-11-25 01:38:53

这可能是一个幼稚的问题,但是当对具有源项的 PDE 应用隐式离散化时,是否应该及时对源进行平均?例如,如果我们采用具有非线性源项的扩散方程,

ut=uxx+s(x,t,u)

我们可以将以下中心差分隐式方案应用于微分项,

ujn+1ujnΔt=[(1θ)(uj12uj+uj+1)+θ(uj12uj+uj+1)]+s(x,t,u)

但应该如何s(x,t,u)被处理?我们是否应该简单地取值n时间点(这是我过去一直在做的),

s(x,t)=sjn

或随时间平均,

s(x,t)=(1θ)sjn+1+θsjn

我不确定是否有可能以这种方式实现时间平均值,因为一般来说,n+1时间点是未知数

这是一个愚蠢的问题吗?或者是否有某种方法可以通过及时取平均值来改善上述方程的时间积分?

2个回答

如果右手边是独立的u那么通常会使用平均形式

(1θ)s(x,tn+1)+θs(x,tn).
正如您所指出的,在非线性情况下,您不能轻易做到这一点,但您至少可以使用某种推断,例如近似
(1θ)s(x,tn+1,un+1)+θs(x,tn,un)(1θ)s(x,tn+1,un+Δtunun1Δt)+θs(x,tn,un).
您会在 ODE 文献中找到更多类似的技巧——阅读此类 ODE 的半隐式方法x˙(t)=Ax(t)+f(x(t),t).

最稳健的方法是隐式求解,否则对于源函数中的刚性非线性s(u)您将不得不使用非常小的时间步来保持数值稳定性。

考虑

ut=s(t,u)

然后

un+1=un+dts(t+dt,un+1)

这里可以使用 RHS 中 n 和 n+1 之间的平均值来增加阶数,或者使用更多的时间点来获得更高的时间阶数。但为了简单起见,让我们假设一阶隐式时间步长。

现在方程可以转换为

F(un+1)=0

可以用牛顿法求解,而对于离散系统,用克雷洛夫子空间进行线性求解是最广为人知的方法,所以这就是牛顿-克雷洛夫法。