第5章 有限体积法(The Finite Volume Method)
作者
本章由 F. Moukalled、L. Mangani 和 M. Darwish 合著。本章是全书数值方法部分的"开篇总览章" —— 给出 FVM 离散化的两步法(半离散化 + 全离散化)框架,并系统讨论 FVM 的守恒性、有界性、输运性 3 大指导原则,为 Ch 8-14 各数值方法的具体推导建立统一评价标准。
内容概述
本章是 Ch 4 离散化 4 步骤中的"Step III:方程离散"的总论章节。Ch 4 给出流程图,本章则展开流程图中最关键的一步 —— "如何把 PDE 转化为控制体上的代数方程"。
§5.1 引言 —— FVM 的两大标志性特点:(a) 离散化在物理空间直接进行,无需物理空间与计算空间之间的坐标变换;(b) collocated 网格使 FVM 天然适合复杂几何。这两个性质使 FVM 区别于 FDM 与 FEM。
§5.2 半离散化方程 (semi-discretized equation) —— FVM 离散化的第一步:从 PDE 出发,在控制体 \(C\) 上积分;调用散度定理(Ch 2 Eq. 2.84)将体积分化为面积分;得到"半离散"形式 —— 此时通量仍在面上积分(未离散到点)。关键公式:
- 通量定义 (Eq. 5.5-5.7):
$\(\mathbf{J}_{\phi,C} = \rho \mathbf{v} \phi \quad (\text{对流通量}), \quad \mathbf{J}_{\phi,D} = -\Gamma \nabla \phi \quad (\text{扩散通量})\)$
$\(\mathbf{J}_\phi = \mathbf{J}_{\phi,C} + \mathbf{J}_{\phi,D} \quad (\text{总通量})\)$
- 散度定理展开 (Eq. 5.4):
$\(\oint_{\partial V_C} \rho \mathbf{v} \phi \cdot d\mathbf{S} = \oint_{\partial V_C} \Gamma \nabla \phi \cdot d\mathbf{S} + \int_{V_C} Q_\phi \, dV\)$
这一步将控制体上的体积分转化为界面上的面积分,是 FVM"通量共享"机制的基础。
- 数值积分 (Eq. 5.11):
$\(\int_f \mathbf{J}_\phi \cdot d\mathbf{S} = \int_f \mathbf{J}_\phi \cdot \mathbf{n} \, dS = \sum_{ip \in ip(f)} \omega_{ip} \mathbf{J}_{\phi,ip} \cdot \mathbf{n} \, S_f\)$
其中 \(ip(f)\) 是面 \(f\) 上的高斯积分点集合,\(\omega_{ip}\) 是积分权重。作者给出 3 种典型积分方案(Fig. 5.2): - 中点法则(midpoint rule):\(ip = 1\),在面形心,二阶精度 - Simpson 2 点法则:\(ip = 2\),三阶精度(仅 2D) - Gauss-Legendre 3 点法则:\(ip = 3\),五阶精度
- 离散形式 (Eq. 5.12-5.13):
$\(\oint_{\partial V_C} \rho \mathbf{v} \phi \cdot d\mathbf{S} = \sum_{f \in \text{faces}(C)} \sum_{ip} \omega_{ip} \rho \mathbf{v} \phi \cdot \mathbf{S}_f\)$
至此,第一步(半离散化)完成。控制体 \(C\) 上"进入的通量 - 离开的通量 + 源项 = 0"的关系被精确离散化(误差仅来自高斯积分近似)。
§5.3 全离散化方程(fully discretized equation) —— FVM 离散化的第二步:用插值格式(interpolation profile)将"面上的 \(\phi_f\)"用"控制体形心的 \(\phi_C\) 与邻接控制体的 \(\phi_{NB}\)"表示。本节给出 中心差分 (CDS) 与 一阶迎风 (UDS) 两种最简单的插值格式,并指出 CDS 适用于 \(Pe < 2\)、UDS 适用于任意 \(Pe\)。更高阶的格式(QUICK、HO、HR)留到 Ch 11-12。
- 线性化后的最终形式 (Eq. 5.43)
$\(a_C \phi_C + \sum_{F \in NB(C)} a_F \phi_F = b_C \tag{5.43}\)$
其中 \(a_C\) 是控制体 \(C\) 的中心系数,\(a_F\) 是邻接控制体 \(F\) 的贡献系数,\(b_C\) 是源项与边界贡献的合并项。这是 Ch 8-14 所有数值方法的"目标形式"。
§5.4 离散化指导原则 —— FVM 离散化必须满足的 4 大原则:
- 守恒性 (Conservativeness) —— 通过控制体 \(C\) 的界面的通量,与通过邻接控制体 \(C'\) 同一界面的通量大小相等、符号相反。因此整个计算域的通量求和严格为零,物理量严格守恒。这是 FVM 的"招牌性质"。
- 有界性 (Boundedness) —— 离散后 \(a_C \geq \sum_F |a_F|\),且 \(b_C \geq 0\)。这是数值解不会产生非物理振荡(如负温度、负浓度)的必要条件。
- 输运性 (Transportiveness) —— 对流方向性必须正确反映:从上游向下游输运,逆风方向的影响必须大于顺风方向的影响。这一性质在 \(Pe\) 数大的对流主导流动中尤为关键。
- 几何守恒律 (Geometric Conservation Law, GCL) —— 当网格运动或变形时(如动网格、ALE 框架),离散方程必须保证在纯几何变换(无物理通量)下严格不产生虚假通量。
§5.5 边界条件处理 —— Dirichlet 边界(固定值)、Neumann 边界(固定梯度)、Robin 边界(混合)、周期性边界、对称边界、入口/出口边界等的 FVM 处理。本节给出每个边界条件对 Eq. 5.43 中 \(a_C, a_F, b_C\) 的具体修改。
§5.6 时间积分 —— 瞬态问题的离散化(详细 Ch 13 展开):显式 vs 隐式、Crank-Nicolson、二阶 Runge-Kutta。
§5.7 数值稳定性与收敛 —— CFL 条件、对角占优 (diagonal dominance)、矩阵条件数、迭代收敛的判断。
§5.8 闭包 —— 给出 Ch 6-14 各章的方法论定位:Ch 6 网格 → Ch 7 实现 → Ch 8 扩散 → Ch 9 梯度 → Ch 10 求解 → Ch 11-12 对流 → Ch 13 时间 → Ch 14 源项 → Ch 15-16 算法 → Ch 17-19 应用。
核心方程与概念
本章核心公式密度高,按"半离散化 → 离散积分 → 线性化 → 指导原则"四层列举。
一、半离散化(§5.2)
- 一般守恒方程的稳态形式 (Eq. 5.2)
$\(\nabla \cdot (\rho \mathbf{v} \phi) = \nabla \cdot (\Gamma \nabla \phi) + Q_\phi \tag{5.2}\)$
由 Ch 3 一般守恒方程 (Eq. 3.93) 去掉瞬态项得到。
- 控制体上的积分形式 (Eq. 5.3)
$\(\int_{V_C} \nabla \cdot (\rho \mathbf{v} \phi) \, dV = \int_{V_C} \nabla \cdot (\Gamma \nabla \phi) \, dV + \int_{V_C} Q_\phi \, dV \tag{5.3}\)$
- 散度定理展开 (Eq. 5.4)
$\(\oint_{\partial V_C} \rho \mathbf{v} \phi \cdot d\mathbf{S} = \oint_{\partial V_C} \Gamma \nabla \phi \cdot d\mathbf{S} + \int_{V_C} Q_\phi \, dV \tag{5.4}\)$
这里是 Ch 2 Eq. 2.84 散度定理在 FVM 中的第一次具体应用。
- 通量定义 (Eq. 5.5-5.7)
$\(\mathbf{J}_{\phi,C} = \rho \mathbf{v} \phi \quad (\text{对流通量}), \quad \mathbf{J}_{\phi,D} = -\Gamma \nabla \phi \quad (\text{扩散通量})\)$
$\(\mathbf{J}_\phi = \mathbf{J}_{\phi,C} + \mathbf{J}_{\phi,D} \quad (\text{总通量})\)$
- 离散形式 (Eq. 5.12-5.13) —— 中点法则下的面通量
$\(\oint_{\partial V_C} \rho \mathbf{v} \phi \cdot d\mathbf{S} = \sum_{f \in \text{faces}(C)} \rho \mathbf{v} \phi \cdot \mathbf{S}_f\)$
同样,扩散通量
$\(\oint_{\partial V_C} \Gamma \nabla \phi \cdot d\mathbf{S} = \sum_{f \in \text{faces}(C)} \Gamma \nabla \phi \cdot \mathbf{S}_f\)$
二、全离散化(§5.3)
- 中心差分格式 (CDS) —— 用 \(\phi_f = \frac{1}{2}(\phi_C + \phi_{NB})\)
$\(\sum_f \rho \mathbf{v} \cdot \mathbf{S}_f \frac{\phi_C + \phi_{NB}}{2} - \sum_f \Gamma \frac{\phi_{NB} - \phi_C}{d_{CN}} S_f = b_C\)$
其中 \(d_{CN}\) 是控制体 \(C\) 与邻接 \(NB\) 形心距离。CDS 是二阶精度,但当 \(Pe > 2\) 时产生非物理振荡。
- 一阶迎风格式 (UDS) —— 用 \(\phi_f\) 替换为"上游值"
$\(\phi_f = \begin{cases} \phi_C, & \rho \mathbf{v} \cdot \mathbf{S}_f > 0 \\ \phi_{NB}, & \rho \mathbf{v} \cdot \mathbf{S}_f < 0 \end{cases}\)$
UDS 总是有界(满足"输运性"),但仅一阶精度,产生数值扩散。
- 局部 Peclet 数 (Eq. 5.40)
$\(Pe_f = \frac{\rho |\mathbf{v} \cdot \mathbf{S}_f|}{\Gamma / d_{CN}} = \frac{\rho |\mathbf{v}| d_{CN}}{\Gamma} \tag{5.40}\)$
\(Pe_f < 2\) 时 CDS 是有界的,可以安全使用;\(Pe_f > 2\) 时需用 UDS 或更高级的格式(QUICK、HR)。
- 最终线性化形式 (Eq. 5.43)
$\(a_C \phi_C + \sum_{F \in NB(C)} a_F \phi_F = b_C \tag{5.43}\)$
其中
$\(a_C = \sum_f \max(-\rho \mathbf{v} \cdot \mathbf{S}_f, 0) + \sum_f \frac{\Gamma S_f}{d_{CN}}, \quad a_F = \sum_f \min(-\rho \mathbf{v} \cdot \mathbf{S}_f, 0) + \sum_f \frac{\Gamma S_f}{d_{CN}}\)$
$\(b_C = \int_{V_C} Q_\phi \, dV + \text{边界贡献}\)$
这是 Ch 8-14 所有数值方法的目标形式。
三、FVM 离散化 4 大指导原则(§5.4)
- 守恒性 (Conservativeness) —— 内部面 \(f\) 在 \(C\) 与 \(NB\) 上共享通量值
$\(J_{f,C} = -J_{f,NB}\)$
全域求和严格为零:
$\(\sum_{C} \sum_{f \in \text{faces}(C)} J_{f,C} = 0\)$
这是 FVM 的"招牌性质",是 FVM 区别于 FDM 的关键。
- 有界性 (Boundedness) —— 系数满足
$\(\frac{a_C}{\sum_F a_F} \geq 1, \quad b_C \geq 0\)$
这保证数值解 \(\phi_C\) 在物理上下界之间,不会出现负温度、负浓度等非物理解。
- 输运性 (Transportiveness) —— 上游影响大于下游影响
$\(\frac{\partial \phi_f}{\partial \phi_C} > \frac{\partial \phi_f}{\partial \phi_{NB}}, \quad \text{当 } \rho \mathbf{v} \cdot \mathbf{S}_f > 0\)$
UDS 满足此性质,CDS 当 \(Pe > 2\) 时违反此性质。
- 几何守恒律 (GCL) —— 在 ALE 框架或动网格下,纯几何变换(无物理通量)必须严格产生零净通量。
关键结论
- FVM 离散化的两步法 —— 第一步(半离散):积分 + 散度定理 + 数值积分;第二步(全离散):用插值格式将面值表示为控制体心值。Ch 5-14 的所有推导都遵循此两步法。
- Eq. 5.43 是 Ch 5-14 数值方法的目标形式 —— \(a_C \phi_C + \sum_F a_F \phi_F = b_C\) 这一统一形式使得所有数值方法的差异仅在于 \(a_C, a_F, b_C\) 的具体计算方式。Ch 8 给出的扩散项系数、Ch 11-12 给出的对流项系数、Ch 13 给出的瞬态项系数、Ch 14 给出的源项系数,最终都组装为这一形式。
- 4 大指导原则是数值方法评价的统一标准 —— 守恒性(基础,所有 FVM 方法天然满足)、有界性(避免非物理解)、输运性(捕捉对流方向性)、GCL(动网格严格性)。Ch 11-12 的高分辨率格式正是为了同时满足"有界性"与"输运性 + 二阶精度"。
- Peclet 数 \(Pe_f = \rho |\mathbf{v}| d_{CN} / \Gamma\) 是格式选择的关键判据 —— \(Pe_f < 2\) 用 CDS(高分辨率、低扩散),\(Pe_f > 2\) 必须用 UDS 或 HR 格式。
- FVM 的守恒性 + 网格灵活性是工业 CFD 主导地位的根源 —— Ch 5 给出的是"为什么 FVM 这么重要"的答案。
挑战和开放性问题
- GCL 在动网格下的实现细节 —— ALE 框架下,纯几何变换可能产生虚假通量,需要在 FVM 离散化中显式处理。本书 Ch 13 会触及时间离散,但动网格下的 GCL 严格性证明未深入展开。
- 高阶积分格式与计算成本的平衡 —— Ch 5.2.1 提到 Gauss-Legendre 5 点精度可达五阶,但每面 5 个积分点 + 权重存储会显著增加内存与计算量。工业 CFD 多采用中点法则(ip=1)+ 高阶插值(CDS/QUICK/HR)的组合。
- 有界性的充分必要条件 —— 作者给出"系数非负 + \(b_C \geq 0\)"是必要条件,但非充分(高维 / 非结构网格下可能违反)。严格的"非物理解不出现"判据(Discrete Maximum Principle, DMP)是研究热点。
- collocated 网格 + Rhie-Chow 插值 —— 本章未提及,但 Ch 15 的"压力-速度解耦"是 collocated 网格的"原罪",需要专门的修正。Ch 15 会详细讨论。
- 边界条件对 \(a_C, a_F, b_C\) 的修改规则 —— 本节给出框架,但具体到每种边界类型(fixedValue、fixedGradient、mixed、cyclic、symmetryPlane、inletOutlet 等)的实现细节,要到 Ch 8(扩散项边界条件)与 Ch 18(OpenFOAM 边界条件实现)才系统展开。
个人反思与批判性分析
本章是 Moukalled 这本教材最核心的"方法论总览"章节之一,5 万字的篇幅覆盖了 FVM 的全部方法论基础。从写作特点看:
- "两步法"的逻辑非常清晰 —— 第一节先讲半离散化(积分 + 散度定理 + 数值积分),第二节再讲全离散化(插值格式 + 线性化)。读者可以清晰看到 FVM 离散化的"层次感",每一步的物理意义和数学表达都非常明确。
- "4 大指导原则"的提出非常有价值 —— 守恒性、有界性、输运性、GCL 这 4 个原则是评价任何 FVM 数值方法的"试金石"。在 Ch 11-12 高分辨率格式的讨论中,这 4 个原则会被反复引用。
- Eq. 5.43 形式的统一性 —— 作者在 §5.3.2 给出的最终线性化形式 \(a_C \phi_C + \sum_F a_F \phi_F = b_C\) 是 Ch 5-14 所有数值方法的"目标形式",这种"统一目标"的设计降低了读者跨章学习的认知负担。
但本章也存在以下不足:
- 本节对"高阶插值格式"的展开不够 —— 中心差分与一阶迎风是两种最基本的格式,但实际工业 CFD 中用得最多的是 QUICK、CCCTVD、MUSCL 等二阶/三阶格式。本章仅给 CDS 与 UDS,更多是"为 Ch 11-12 做铺垫",但这种铺垫不能完全替代 Ch 11-12 的内容。
- 对"几何守恒律 (GCL)"的处理较为简略 —— 仅有 1-2 段定义性描述,没有给出 GCL 在 ALE 框架下"为什么必须满足"的严格数学证明。Ch 13 时间离散章节会涉及一些,但完整 GCL 理论需要补充 Donea、Formaggia 等的参考书。
- "有界性"的判据过于简单 —— 给出的"系数非负 + \(b_C \geq 0\)"判据在 1D 结构网格下充要,但在 2D / 3D 非结构网格上仅必要。严格的 DMP(离散极值原理)判据是更高级的数学工具,本书未展开。
- 缺少对"非正交网格"修正的明确预告 —— Ch 8 会详细讨论非正交网格上扩散项的"非正交修正 + Over-Relaxed"思路,但本章仅在 §5.5 提到"非正交网格需要特别处理",没有给出任何具体方法。这种"先打伏笔,后章节展开"的写法对自学读者不够友好。
总体而言,本章的"理论框架 + 指导原则 + 目标形式"是 Moukalled 这本教材"工程友好 + 理论扎实"定位的最佳体现。本章是全书的"骨架",Ch 6-19 在此骨架上逐项填肉。
重要参考文献
- [X1] Patankar S.V. (1980) Numerical Heat Transfer and Fluid Flow. Hemisphere. (FVM 与 SIMPLE 算法原始文献)
- [X2] Spalding D.B. (1972) A novel finite difference formulation for differential expressions involving both first and second derivatives. Int. J. Num. Methods Eng., 4: 551-559.
- [X3] Gosman A.D., Pun W.M., Runchal A.K., Spalding D.B., Wolfshtein M. (1969) Heat and Mass Transfer in Recirculating Flows. Academic Press. (Imperial College CFD 早期教材)
- [X4] Runchal A.K., Wolfshtein M. (1969) Numerical integration procedure for the steady-state Navier-Stokes equations. J. Mech. Eng. Sci., 11(5): 445-452.
- [X5] Rhie C.M., Chow W.L. (1983) Numerical study of the turbulent flow past an airfoil with trailing edge separation. AIAA Journal, 21(11): 1525-1532. (collocated 网格 + 棋盘问题)
- [X6] Leonard B.P. (1979) A stable and accurate convective modelling procedure based on quadratic upstream interpolation. Computer Methods in Applied Mechanics and Engineering, 19(1): 59-98. (QUICK 格式原始文献)
- [X7] Sweby P.K. (1984) High resolution schemes using flux limiters for hyperbolic conservation laws. SIAM Journal on Numerical Analysis, 21(5): 995-1011. (TVD 格式与 Sweby 图)
- [X8] Harten A. (1983) High resolution schemes for hyperbolic conservation laws. Journal of Computational Physics, 49(3): 357-393. (TVD 理论原始文献)
- [X9] Ferziger J.H., Perić M. (2002) Computational Methods for Fluid Dynamics, 3rd Edition. Springer. (FVM 理论深入参考)
- [X10] Jasak H. (1996) Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows. PhD Thesis, Imperial College. (OpenFOAM 早期开发者的博士论文,FVM 离散化误差分析)