科学仿真

高阶格式:MUSCL 与 limiters 如何抑制振荡

导读:二阶以上的激波捕捉格式面临悖论:高阶区域要低耗散,间断处要无振荡。limiter 是这道题的工业解。

MUSCL:让重构线性化

把分段常数重构升级为分段线性:界面两侧的左/右状态由相邻单元值外推 $u_{i+1/2}^- = u_i + \frac{1}{2}\phi(r_i)(u_i - u_{i-1})$,其中 $r$ 是相邻梯度比。

limiter 函数 $\phi(r)$ 决定外推的「克制程度」:minmod 最保守、superbee 最激进、van Leer 居中。选择影响激波陡度与光滑区精度的平衡。

TVD 与可容许区间

TVD(总变差不增)保证无新振荡。Sweby 图给出 limiter 的可容许区间:$\phi$ 必须落在由 $\phi=1$、$\phi=r$ 围成的区域内。二阶精度与 TVD 不能兼得(极值点处必退化为一阶)——这不是缺陷,是定理。

更高阶(ENO/WENO)放弃 TVD 改用「自适应选择最光滑模板」,在光滑区拿到五阶、间断附近保持无振荡。

实践参数

时间积分用 SSP-RK(保 TVD 的 Runge-Kutta);CFL 一般取 0.4-0.6。调试时先算 Sod 算例,再看双马赫反射这类强间断考题。

常见误区

  • 在极值点附近强推二阶精度,产生非物理过冲。
  • limiter 太激进(superbee)导致光滑解呈台阶状。

吃透自检

  • 能实现 minmod/van Leer limiter 的 MUSCL 格式
  • 能画出 Sweby 可容许区域并解释
  • 能说明 TVD 与高阶精度的相容性结论

← 科学仿真 书目精读列表 经典研读