极超音速流 — 故障排除指南
更加充实的内容请见 hypersonic-flow.html。
常见故障和对策
极超音速CFD计算效果不理想时,原因是什么?
让我们整理极超音速特有的故障模式。
1. 卡邦克尔不稳定
听说过卡邦克尔现象。这是弓形冲击波崩溃的现象吧?
使用Roe方法计算钝头物体时,驻点附近的弓形冲击波会出现非物理学的锯齿形现象。这在网格对称线上尤其容易发生。
对策:
- 切换到AUSM+或HLLC方案(比Roe更具耐受性)
- 使用Roe时应用H-correction(熵修正)
- 在垂直于冲击波的网格方向添加小的人工粘性
- 避免网格对称线(引入微小的非对称性)
2. 负温度、负密度的发生
温度或密度变成负数,这是什么情况?
在强膨胀波或冲击波干涉附近,从守恒量转换到原始变量时可能出现非物理值。特别是在有化学反应的情况下,质量分数可能小于0或大于1。
对策:
- 降低CFL数(从0.1以下开始)
- 先用一阶精度生成初始解,收敛后切换到二阶精度
- 添加质量分数裁剪处理( $\max(0, \min(1, Y_s))$ )
- 使用正性保护限制器
3. 壁面加热率的网格依赖性
改变网格后加热率变化很大…
这是极超音速CFD中最常见的问题。壁面加热率与温度梯度 $\partial T / \partial n |_{wall}$ 成正比,因此强烈依赖于壁面附近的网格分辨率。
对策:
- 在壁面法向方向配置至少50-80层网格
- 第一层高度满足 $y^+ < 1$(极超音速边界层很薄,可能达到几微米量级)
- 用3个或以上水平确认网格收敛性(推荐Richardson外推)
- 在冲击波和壁面之间均匀分布网格
4. 化学反应的发散
添加化学反应后计算发散了,怎样处理?
化学反应源项的刚性(stiffness)通常是发散的原因。
对策:
- 将流体和化学通过算子分裂分离,化学种使用刚性ODE求解器(如CVODE)
- 使用点隐式方法隐式处理源项的雅可比矩阵
- 先用冻结流(frozen flow)收敛,然后逐步启用反应
- 设置温度下限值(100K以下时反应速率式可能破裂)
5. 冲击波驻点距离的不匹配
冲击波的位置与实验不符,怎样处理?
冲击波驻点距离对气体模型很敏感。理想气体模型的驻点距离偏大,化学平衡模型偏小。非平衡模型通常更接近真实。
检查清单:
- 气体模型(理想/平衡/非平衡)是否合适
- 自由流条件(M、T、p)是否正确
- 反应速率常数数据源是否合适(Park 1990 vs. Gupta 1990等)
- 网格是否充分解析冲击波(冲击波宽度至少5个单元)
极超音速中物理模型的选择直接影响结果,所以故障排除也很重要回到物理基础。
正确。调试不仅要考虑数值方法,还要考虑物理判断,如"在这个条件下非平衡效应真的重要吗"、"壁面催化条件是否合理"。这既是极超音速CFD的难点,也是其有趣之处。
极超音速计算中的"carbuncle现象"——冲击波变成数值怪物
极超音速CFD中的一个臭名昭著的故障是"carbuncle(卡邦克尔)现象"。在强弓形冲击波(弓震)前缘附近,现实中不存在的数值突起会出现,这种现象在Roe方案或Godunov方案的计算中很常见。名字的来源是"carbuncle(疖子)"——外观和恐怖程度相符的错误。对策包括切换到具有适度数值粘性的HLLE系方案,或使用冲击波检测器进行局部方案切换。对于编写或使用极超音速代码的人来说,这是必须首先铭记的症状之一。
相关主题
细节
错误