科学仿真 · 从零学起 第 7 / 9 节

第 7 章 · 可压缩流与激波捕捉

一旦流速接近或超过声速,解里会出现激波——一个厚度只有几个分子自由程的间断。差分格式建立在"函数光滑"的假设上,遇到间断就会出乱子。这一节讲 CFD 如何"捕捉"激波:不给激波位置做任何先验假设,让数值解自己把它算出来。

弱解与 Rankine-Hugoniot 条件

经典解要求处处可微,激波处不满足。广义的弱解允许间断,但要求积分意义下守恒。跨过激波,通量必须平衡:

$$\oint \mathbf{F}\cdot d\mathbf{S} = 0$$

由此导出激波两侧状态的关系(Rankine-Hugoniot 关系)。弱解不唯一——膨胀激波这样的"非物理弱解"也满足方程,必须用熵条件排除它:物理激波上熵增,特征线进入激波而非离开。

激波捕捉格式的两个代价

1. 振荡:二阶格式在激波两侧出现 Gibbs 型振铃,压力可能算出负值导致崩溃。 2. 抹平:一阶格式稳定但把激波抹到好几个网格宽,精度差。

这两种代价的拉锯,催生了第 8 章之前的所有格式设计。

两个经典格式

  • Lax 格式:把中心差分的时间点改成时间层平均 $\frac{u_{i+1}^n + u_{i-1}^n}{2}$,无条件线性稳定(CFL 内),但耗散极大。
  • MacCormack 格式:预估步用后差、校正步用前差(下一步反过来),二阶精度,历史上第一个广泛使用的实用激波捕捉格式。一维激波管问题(Sod 问题)是它的标准考卷:算出的密度、速度剖面要与精确黎曼解对比。
原文要点:第 7 章的考卷是 Sod 激波管:初始左侧 $(1, 0, 1)$、右侧 $(0.125, 0, 0.1)$(密度、速度、压力,理想气体 $\gamma=1.4$),解由左行膨胀波、接触间断、右行激波三段组成;MacCormack 格式 100 网格点的结果与精确解对比图显示接触间断被抹平、激波位置正确。人工粘性项 $-\tilde\mu \partial^2 u/\partial x^2$ 的加入方式也在本章。

老师的提醒

  • 激波捕捉法的激波位置由通量守恒决定,不靠网格对齐——这正是它优于激波装配法(需预知激波位置)的原因。
  • 负密度或负压力崩溃几乎总是振荡导致, remedies 是限制器(下一节)或降阶到一阶迎风。

自检

  • 弱解为什么需要熵条件?
  • Sod 问题的三波系结构是什么?
  • Lax 格式为什么比 MacCormack 更耗散?

更深一层:激波是"非线性自我陡化"的终点站

激波的诞生过程值得用特征线图像完整走一遍:初始光滑的速度扰动里,幅值大的部分特征速度 $f'(q)$ 大、跑得快,幅值小的跑得慢——波形前缘被持续压缩,梯度 $\partial q/\partial x$ 越来越大。若没有耗散,数学上梯度会在有限时间 $t_s$ 变为无穷(伯格斯方程 $t_s = -1/\min q_0'$)。物理上分子粘性在极小尺度上接管,形成厚度仅几个分子自由程的薄层——激波。激波是"对流想陡化、粘性想抹平"两股力量达成平衡的产物:无粘理论里它是间断(厚度为零的极限),真实流体里它是内燃机爆震管里的纳米薄层。

数值方法的处境因此尴尬:网格尺度(毫米级)远大于激波物理厚度(微米级),永远无法解析激波内部。激波捕捉格式的哲学是——不解析它,用守恒律正确地"跳过"它:只要离散格式维持离散守恒,激波的位置与速度就自动正确(RH 条件是积分守恒的直接推论),厚度则由数值耗散虚构几格宽的过渡层。这是"用正确的弱解代替不可得的强解"的教科书级示范。

推导细读:为什么守恒形式"自动"给出正确的激波速度

用两个格式解同一个移动激波:守恒形式与非守恒形式(乘积展开版)。光滑区两者完全等价(只差恒等变形),但跨间断时离散乘积法则失效——非守恒格式在间断处产生一份虚假的"源项",激波速度错得离谱(经典教材有算例:速度错 30%)。守恒格式则因为通量差与跳跃严格对应,离散 RH 条件自动成立:

$$s = \frac{F_{j+1/2} - F_{j-1/2}}{Q_{j+1} - Q_{j-1}}\ \text{在激波过渡区内自洽}$$

这就是 Lax-Wendroff 定理的思想:守恒格式的收敛极限必是弱解。它也解释了一条工程铁律:跨激波问题绝对禁止用非守恒(原始变量)形式离散——不是风格问题,是正确性问题。

