Burgers方程的数值Lax-Wendroff格式收敛阶数

计算科学 有限差分 有限体积 收敛 数字 保护
2021-11-30 08:04:04

有人建议我把这个问题移到这里。

问题如下。

问题陈述

是否有可能实现Lax-Wendroff (LxW) 方案的二阶收敛 (OOC),用于求解具有不连续初始数据的无粘性 Burgers方程?

如果不是,那么如何在准线性问题中实现(并用数字证明)二阶(LxW 方案)的 OOC?

Wolfram Mathematica 代码

(*Initial data*)
 u0[x_] := 1 - UnitStep[x - 0.1];
Flux[u_] := 0.5 u^2;
u = u0[xTbl];
dt = Abs[\[Sigma]] /Abs[Max[u]] dx;
un = 0*u;
F = Flux[u];

(*LW*)
t = 0;
While[t < tFin,
(*Main loop*)
un[[2 ;; nx - 1]] = u[[2 ;; nx - 1]] -
  0.50 \[Sigma] (F[[3 ;; nx]] - F[[1 ;; nx - 2]]) +
  0.25 \[Sigma]^2 ((u[[3 ;; nx]] + u[[2 ;; nx - 1]]) (F[[3 ;; nx]] - 
     F[[2 ;; nx - 1]]) - (u[[2 ;; nx - 1]] + 
     u[[1 ;; nx - 2]]) (F[[2 ;; nx - 1]] - F[[1 ;; nx - 2]]));
(*BC*)
un[[1]] = u[[1]];
un[[nx]] = u[[nx]];
(*Update*)
u = un;
F = Flux[u];
nstep = nstep + 1;
t = t + dt
];

输出

nx = {50, 100, 200, 400, 800};
L1err = {0.0217352, 0.0107321, 0.00533915, 0.00207726, 0.00132978};
p = {1.0181, 1.00725, 1.36192, 0.643502}

平均OOC等于

1.00769
1个回答

可能不是。如果您有无粘性的 Burgers 方程,那么您的不连续初始条件应该(某处)保持不连续,因为没有粘度。如果解中存在不连续性,则存在 Godunov 的阶障碍定理,它将您的收敛阶数限制为 1...

小心使用足够精细的网格来证明任何收敛顺序,即,当您以对数对数比例绘制 nx-Lerror 图时,您应该得到直线(粗离散化除外)。我不确定,但如果 L1 范数有问题,请尝试 L2 或 Linfinity 范数......