数值方法基础:有限体积法、网格与求解器
各位同学,欢迎来到第三章。说实话,这一章是整个CFD仿真最核心的“硬骨头”。你可能会觉得公式多、概念抽象,但请相信我——搞懂了这一章,你才算真正入了CFD的门。我自己刚入行时,也是被这些概念绕得晕头转向,后来在项目中摔过几次跟头,才慢慢摸清了门道。
有限体积法:CFD的“记账本”
先聊聊有限体积法。你想想看,我们做流体仿真,本质上是在解一堆偏微分方程。但计算机不认识连续的函数,它只认离散的数字。怎么办?
有限体积法的思路很朴素:把整个计算域切成很多个小块(控制体),然后对每个小块做“收支平衡”计算。说白了,就是给每个小格子记账——流进来的质量、动量、能量,减去流出去的,等于这个格子里的变化量。
我个人习惯把有限体积法理解成“守恒的守护神”。为什么这么说?因为它在每个控制体上都严格满足守恒定律。我在项目中遇到过不少用有限差分法算崩的案例,换成有限体积法就稳了,原因就在这里。
核心思想: 对每个控制体应用积分形式的守恒方程,将体积分转化为面积分,再通过数值积分近似。
举个简单的例子,一维稳态对流扩散方程:
∂(ρuφ)/∂x = ∂/∂x(Γ ∂φ/∂x) + S
对控制体P积分后,变成:
(ρuφ)_e * A_e - (ρuφ)_w * A_w = (Γ ∂φ/∂x)_e * A_e - (Γ ∂φ/∂x)_w * A_w + S * ΔV
你看,左边是对流项,右边是扩散项和源项。每个面通量都需要通过相邻节点的值插值得到。这就是离散化的本质——用代数方程代替微分方程。
我的经验: 刚开始学有限体积法时,别急着看复杂的三维格式。先把一维稳态问题手算一遍,你会对“通量平衡”有刻骨铭心的理解。
网格:CFD的“骨架”
网格是什么?说白了,就是你把计算域切成的那些小格子。网格质量直接决定仿真成败——这不是夸张,我见过太多因为网格没画好导致结果完全错误的案例。
结构网格 vs 非结构网格
| 类型 | 特点 | 适用场景 | 我的评价 |
|---|---|---|---|
| 结构网格 | 网格节点排列规则,有明确的i,j,k方向 | 几何简单的流道、翼型、管道 | 计算快、精度高,但画网格很痛苦 |
| 非结构网格 | 节点排列不规则,三角形/四面体为主 | 复杂几何、汽车/航空外形 | 适应性强,但计算量稍大 |
结构网格就像军队列队——整整齐齐,每个兵都知道前后左右是谁。非结构网格就像自由集市——大家随意站位,但每个摊位都知道邻居是谁。
我曾经接手过一个项目,用非结构网格算一个简单的管道流动,结果收敛极慢。后来换成结构网格,计算时间直接砍掉一半。嗯,这里要注意:能用结构网格的地方,尽量用结构网格。
避坑指南: 我曾经在网格过渡区(粗网格到细网格的突变处)吃过亏。那里的数值误差会急剧放大,导致局部发散。记住:网格尺寸变化率不要超过1.3倍。
离散化与求解器:从方程到答案
离散化就是把偏微分方程变成代数方程组的过程。常用的离散格式有:
- 一阶迎风格式: 稳定但精度低,适合初场计算
- 二阶迎风格式: 精度高但可能振荡,适合最终计算
- 中心差分格式: 精度高但需要Peclet数控制
- QUICK格式: 三阶精度,适合旋转流动
我个人习惯:先用一阶格式算几百步,让流场稳定下来,再切换到二阶格式算到收敛。这样既保证稳定,又保证精度。
求解器分两大类:
- 分离式求解器: 逐个求解速度、压力方程,内存占用小
- 耦合式求解器: 同时求解所有方程,收敛快但内存大
你想想看,分离式求解器就像流水线作业——先算速度,再算压力,反复迭代直到一致。耦合式求解器就像全科医生——一次性把所有问题都处理了。
收敛性判断:怎么才算“算好了”?
这是新手最容易困惑的问题。残差降到1e-6就算收敛了吗?不一定。
收敛判断有三条标准:
- 残差下降: 至少下降3-4个数量级
- 监控点稳定: 关键位置的物理量不再变化
- 全局平衡: 进出口流量差小于1%
重要提醒: 残差低不代表结果对!我曾经遇到一个案例,残差降到1e-8,但结果明显不合理。后来发现是边界条件设错了。记住:物理合理性永远是第一位的。
常见的收敛问题及对策:
- 残差振荡不降: 减小松弛因子,或者检查网格质量
- 残差突然发散: 大概率是Courant数太大,减小时间步长
- 残差平缓不降: 可能是伪时间步长设置不当
我个人的经验是:不要只看残差曲线。在流场中设置几个监控点,观察速度、压力的变化趋势。如果监控点数值稳定了,残差也降够了,那基本就收敛了。
知识体系总览
下面这张图,是我自己总结的本章知识脉络。建议你保存下来,每次做仿真前看一眼:
给新手的建议: 刚开始做仿真时,别追求花哨的格式和超细的网格。先用粗网格、一阶格式跑通流程,确认物理趋势正确后,再逐步加密网格、提高格式阶数。这样能省下大量调试时间。
好了,这一章的内容就到这里。数值方法确实需要花时间消化,但请记住:你不需要一次搞懂所有细节。先理解核心思想,然后在实践中慢慢体会。我当年也是这么过来的。
公众号:蓝海资料掘金营,微信deep3321