跳转至

第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 大原则:

  1. 守恒性 (Conservativeness) —— 通过控制体 \(C\) 的界面的通量,与通过邻接控制体 \(C'\) 同一界面的通量大小相等、符号相反。因此整个计算域的通量求和严格为零,物理量严格守恒。这是 FVM 的"招牌性质"。
  2. 有界性 (Boundedness) —— 离散后 \(a_C \geq \sum_F |a_F|\),且 \(b_C \geq 0\)。这是数值解不会产生非物理振荡(如负温度、负浓度)的必要条件。
  3. 输运性 (Transportiveness) —— 对流方向性必须正确反映:从上游向下游输运,逆风方向的影响必须大于顺风方向的影响。这一性质在 \(Pe\) 数大的对流主导流动中尤为关键。
  4. 几何守恒律 (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 框架或动网格下,纯几何变换(无物理通量)必须严格产生零净通量。

关键结论

  1. FVM 离散化的两步法 —— 第一步(半离散):积分 + 散度定理 + 数值积分;第二步(全离散):用插值格式将面值表示为控制体心值。Ch 5-14 的所有推导都遵循此两步法。
  2. 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 给出的源项系数,最终都组装为这一形式。
  3. 4 大指导原则是数值方法评价的统一标准 —— 守恒性(基础,所有 FVM 方法天然满足)、有界性(避免非物理解)、输运性(捕捉对流方向性)、GCL(动网格严格性)。Ch 11-12 的高分辨率格式正是为了同时满足"有界性"与"输运性 + 二阶精度"。
  4. Peclet 数 \(Pe_f = \rho |\mathbf{v}| d_{CN} / \Gamma\) 是格式选择的关键判据 —— \(Pe_f < 2\) 用 CDS(高分辨率、低扩散),\(Pe_f > 2\) 必须用 UDS 或 HR 格式。
  5. FVM 的守恒性 + 网格灵活性是工业 CFD 主导地位的根源 —— Ch 5 给出的是"为什么 FVM 这么重要"的答案。

挑战和开放性问题

  1. GCL 在动网格下的实现细节 —— ALE 框架下,纯几何变换可能产生虚假通量,需要在 FVM 离散化中显式处理。本书 Ch 13 会触及时间离散,但动网格下的 GCL 严格性证明未深入展开。
  2. 高阶积分格式与计算成本的平衡 —— Ch 5.2.1 提到 Gauss-Legendre 5 点精度可达五阶,但每面 5 个积分点 + 权重存储会显著增加内存与计算量。工业 CFD 多采用中点法则(ip=1)+ 高阶插值(CDS/QUICK/HR)的组合。
  3. 有界性的充分必要条件 —— 作者给出"系数非负 + \(b_C \geq 0\)"是必要条件,但非充分(高维 / 非结构网格下可能违反)。严格的"非物理解不出现"判据(Discrete Maximum Principle, DMP)是研究热点。
  4. collocated 网格 + Rhie-Chow 插值 —— 本章未提及,但 Ch 15 的"压力-速度解耦"是 collocated 网格的"原罪",需要专门的修正。Ch 15 会详细讨论。
  5. 边界条件对 \(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 离散化误差分析)