腔体流动(盖驱动) — 故障排除指南
更丰富的内容请访问 lid-driven-cavity.html。
常见问题及对策
请告诉我腔体流动计算中常见的故障。
1. 与 Ghia 数据不符
确认要点:
- 网格密度: Re = 1000 时最少应为 $64 \times 64$ 以上。$32 \times 32$ 时会产生 $5\text{--}10\%$ 的误差
- 空间离散化方案: 一阶迎风(First Order Upwind)会因数值扩散而削弱涡。最少应使用二阶精度
- 参考点偏移: Ghia 的数据是在 $129 \times 129$ 网格点上的值。注意与自己网格的插值误差
- Re 数定义: $Re = UL/\nu$ 。确认 $L$ 是否为腔体边长
2. 压力振荡
压力等值线图呈现棋盘纹样。
原因: 共位置布置(速度和压力在同一网格点)且 Rhie-Chow 插值不当时发生。
对策:
- 确认 Rhie-Chow 动量插值已启用(OpenFOAM 中默认启用)
- 使用交错网格(速度和压力在不同网格点)的方法也可用(经典 FDM 代码)
- 设置压力的 under-relaxation 为 $0.2\text{--}0.3$
3. 高Re数收敛困难
Re > 5000 时非线性性强,SIMPLE 法收敛变慢。
对策:
- 伪时间进行法: 用非定常求解器(PIMPLE)运行足够长的时间以收敛至定常解
- 连续法: 以低 Re(如 Re=100)的收敛解作为初始条件,分阶段提高 Re
- 多重网格: 在压力方程上使用 AMG 预处理。OpenFOAM 中使用
GAMG求解器
分阶段提高 Re 是个不错的办法。
这就是所谓的参数连续法。按 Re=100 → 400 → 1000 → 3200 → 5000 → 10000 分阶段提高。每一阶段都以前一阶段的解作为初始条件。
4. 无法求解角涡
Moffatt 涡几何级数递减,均匀网格难以求解。
对策: 沿向角落方向几何级数细化网格。OpenFOAM 的 blockMesh 可用 simpleGrading 设置壁面的 grading ratio 为 $10\text{--}20$。
5. 3D 计算与 2D 结果不同
3D 计算结果与 2D 不同。
Re > 800 左右会出现 3D 不稳定性(Taylor-Goertler 涡),所以 3D 结果与 2D 不同在物理上是正确的。
确认事项:
- 是否在跨度方向使用周期边界(若有端壁则产生端壁效应)
- 跨度方向解析度是否充分(不稳定波长的 $1/10$ 以下网格间距)
- 为了区分 3D 与 2D 的差异是由不稳定性还是数值误差造成,应先在低 Re(Re=100)验证 2D 与 3D 一致
分阶段验证很重要。
正是如此。腔体流动看似"简单问题",实则包含高 Re 数分岔现象、角奇异性、3D 不稳定性等数值流体力学的本质问题。这也是为什么它 40 多年来一直被用作基准问题。
"中心涡位置偏移"是网格问题还是数值扩散
腔体流动中"与 Ghia 论文的涡中心位置不符"时,首先怀疑的是网格分辨率,但还有其他原因。当迎流项离散化方案低精度(一阶上风差分)时,数值扩散会导致涡"相比实际向下方向模糊"。至少应使用二阶及以上精度方案才能保证中心位置准确。另外,在高 Re 数(Re=10000)下,腔体可能不稳定在定常解上,而是振荡解。仅依"残差 10⁻⁶"判断收敛会误认为"振荡中残差下降"为正常终止。应同时检查速度时间序列。
详情
错误