冲击波管问题(黎曼求解器)

分类: 流体解析(CFD) | 综合版 2026-04-06
CAE visualization for shock tube riemann theory - technical simulation diagram
衝撃波管問題(Riemannソルバー) — 理論と厳密解

理论与物理

什么是激波管问题

🧑‍🎓

老师,激波管问题在CFD教科书里总是出现,为什么它这么重要呢?


🎓

激波管问题(以Sod问题为代表的一维黎曼问题)是评估可压缩流数值格式精度和稳定性的最基本基准。因为可以得到解析的精确解,所以可以通过与数值解的比较,定量地评估数值扩散、过冲和激波分辨率。


🧑‍🎓

能得到精确解,具体是什么机制呢?


🎓

它被表述为一维欧拉方程的初值问题。管子中央有一个隔膜,左侧是高状态 $(\rho_L, u_L, p_L)$,右侧是低状态 $(\rho_R, u_R, p_R)$。打破隔膜后,会产生三种波。


1. 向左传播的膨胀波(稀疏波,rarefaction fan)

2. 中央的接触间断(contact discontinuity)

3. 向右传播的激波(shock wave)


🎓

一维欧拉方程的守恒形式是这样的。


$$ \frac{\partial \mathbf{U}}{\partial t} + \frac{\partial \mathbf{F}}{\partial x} = 0 $$

$$ \mathbf{U} = \begin{pmatrix} \rho \\ \rho u \\ E \end{pmatrix}, \quad \mathbf{F} = \begin{pmatrix} \rho u \\ \rho u^2 + p \\ u(E+p) \end{pmatrix} $$

总能量为 $E = \frac{p}{\gamma - 1} + \frac{1}{2}\rho u^2$。


Rankine-Hugoniot关系式

🧑‍🎓

激波前后的状态是如何关联的呢?


🎓

从跨越激波的守恒定律推导出的就是Rankine-Hugoniot关系式。设激波速度为 $s$,则


$$ s[\rho] = [\rho u] $$
$$ s[\rho u] = [\rho u^2 + p] $$
$$ s[E] = [u(E+p)] $$

这里 $[\cdot]$ 表示激波前后的差值。用压力比表示,则为


$$ \frac{p_2}{p_1} = \frac{2\gamma M_s^2 - (\gamma - 1)}{\gamma + 1} $$

$M_s$ 是激波马赫数。将这个与接触间断处的压力、速度连续条件以及膨胀波内的黎曼不变量结合起来,就可以确定四个区域(左未扰动区、膨胀波区、星区、右未扰动区)的全部状态量。


🧑‍🎓

星区(star region)是什么?


🎓

是接触间断左右两侧的区域,压力和速度相等($p^ = p_L^ = p_R^$, $u^ = u_L^ = u_R^$),但密度不连续的区域。求这个 $p^*$ 的方程是非线性的,所以需要用Newton-Raphson法迭代求解。

Coffee Break 闲话

Godunov法诞生的背景——1959年苏联的论文改变了世界

1959年,苏联数学家谢尔盖·戈杜诺夫发表了一篇论文,提出了一个革命性的想法:“利用局部黎曼问题的解来离散化守恒定律”。当今CFD中使用的“有限体积法+黎曼求解器”的基础就始于此。有趣的是,这篇论文写于冷战时期,一段时间内并未被西方世界所知。直到1970年代以后被翻译和介绍,其重要性才被广泛认识。理解了激波管问题的精确解,就能看出戈杜诺夫想法的天才之处——“用隔膜破裂瞬间的解来计算下一步”,这种简洁性就是一切。

