第 9 章 · 有限体积法与高阶展望
全书最后一节把镜头拉回工程主战场:今天的商业与开源 CFD 软件,主体都是有限体积法(FVM)。这一节讲清楚 FVM 与有限差分的差别,并给出后续学习地图。
有限体积:对"元胞"积分守恒律
把控制方程在任意控制体 $V$ 上积分,用高斯定理把体积分变成面积分:
离散后的陈述是:每个网格单元内守恒量的变化率 = 各面通量之和。相邻单元共享同一个面通量,因此通量天然守恒——这是 FVM 相对差分的本质优势:激波位置、全局守恒不依赖网格光滑性,任意多边形网格直接可用。
通量怎么算:从中心到迎风
- 面两侧状态的平均给通量(中心型)——稳定但可能出棋盘。
- 通量向量分裂(Steger-Warming、Van Leer):按特征值正负把通量拆成出入两股,各自迎风。
- 近似黎曼求解器(Roe、HLL):在面法向解一个局部一维黎曼问题,用其精确/近似解作面通量——这是现代格式的主流。
高阶化不靠高阶差分模板,而靠重构:用相邻单元的平均值重构单元内的线性分布,配限制器(minmod、Van Albada)在光滑区保二阶、在间断处退回一阶。
湍流:一个必须正视的缺口
工程上直接解所有湍流尺度(DNS)不可行,主流是雷诺平均(RANS)+ 湍流模型($k$-$\varepsilon$、$k$-$\omega$ SST),把雷诺应力模型化。模型不是万能药:分离流、转捩预测仍不可靠。大涡模拟(LES)解大尺度、模化小尺度,是精度与代价的折中。
老师的提醒
- FVM 中"二阶"的重构发生在单元内,不在面上——理解这一点,限制器的一切行为都好解释。
- 学完本书最好的续接练习:手写一个一维欧拉方程的 MUSCL-Hancock 求解器,几百行就能装下全书思想。
自检
- FVM 为什么天然守恒?差分格式怎样才能守恒?
- 通量向量分裂与近似黎曼求解器的区别?
- RANS、LES、DNS 各自解什么、模化什么?
更深一层:有限体积的"守恒"到底守在哪
有限体积法的守恒性常被归结为一句"通量共享",值得把代数账摊开:对单元 $j$ 更新式求和($\Delta x$ 均匀):
右端第二个和是伸缩级数,只剩边界项 $F_{N+1/2} - F_{1/2}$——内部通量两两相消的代数就是全局守恒的证明。相消的条件只有一个:相邻两单元对同一界面的通量计算完全一致(同插值、同限制器、同时间层)。工程事故的经典来源恰好在这里:并行分区时界面两侧用了不同阶的重构、或自适应网格细化时粗细单元的通量未做守恒修正——总质量悄悄漂移,算得越久错得越远。守恒检查脚本(域内总量对时间的变化率 = 边界通量积分)应该与求解器同日诞生,这是数值船体的龙骨。
推导细读:MUSCL 重构为什么"行"
一阶 Godunov 太糊,二阶 Lax-Wendroff 太晃,MUSCL 的聪明之处在于把自由度从格式转移到数据:格式保持一阶 Godunov 的骨架(界面两侧给黎曼求解器常数状态),但每个单元内的状态不再是常数——用相邻单元平均值的线性重构 $q(x) = Q_j + \sigma_j(x - x_j)$ 提升界面两侧状态精度。斜率 $\sigma_j$ 若取中心差分(无限制),光滑区二阶、间断处振荡;加限制器 $\sigma_j = \phi(r_j)\theta_j$ 后,$r \le 0$(极值附近)自动降阶。TVD 证明的关键一步:重构后界面两侧状态满足"不产生新极值"的充分条件,于是半离散解的总变差不增。这套"高阶重构 + 单调性开关"的模式后来被推广成 WENO(光滑区更高阶)、DG(单元内高阶多项式)——现代高阶方法的家谱第一页都写着 MUSCL。
在真实世界里:湍流模型的诚实使用指南
末章点到的湍流建模值得展开成使用守则。RANS 的能力边界:附着流、统计定常、不关心瞬态结构——这些场合 $k$-$\omega$ SST 能给出工程精度(升阻误差 5% 以内)。它的诚实边界之外:强分离、转捩、大尺度非定常(涡脱落对载荷的影响)——RANS 只能给平均,瞬态载荷需要 URANS/LES/DES 家族。模型选择的决策树:几何与流动越"规矩",模型越简单越好;越不规矩,越要为非定常与分辨率买单。最后一个行业事实:湍流模型没有"对错",只有"适配"——同一个 SST 模型在翼型上是明星、在旋流燃烧室里可能全错。
常见误区与辨析
- "有限体积只能二阶":限制器重构可到任意阶(WENO 五阶是工程标配),DG 更是把单元内精度做到任意阶;"FVM = 低精度"是过时印象。
- "守恒检查通过就万事大吉":守恒只保证总量账目,不保证解的质量(激波位置错但守恒的解可以构造出来);守恒 + 收敛 + 网格无关三关全过才算数。
- "学完本书就能做工程仿真":本书给了发动机,工程还需要燃料(几何、物理、验证数据)与驾驶训练(软件、诊断、报告)——三条腿缺一不可。
与其他节的联系
本节与第 1 节首尾呼应:第 1 节的"CFD 三步工作流"在这里升级为"多保真度工作流"(势流/面板法粗筛 → RANS 精算 → LES 局部高保真);第 4-7 节的全部格式知识在"限制器重构"处合流。合上书后的最佳下一步是 LeVeque 的原书(守恒律数值方法的理论纵深)与一个手写求解器项目(一维浅水溃坝问题)——把本书的每一件武器都亲手开过一遍。
专题深入:高阶格式的"WENO 与 DG 对决"
高阶激波捕捉的两大现代流派值得对比:WENO(加权基本无振荡——多个候选模板的光滑度加权,极值点附近自动切换最光滑模板)与 DG(间断伽辽金——单元内高阶多项式 + 单元间通量,几何与高阶兼得)。WENO 的强项:有限体积框架内成熟、限制器成熟、大规模并行友好;DG 的强项:任意阶精度、hp 自适应、局部守恒的显式高阶。两家的共同祖先都是 MUSCL 的"重构 + 限制器"思想——高阶化的本质是把自由度从格式转移到数据。DG 的精度优势在光滑区显著(指数收敛)、WENO 的鲁棒性在间断区更可靠——选型 = 问题光滑度与网格复杂度的权衡。
数学细节展开:湍流建模的"层级表"
湍流模型的层级表值得作为"预算-保真"地图记住:零方程(混合长——最便宜的 RANS)、一方程(Spalart-Allmaras——附着流的工程标准)、两方程($k$-$\varepsilon$、$k$-$\omega$ SST——通用主力,SST 对逆压梯度更诚实)、雷诺应力模型(二阶矩封闭——各向异性)、LES(解析大涡模化小涡)、DNS(全解析——$Re^3$ 成本)。每一级的"贵了十倍"都对应"多解析了一类物理"——模型选择 = 你需要多"瞬态"的信息。
工程案例细节:从本书到工业求解器的"最后一公里"
学完本书到上手 OpenFOAM/Fluent 的最后一公里清单:网格工具(blockMesh/Gmsh/商业网格器——几何到网格的转换是独立技能)、边界条件字典(软件特定的 BC 语法——fixedValue/zeroGradient/wall 函数)、求解器选择(SIMPLE/PISO/Coupled——按问题选)、湍流模型库(SA/SST/LES——按流态选)、并行与集群(域分解、HPC 作业提交)。本书给的是发动机原理,工业软件给的是驾驶舱——两者的接口就是这份清单。
常见误区与辨析(补充)
- "RANS 模型能算分离流":稳态 RANS 给的是平均分离区,瞬态分离动力学(涡脱落频率)需要 URANS/LES——平均场的分离泡与瞬态的涡脱落是两件事。
- "LES 比 RANS 准":LES 在附着流上与 RANS 相当甚至更差(网格不够细时)——LES 的价值在瞬态与大分离,不是"无脑升级"。
例题
一维线性对流 $q_t + a q_x = 0$($a = 2$),均匀网格 $\Delta x = 1$、$\Delta t = 0.25$。单元平均值 $Q_j^n = 3$、$Q_{j-1}^n = 1$。用迎风有限体积格式($a>0$ 取左端通量)计算 $Q_j^{n+1}$。
解答
有限体积更新式:
迎风通量($a > 0$ 信息从左来):$F_{j+1/2} = aQ_j = 6$,$F_{j-1/2} = aQ_{j-1} = 2$。
- 检查:柯朗数 $\nu = a\Delta t/\Delta x = 0.5 \le 1$ ✓ 稳定;新旧值的加权 $Q_j^{n+1} = (1-\nu)Q_j + \nu Q_{j-1} = 0.5\times3 + 0.5\times1 = 2$ ✓ 一致。