问题模型

考虑周期边界的线性常系数对流方程的求解 \[ u_t + a u_x = 0 \] 其中风向\(a \neq 0\)为常数,记网格比\(\lambda = \frac{\Delta t}{\Delta x}\)并固定。

显格式

迎风格式(FTFS/FTBS)

\(u_x\)采用单侧离散可以得到

  • FTFS(左偏心格式) \[ v_j^{n+1} = v_j^n - a \lambda(v_{j+1}^n - v_j^n) \]
  • FTBS(右偏心格式) \[ v_j^{n+1} = v_j^n - a \lambda(v_{j}^n - v_{j-1}^n) \]

两种格式都具有\(O(\Delta t + \Delta x)\)的局部截断误差。

根据\(a\)的正负性:

  • \(a>0\):风向从左往右,FTBS是迎风格式,FTFS是逆风格式
  • \(a<0\):风向从右往左,FTFS是迎风格式,FTBS是逆风格式

其中迎风格式是有条件\(L^2\)模稳定的,要求:\(|\lambda a| \le 1\),而逆风格式是无条件\(L^2\)模不稳定的。

迎风格式的数值耗散很强,不会出现数值振荡(因为是单调格式)

FTCS(反面示例)

\(u_x\)直接采用中心差商离散,可以得到FTCS格式

\[ v_j^{n+1} = v_j^n - \frac{a \lambda}2 (v_{j+1}^n - v_{j-1}^n) \]

CTCS格式的局部截断误差为\(O(\Delta t + (\Delta x)^2)\),但这个格式是无条件\(L^2\)模不稳定的!

考虑在FTCS的基础上加上人工黏性项进行修正,可以得到Lax-Friedrich和Lax-Wendroff格式。

Lax-Friedrich格式

Lax-Friedrich格式对FTCS中心点的虚化处理,用空间上算术平均值替换。 \[ v_{j}^{n+1} = \frac{v_{j+1}^n+v_{j-1}^n}{2} - \frac{a \lambda}2 (v_{j+1}^n-v_{j-1}^n) \]

LF格式是有条件相容的格式,必须固定\(\lambda\)为常数才能相容! LF格式的局部截断误差为\(O(\Delta t + \frac{(\Delta x)^2}{\Delta t})\),在固定\(\lambda\)之后,可以达到整体1阶精度。\(L^2\)模稳定性条件:\(|\lambda a|\le 1\)

LF格式具有很强的数值耗散,并且是单调格式,不会产生数值振荡。

Lax-Wendroff格式

Lax-Wendroff格式如下 \[ v_{j}^{n+1} = v_j^n - \frac{a \lambda}2(v_{j+1}^n- v_{j-1}^n) + \frac{a^2 \lambda^2}2 (v_{j+1}^n-2v_{j}^n+v_{j-1}^n) \]

LW格式的局部截断误差为\(O((\Delta t)^2 + (\Delta x)^2)\)\(L^2\)模稳定性条件:\(|\lambda a|\le 1\)

关于LW的数值色散的结论:数值振荡必然产生于波后。

蛙跳格式(CTCS)

对时间和空间都采用中心差分可以得到著名的蛙跳格式(CTCS) \[ v_j^{n+1} = v_j^{n-1} - a \lambda (v_{j+1}^n-v_{j-1}^n) \]

蛙跳格式的局部截断误差为\(O((\Delta t)^2 + (\Delta x)^2)\)\(L^2\)模稳定性条件:\(|\lambda a|< 1\)注意稳定性条件这里取不到1。

蛙跳格式是无数值耗散的,但是具有明显的数值色散现象:数值振荡必然产生于波后。

注:蛙跳格式是一个三层格式,通常需要使用一个双层格式启动。由于启动格式只使用一次,因此要求较低:网格比设置可以不满足稳定性要求,时间上可以具有比三层格式低一阶的相容性。 除了使用双层格式,也可以根据初值进行泰勒展开近似获得第二层的值,从而启动三层格式。

隐格式

盒子格式(Wendroff)

盒子格式,又称为Wendroff格式,是一种隐格式

\[ (1-a\lambda) v_j^{n+1} + (1+a\lambda) v_{j+1}^{n+1} = (1+a\lambda) v_j^n + (1-a\lambda) v_{j+1}^n \]

盒子格式的局部截断误差为\(O((\Delta t)^2 + (\Delta x)^2)\),无条件具有\(L^2\)模稳定性。

盒子格式是无数值耗散的,但是具有明显的数值色散现象:\(|\lambda a|<1\)时,数值振荡出现在波前,\(|\lambda a|>1\)时,数值振荡出现在波后。

补充

我们还可以基于CFL条件来获取稳定性的必要条件,对本文中对称的显格式,CFL条件为\(|\lambda a| \le 1\)