各项的物理意义
  • 时间项 $\partial(\rho\phi)/\partial t$:想象一下打开水龙头的瞬间。一开始水会不稳定地哗啦哗啦流出,过一会儿就变成稳定的水流了,对吧?描述这个“变化过程中”的就是时间项。心脏跳动导致血流脉动,发动机阀门每次开闭导致流动变化,这些都是非定常现象。那么定常分析是什么?就是只看“经过足够时间流动稳定之后”——也就是将此项设为零。计算成本大幅降低,因此先用定常求解是CFD的基本策略。
  • 对流项 $\nabla \cdot (\rho \mathbf{u} \phi)$:把落叶扔进河里会怎么样?会被水流带着流向下游,对吧?这就是“对流”——流体运动搬运物质的效果。暖风的暖气能到达房间的另一端,也是因为空气这个“搬运工”通过对流输送热量。这里有趣的是——这项包含“速度×速度”,因此是非线性的。也就是说,流速变快时此项会急剧增强,变得难以控制。这就是湍流的根本原因。常见的误解:“对流和传导差不多”→ 完全不一样!对流是流动搬运,传导是分子传递。效率有天壤之别。
  • 扩散项 $\nabla \cdot (\Gamma \nabla \phi)$:有过在咖啡里倒入牛奶后放置的经历吗?即使不搅拌,过一会儿也会自然混合。那就是分子扩散。那么下一个问题——蜂蜜和水,哪个更容易流动?当然是水。因为蜂蜜的粘度($\mu$)高,所以不易流动。粘度越大,扩散项越强,流体的运动就变得“粘稠”。雷诺数小的流动(缓慢、粘稠)中扩散占主导。相反,Re数大的流动中对流占压倒性优势,扩散则成为配角。
  • 压力项 $-\nabla p$:注射器的活塞一推,液体就会从针头有力地喷出,对吧?为什么呢?因为活塞侧是高压,针头侧是低压——这个压力差成为推动流体的力。大坝放水也是同样的原理。天气图上等压线密集的地方呢?没错,会刮强风。“有压力差的地方就会产生流动”——这就是纳维-斯托克斯方程压力项的物理意义。这里的误解点:CFD中的“压力”通常指表压而非绝对压力。切换到可压缩分析时结果突然出错,原因可能就是混淆了绝对压力/表压。
  • 源项 $S_\phi$:被加热的空气会上升——为什么呢?因为比周围空气轻(密度低),被浮力推上去了。这个浮力作为源项添加到方程中。此外,燃气灶的火焰产生化学反应热,工厂的电磁泵对金属熔液施加洛伦兹力……这些都是“从外部向流体注入能量或力”的作用,都用源项表示。忘记源项会怎样?自然对流分析中忘记加入浮力,流体就完全不动——冬天房间里开了暖气,暖空气却不上浮,得到这种物理上不可能的结果。
假设条件与适用范围
  • 连续介质假设:克努森数 Kn < 0.01(分子平均自由程 ≪ 特征长度)时成立
  • 牛顿流体假设:剪切应力与应变速率呈线性关系(非牛顿流体需要粘度模型)
  • 不可压缩假设(Ma < 0.3 的情况):将密度视为常数。马赫数0.3以上需考虑可压缩性效应
  • Boussinesq近似(自然对流):仅在浮力项中考虑密度变化,其他项使用恒定密度
  • 不适用的情形:稀薄气体(Kn > 0.1)、超音速/高超音速流动(需要激波捕捉)、自由表面流动(需要VOF/Level Set等方法)
量纲分析与单位制
变量SI单位注意事项·换算备忘
速度 $u$m/s入口条件中从体积流量换算时,注意截面积单位
压力 $p$Pa区分表压和绝对压力。可压缩分析中使用绝对压力
密度 $\rho$kg/m³空气: 约1.225 kg/m³@20°C,水: 约998 kg/m³@20°C
粘性系数 $\mu$Pa·s注意与运动粘性系数 $\nu = \mu/\rho$ [m²/s] 混淆
雷诺数 $Re$无量纲$Re = \rho u L / \mu$。层流/湍流转换的判定指标
CFL数无量纲$CFL = u \Delta t / \Delta x$。直接关系到时间步长的稳定性

数值解法与实现

Godunov法与黎曼求解器

🧑‍🎓

请再讲一下黎曼求解器在CFD中扮演什么角色。


🎓

Godunov的想法是,通过求解局部黎曼问题的解来求每个单元界面上的通量。在单元 $i$ 和 $i+1$ 的边界上,求解由左状态 $\mathbf{U}_i$ 和右状态 $\mathbf{U}_{i+1}$ 构成的黎曼问题,确定界面通量 $\mathbf{F}_{i+1/2}$。


🎓

精确黎曼求解器每次都需要牛顿法迭代,计算成本高。因此开发了许多实用的近似黎曼求解器。我们来比较一下代表性的几种。


求解器原理激波接触间断膨胀波成本
Exact(Godunov)精确解精确精确精确
Roe近似雅可比矩阵的线性化良好良好良好
HLL2波近似(最快·最慢波)良好扩散大良好
HLLC3波近似(添加接触波)良好良好良好低〜中
AUSM+压力-对流分离良好稍有扩散良好
Rusanov(LLF)最大特征值近似稳定扩散大稳定最低
🧑‍🎓

为什么HLL的接触间断会模糊,而HLLC却良好呢?


🎓

