冲击波管问题(黎曼求解器)
理论与物理
什么是激波管问题
老师,激波管问题在CFD教科书里总是出现,为什么它这么重要呢?
激波管问题(以Sod问题为代表的一维黎曼问题)是评估可压缩流数值格式精度和稳定性的最基本基准。因为可以得到解析的精确解,所以可以通过与数值解的比较,定量地评估数值扩散、过冲和激波分辨率。
能得到精确解,具体是什么机制呢?
它被表述为一维欧拉方程的初值问题。管子中央有一个隔膜,左侧是高状态 $(\rho_L, u_L, p_L)$,右侧是低状态 $(\rho_R, u_R, p_R)$。打破隔膜后,会产生三种波。
1. 向左传播的膨胀波(稀疏波,rarefaction fan)
2. 中央的接触间断(contact discontinuity)
3. 向右传播的激波(shock wave)
一维欧拉方程的守恒形式是这样的。
总能量为 $E = \frac{p}{\gamma - 1} + \frac{1}{2}\rho u^2$。
Rankine-Hugoniot关系式
激波前后的状态是如何关联的呢?
从跨越激波的守恒定律推导出的就是Rankine-Hugoniot关系式。设激波速度为 $s$,则
这里 $[\cdot]$ 表示激波前后的差值。用压力比表示,则为
$M_s$ 是激波马赫数。将这个与接触间断处的压力、速度连续条件以及膨胀波内的黎曼不变量结合起来,就可以确定四个区域(左未扰动区、膨胀波区、星区、右未扰动区)的全部状态量。
星区(star region)是什么?
是接触间断左右两侧的区域,压力和速度相等($p^ = p_L^ = p_R^$, $u^ = u_L^ = u_R^$),但密度不连续的区域。求这个 $p^*$ 的方程是非线性的,所以需要用Newton-Raphson法迭代求解。
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}$。
为什么HLL的接触间断会模糊,而HLLC却良好呢?
因为HLL只考虑两个波,所以接触间断(第三个波)的信息就丢失了。HLLC的C就是Contact wave的C,通过添加第三个波,就能解析接触间断。Toro的教科书里有详细的推导。
Roe求解器的细节
Roe求解器是通过什么机制来近似的呢?
Roe的想法是在界面上将非线性的欧拉方程线性化。使用Roe平均状态构造雅可比矩阵 $\hat{A}$,
Roe平均的密度和速度定义如下。
Roe求解器有弱点吗?
有时会产生膨胀激波(expansion shock)这种非物理解。这违反了熵条件,需要用Harten-Hyman熵修正来修正。另外,在低马赫数区域还会产生过度数值扩散的问题,为此提出了低马赫数Roe修正(如Rieper fix等)。
MUSCL法与TVD限制函数
我觉得一阶精度数值扩散太大了,高阶精度化是怎么做的呢?
标准做法是用MUSCL(Monotonic Upstream-centered Scheme for Conservation Laws)法实现二阶精度。通过线性重构外推单元界面的左右状态。
这里 $\phi(r)$ 是TVD限制器函数,$r$ 是解的光滑度指标。通过选择限制器,可以在光滑区域自动切换到二阶精度,在不连续附近切换到一阶精度。
激波管实验——使用了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问题的
相关主题
なった
詳しく
報告