在真实世界里:激波捕捉的三张成绩单

  • 超音速进气道:多斜面压缩产生的斜激波串决定发动机能否起动——RANS 加激波捕捉格式是标准工具,激波/边界层干扰区的分离预测是难点(需要湍流模型校正)。
  • 爆炸与爆轰:强激波、多材料界面,HLLC 类稳健格式 + 层网格自适应加密(AMR)是主流。
  • 燃气轮机叶栅:槽道激波与附面层干扰造成损失与疲劳——叶轮机械 CFD 的精度分水岭就在激波分辨率。

三张成绩单的共同考点:激波位置(RH 保证)、激波锐度(格式耗散决定)、激波后物理量(振荡控制)。一套激波捕捉格式跑完这三个算例,性能便一目了然。

常见误区与辨析

  • "激波被抹平几格是格式不行":在网格无法解析激波厚度的前提下,几格过渡层是捕捉法的固有代价;真正该比较的是位置与后状态。
  • "熵条件只是理论细节":跨声速稀疏管问题里,无熵修复的 Roe 格式会收敛到一个带"膨胀激波"的解——数值上看着收敛良好、物理上完全错误,工程后果(推力、效率)全部失真。
  • "人工粘性是可耻的":恰当设计的人工耗散是保证收敛与鲁棒性的正当手段;Lax-Wendroff 本质上就是"中心差分 + 显式人工粘性"的封装。

专题深入:熵条件的三种等价表述与它们的数值翻译

熵条件的三种表述值得并排读:Lax 熵条件(特征线进入激波:$f'(q_L) > s > f'(q_R)$)——几何语言;熵不等式(存在凸熵对 $(\eta, F)$ 使 $\eta_t + F_x \le 0$)——分析语言;粘性消失极限(物理解 = 粘性趋于零时的极限)——物理语言。三种表述对标量守恒律等价,对方程组各有强弱——多维系统的熵理论至今不完全。数值翻译:单调格式自动满足(熵条件的离散版)、高阶格式需熵粘性或熵稳定通量(Tadmor 学派)、Roe 格式需熵修复(Harten 修复)。

数学细节展开:Rankine-Hugoniot 的弱形式推导

RH 条件的完整推导只需一步分部积分:在含间断的窄带内对守恒律用弱形式,取带的宽度趋于零的极限,通量的跳跃必须平衡状态的跳跃——$s(q_R - q_L) = f(q_R) - f(q_L)$。RH 不是额外假设,是积分守恒律在间断处的自动推论——这就是为什么"守恒格式的激波位置自动正确":离散守恒 ⟹ 离散 RH ⟹ 激波速度正确。非守恒格式在间断处的虚假源项破坏了这条链——这就是为什么跨激波问题绝对禁止用非守恒形式。

工程案例细节:Sod 激波管的"三波系读图"

Sod 问题的三波系(左行稀疏波、接触间断、右行激波)是每个双曲求解器的"入门考卷"。读图要点:稀疏波是光滑扇形(连续分布)、接触间断只跳密度不跳压力速度、激波跳一切。数值验证的三对:位置对(RH 保证)、波形对(限制器质量)、后状态对(熵条件)。接触间断的数值糊化是任何格式的弱点—— Roe 与 HLLC 的主要差异就在接触间断的分辨率。这张图的三个区域分别是三种物理——学会分区读图,黎曼问题的求解就有了地图。

常见误区与辨析(补充)

  • "激波是物理间断":激波有物理厚度(分子自由程量级),数值间断是网格尺度的"虚构"——但 RH 条件保证位置与状态正确。
  • "熵条件是学术洁癖":膨胀激波的数值事故(负密度崩溃)就是熵条件被违反的直接后果。

例题

无粘伯格斯方程 $q_t + (q^2/2)_x = 0$,左右状态 $q_L = 2$、$q_R = 0$ 形成激波。用 Rankine-Hugoniot 条件求激波速度,并判断这是不是熵解。

解答

激波速度:

$$s = \frac{f(q_L) - f(q_R)}{q_L - q_R} = \frac{q_L^2/2 - q_R^2/2}{q_L - q_R} = \frac{q_L + q_R}{2} = \frac{2 + 0}{2} = 1$$

熵检查:特征速度 $f'(q) = q$,左侧 $q_L = 2 > s = 1 > q_R = 0$——特征线进入激波,满足 Lax 熵条件 ✓,是物理解。

  • 对照:若 $q_L = 0, q_R = 2$(左小右大),同速度 $s=1$ 的间断是膨胀激波(非物理),真解是稀疏波。

本页是《计算流体力学基础》第 7 节的学习笔记:为便于初学,讲解、例题与要点概括均为本站原创整理,公式与章节定位供对照原书使用。

📑 本书目录 经典研读