因为HLL只考虑两个波,所以接触间断(第三个波)的信息就丢失了。HLLC的C就是Contact wave的C,通过添加第三个波,就能解析接触间断。Toro的教科书里有详细的推导。


Roe求解器的细节

🧑‍🎓

Roe求解器是通过什么机制来近似的呢?


🎓

Roe的想法是在界面上将非线性的欧拉方程线性化。使用Roe平均状态构造雅可比矩阵 $\hat{A}$,


$$ \mathbf{F}_{i+1/2} = \frac{1}{2}(\mathbf{F}_L + \mathbf{F}_R) - \frac{1}{2}|\hat{A}|(\mathbf{U}_R - \mathbf{U}_L) $$

Roe平均的密度和速度定义如下。


$$ \hat{\rho} = \sqrt{\rho_L \rho_R}, \quad \hat{u} = \frac{\sqrt{\rho_L} u_L + \sqrt{\rho_R} u_R}{\sqrt{\rho_L} + \sqrt{\rho_R}} $$

🧑‍🎓

Roe求解器有弱点吗?


🎓

有时会产生膨胀激波(expansion shock)这种非物理解。这违反了熵条件,需要用Harten-Hyman熵修正来修正。另外,在低马赫数区域还会产生过度数值扩散的问题,为此提出了低马赫数Roe修正(如Rieper fix等)。


MUSCL法与TVD限制函数

🧑‍🎓

我觉得一阶精度数值扩散太大了,高阶精度化是怎么做的呢?


🎓

标准做法是用MUSCL(Monotonic Upstream-centered Scheme for Conservation Laws)法实现二阶精度。通过线性重构外推单元界面的左右状态。


$$ \mathbf{U}_{i+1/2}^L = \mathbf{U}_i + \frac{1}{2}\phi(r)(\mathbf{U}_i - \mathbf{U}_{i-1}) $$

这里 $\phi(r)$ 是TVD限制器函数,$r$ 是解的光滑度指标。通过选择限制器,可以在光滑区域自动切换到二阶精度,在不连续附近切换到一阶精度。

Coffee Break 闲话

激波管实验——使用了100多年的“教科书王者”

激波管(shock tube)是1899年法国人Paul Vernier构思的装置,用隔板分隔高压气体和低压气体,通过打破隔板来产生激波。装置本身非常简单,却能同时出现激波、膨胀波、接触间断这可压缩流体力学三大要素,因此至今仍被用于教育、验证和研究。特别是“Sod问题”(1978年)作为可压缩CFD的标准基准非常有名,开发新的黎曼求解器后必定要进行Sod测试。通不过这个测试的格式是无法见人的。

迎风格式(Upwind)

一阶迎风:数值扩散大但稳定。二阶迎风:精度提高但有振荡风险。高雷诺数流动中必备。

中心差分(Central Differencing)

二阶精度,但Pe数 > 2时会产生数值振荡。适用于低雷诺数的扩散主导流动。

TVD格式(MUSCL、QUICK等)

通过限制器函数抑制数值振荡同时保持高精度。对捕捉激波或陡峭梯度有效。

有限体积法 vs 有限元法

FVM:自然满足守恒定律。CFD的主流。FEM:对复杂形状、多物理场有利。SPH等无网格法也在发展中。

CFL条件(库朗数)

显式法:CFL ≤ 1 是稳定条件。隐式法:CFL > 1 也稳定,但影响精度和迭代次数。LES:推荐 CFL ≈ 1。物理意义:一个时间步内信息前进不超过一个单元。

残差监控

连续性方程、动量、能量的各项残差下降3~4个数量级可判断为收敛。质量守恒的残差尤其重要。

松弛因子

压力:0.2~0.3,速度:0.5~0.7 是一般的初始值。发散时降低松弛因子。收敛后可提高以加速。

非定常计算的内部迭代

在每个时间步内迭代直到收敛到定常解。内部迭代次数:5~20次为参考值。残差在时间步之间波动时需重新审视时间步长。

SIMPLE法的比喻

SIMPLE法是“交替调整”的方法。先假设求出速度(预测步),然后根据该速度修正压力以满足质量守恒(修正步),再用修正后的压力修正速度——重复这种“投接球”过程来逼近正确答案。类似于两人调整架子水平的作业:一人调整高度,另一人调整平衡,如此反复。

迎风格式的比喻

迎风格式是“站在河流中重视上游信息”的方法。站在河里的人看下游也弄不清水的来源——这反映了“上游信息决定下游”的物理规律。精度为一阶,但能正确捕捉流动方向,因此稳定性高。

实践指南

Sod问题的

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
关于作者