导读:Godunov 格式把解看成常数段的拼接,每一步解无数个局部 Riemann 问题。手写一遍 Sod 激波管,是理解现代激波捕捉格式的最短路径。
Riemann 问题:最小的考卷
初值为左右两个常状态的守恒律 $u_t + f(u)_x = 0,\ u(x,0) = u_L/u_R$,其自相似解 $u(x/t)$ 是一切格式的积木。线性情形解是间断的加权平均;非线性欧拉方程则由稀疏波/接触间断/激波三种波构成。
精确 Riemann 求解器要迭代求界面压力;近似求解器(Roe、HLL)用线性化或区间估计换速度——精度与稳健性的永恒交易。
Godunov 方法三步
重构(分段常数)→ 演化(界面 Riemann 解的平均通量)→ 平均。一阶 Godunov 耗散大,但它是所有高阶方法的骨架:MUSCL 只是把「重构」升级为线性重构 + limiter。
实现清单:守恒形式更新 $u_i^{n+1} = u_i^n - \frac{\Delta t}{\Delta x}(\hat f_{i+1/2} - \hat f_{i-1/2})$,通量由界面 Riemann 解给出。
Sod 算例的验收标准
密度/速度/压力三个剖面:激波陡峭无振荡、接触间断允许适度模糊、稀疏波内单调。与精确解逐点对比 L1 误差,网格加密一阶收敛。
常见误区
- 非守恒形式差分 + 精确 Riemann 解:激波速度仍然错误。
- CFL 取 1.0 附近的极端值,忽略一维多波系统的实际稳定界(约 0.4-0.9,取决于谱半径估计)。
吃透自检
- 能写出 Sod 问题的完整初值与精确解结构
- 能实现一阶 Godunov 并给出收敛阶
- 能解释 Roe 求解器需要熵修正的原因