第8章 空间离散:扩散项(Spatial Discretization: The Diffusion Term)
作者
本章由 F. Moukalled、L. Mangani 和 M. Darwish 合著。本章是 Numerics 模块(Ch 8-14)的第一章,专门处理一般守恒方程 (Eq. 3.93) 中扩散项 \(\nabla \cdot (\Gamma \nabla \phi)\) 的 FVM 离散化。这是 FVM 三大核心离散化(扩散、对流、瞬态)中最简单的一类,但涉及正交 / 非正交、规则 / 非结构、各向同性 / 各向异性、边界条件处理等多个工程细节,是后续 Ch 9 梯度、Ch 11 对流、Ch 12 高分辨率格式的基础。
内容概述
本章是全书 89 页篇幅最长的章节之一,按"由简到繁"的顺序展开扩散项离散化的全部细节。
§8.1 二维矩形域上的扩散 —— 以均匀 Cartesian 网格上的 2D 扩散方程 \(\nabla \cdot (\Gamma \nabla \phi) = Q_\phi\) (Eq. 8.1) 为起点。控制体 \(C\) 离散为
每个面的扩散通量都分解为 3 部分:Flux_C(来自 owner)、Flux_F(来自 neighbour)、Flux_V(边界 / 非正交修正)。这种"3 部分分解"是 Ch 5 Eq. 5.43 的具体展开。
§8.2 离散化系数规则 —— 离散方程 \(a_C \phi_C + \sum_F a_F \phi_F = b_C\) 的系数必须满足的 4 大规则: 1. \(a_F \leq 0\)(保证对角占优) 2. \(a_C \geq 0\)(保证解的非负性) 3. \(b_C \geq 0\)(保证源项非负) 4. \(\sum_F a_F + b_C = a_C\)(守恒性)
这些规则是 Ch 5.4 节"4 大指导原则"在扩散项上的具体体现。
§8.3 边界条件处理 —— Dirichlet(fixedValue)、Neumann(fixedGradient)、mixed、symmetry 4 种边界条件在扩散项中的实现。每种边界条件对 \(a_C, a_F, b_C\) 的修改规则详细给出。
§8.4 非 Cartesian 正交网格 —— 从 Cartesian 推广到柱坐标、曲线正交坐标(curvilinear orthogonal)。扩散通量仍为 \(\Gamma \nabla \phi \cdot \mathbf{S}_f\),但 \(\nabla \phi\) 在曲线坐标下需用协变导数(covariant derivative)。
§8.5 非正交结构网格 —— 关键创新点。当距离向量 \(\mathbf{d}\) 与面法向 \(\mathbf{S}_f\) 不平行时,\(\mathbf{d} \cdot \mathbf{S}_f \neq d \cdot S_f\)。处理方法:非正交修正(Over-Relaxed 修正): - 第 1 步:仅用 \(\mathbf{d} \cdot \mathbf{S}_f\) 部分计算主扩散通量 - 第 2 步:计算面梯度 \(\nabla \phi_f\)(需先求 \(\phi_f\),再用 Green-Gauss 公式) - 第 3 步:用 \(\nabla \phi_f \cdot \mathbf{S}_f - (\mathbf{d} \cdot \mathbf{S}_f / d^2) (\phi_{NB} - \phi_C)\) 计算非正交修正项 - 第 4 步:把修正项加到 \(b_C\)(修正源项)而非 \(a_F\)(避免破坏有界性)
这是 OpenFOAM laplacianScheme 的核心实现逻辑。
§8.6 非结构非正交网格 —— 在非结构网格上,每个 cell 的邻接数不固定(4-7 个邻接),但 FVM 离散化形式完全一致。本节给出 uFVM 与 OpenFOAM 的具体实现。
§8.7 各向异性扩散 —— 当扩散系数 \(\boldsymbol{\Gamma}\) 是张量(不是标量)时(例如多孔介质流、化学反应流中的方向性扩散),FVM 离散化需要特殊处理。本节给出 anisotropic diffusion 的离散公式
在 OpenFOAM 中通过 fvOptions 或自定义 laplacianScheme 实现。
§8.8 Under-Relaxation —— 对于高非线性问题(如湍流、化学反应),扩散项的线性化需要 under-relaxation(亚松弛)以保证收敛。基本形式
OpenFOAM 通过 relaxationFactors 配置亚松弛因子。
§8.9 计算指针 —— uFVM 与 OpenFOAM 的具体实现:
- uFVM:cfdAssembleDiffusionTerm(phi, gamma, ...) 函数
- OpenFOAM:fvm::laplacian(gamma, phi) 算符 + laplacianScheme 类(linear / corrected / orthogonal)
§8.10 闭包 —— 总结扩散项 FVM 离散化的关键设计选择。
核心方程与概念
本章是 FVM 扩散项离散的"百科全书",按"基础 → 边界 → 非正交 → 各向异性"四层列举。
一、基础公式(§8.1)
- 稳态扩散方程 (Eq. 8.1)
$\(\nabla \cdot (\Gamma \nabla \phi) = Q_\phi \tag{8.1}\)$
- 控制体 \(C\) 上的离散形式 (Eq. 8.5)
$\(\sum_{f \in \text{faces}(C)} \Gamma_f (\nabla \phi)_f \cdot \mathbf{S}_f = Q_C V_C \tag{8.5}\)$
展开为 4 个面(E, W, N, S)的求和。
- 面上的扩散通量分解 (Eq. 8.10)
$\(\text{Flux}_{T,e} = \text{Flux}_{C,e} \phi_C + \text{Flux}_{F,e} \phi_E + \text{Flux}_{V,e}\)$
其中 \(\text{Flux}_{C,e} = -\Gamma_e S_e / dx_e\)(对 \(C\) 的系数),\(\text{Flux}_{F,e} = +\Gamma_e S_e / dx_e\)(对 \(E\) 的系数),\(\text{Flux}_{V,e}\) 是非正交修正项。
二、系数规则(§8.2)
- 线性化后形式 (Eq. 8.43)
$\(a_C \phi_C + \sum_F a_F \phi_F = b_C \tag{8.43}\)$
其中 - 中心系数 \(a_C = \sum_F \frac{\Gamma_f S_f}{d_{CF}} + \text{修正项}\) - 邻接系数 \(a_F = -\frac{\Gamma_f S_f}{d_{CF}}\) - 源项 \(b_C = \int Q \, dV + \text{边界贡献} + \text{非正交修正}\)
三、边界条件(§8.3)
- Dirichlet(fixedValue) —— 在边界 \(b\) 上 \(\phi_b\) 已知
- \(a_C\) 增加 \(\Gamma_b S_b / d_{Cb}\)
- \(a_F\) 不变
-
\(b_C\) 增加 \(\Gamma_b S_b / d_{Cb} \cdot \phi_b\)
-
Neumann(fixedGradient) —— 在边界 \(b\) 上 \(\partial \phi / \partial n |_b\) 已知
- \(a_C\) 不变
- \(a_F\) 不变
-
\(b_C\) 增加 \(\Gamma_b S_b \cdot (\partial \phi / \partial n |_b)\)
-
mixed / Robin —— \(\alpha \phi_b + \beta \partial \phi / \partial n |_b = \gamma\)
-
综合上述两种处理
-
symmetry —— 边界法向通量为零
- \(\mathbf{S}_b\) 在 \(\mathbf{n}_b\) 方向分量为零
- 实际等价于 \(b_C\) 不变,\(a_C\) 中不包含该边界
四、非正交修正(§8.5)
- 非正交度的几何因子 \(g_f\)
$\(g_f = \frac{\mathbf{d}_{CF} \cdot \mathbf{S}_f}{|\mathbf{d}_{CF}|^2} = \frac{\cos \theta_f}{d_{CF}}\)$
对正交网格 \(g_f = 1\);对非正交网格 \(g_f < 1\)。
- 完整扩散通量(含非正交修正) (Eq. 8.71)
$\(\text{Flux}_f = \Gamma_f \left( g_f (\phi_F - \phi_C) + \bar{\nabla} \phi_f \cdot \mathbf{S}_f - g_f (\phi_F - \phi_C) \right) = \Gamma_f g_f (\phi_F - \phi_C) + \Gamma_f \bar{\nabla} \phi_f \cdot \mathbf{S}_f (1 - g_f)\)$
其中 \(\bar{\nabla} \phi_f\) 是面梯度(需用 Ch 9 的 Green-Gauss 或最小二乘方法预先计算)。
- Over-Relaxed 修正
$\(\text{Flux}_f = \Gamma_f g_f (\phi_F - \phi_C) + \Gamma_f (1 - g_f) \bar{\nabla} \phi_f \cdot \mathbf{S}_f\)$
第一项是主项(进入 \(a_C, a_F\)),第二项是非正交修正(进入 \(b_C\)),这种分解保证有界性。
五、各向异性扩散(§8.7)
- 各向异性扩散系数张量 \(\boldsymbol{\Gamma}\)(2 阶对称张量)
$\(\nabla \cdot (\boldsymbol{\Gamma} \cdot \nabla \phi)\)$
- 离散形式
$\(\sum_f (\boldsymbol{\Gamma} \nabla \phi)_f \cdot \mathbf{S}_f\)$
其中 \((\boldsymbol{\Gamma} \nabla \phi)_f\) 是面上的扩散通量向量(不是标量),需要通过插值得到。
六、Under-Relaxation(§8.8)
- 基本形式
$\(\phi_C^{new} = \phi_C^{old} + \alpha (\phi_C^{computed} - \phi_C^{old})\)$
等价于修改线性系统
$\(\frac{a_C}{\alpha} \phi_C^{new} + \sum_F a_F \phi_F = b_C + \frac{1-\alpha}{\alpha} a_C \phi_C^{old}\)$
关键结论
- 扩散项的 FVM 离散化是"最简单但最严谨"的一类:相比对流项(涉及方向性)和瞬态项(涉及时间精度),扩散项只涉及几何与相邻 cell 值,公式简洁但工程细节繁多(正交 / 非正交、各向同性 / 各向异性、边界条件)。
- 非正交修正是 FVM 区别于 FDM 的关键:FDM 在非正交网格上实现复杂,FVM 通过 Over-Relaxed 修正将非正交效应分解为"主项 + 修正项",主项进入 \(a_C, a_F\) 保持有界性,修正项进入 \(b_C\) 保留非正交物理。
- 边界条件处理规则明确、确定性高:每种边界条件对 \(a_C, a_F, b_C\) 的修改规则是确定性的,这是 FVM 易于工程实现的关键。
- Under-Relaxation 是高非线性问题的"安全阀":湍流、化学反应等高非线性问题,必须配合 under-relaxation 才能稳定收敛。
- uFVM 与 OpenFOAM 的
fvm::laplacian(gamma, phi)等价:两套代码的扩散项离散化实现完全一致,这是 Ch 7 "数据结构同构"的具体体现。
挑战和开放性问题
- 极端非正交网格的收敛困难 —— 当 \(\theta_f > 80°\) 时,Over-Relaxed 修正需要多次迭代才能收敛。是否存在更好的"非正交修正多步收敛"算法是研究热点。
- 各向异性扩散 + 非正交网格的组合 —— 工业上常见(如多孔介质流、晶体生长),但 FVM 实现复杂,需要专门的本构建模。
- 动网格下的扩散项离散化 —— 动网格(ALE 框架)下,\(\mathbf{S}_f\) 随时间变化,需要显式处理时间精度。Ch 13 时间离散章节会涉及一部分。
- 非局域扩散(分数阶扩散算子) —— 本书未涉及。分数阶 Laplacian \(\nabla^\alpha \phi\)(\(0 < \alpha < 2\))在异常扩散、生物输运、湍流反常扩散等领域有重要应用。
- 非牛顿流体的黏度张量与扩散项耦合 —— 黏度 \(\mu\) 依赖 \(\nabla \mathbf{v}\)(如 Carreau 模型),导致扩散项"自非线性",需要特殊处理。
- 张量扩散的 OpenFOAM 实现 ——
fvm::laplacian(gamma, phi)中 \(\gamma\) 可以是 volScalarField、volTensorField、surfaceScalarField。volTensorField 形式下需调用laplacianScheme的模板特化版本。
个人反思与批判性分析
本章是 FVM 扩散项的"百科全书",89 页篇幅覆盖了从 1D Cartesian 到 3D 非结构非正交各向异性的全部细节。从写作特点看:
- "由简到繁"的递进结构 —— 1D Cartesian(§8.1)→ 2D Cartesian(§8.1)→ 非 Cartesian 正交(§8.4)→ 非正交结构(§8.5)→ 非结构(§8.6)→ 各向异性(§8.7)→ Under-Relaxation(§8.8)。这种递进是工业 FVM 实现的真实工程顺序,读者可以在每一步都看到"前一步如何扩展到下一步"。
- 非正交修正(§8.5)是本章最关键的工程贡献 —— Over-Relaxed 修正是 FVM 在非正交网格上保持有界性的核心技术。OpenFOAM 的
correctedlaplacianScheme 即对应这一思路。本节给出的"主项入 \(a_C, a_F\) + 修正项入 \(b_C\)"分解规则,是工业 FVM 实现的核心 trade-off。 - "系数 4 大规则"是数值方法评价的统一标准 —— 守恒性、对角占优、解的非负性、守恒恒等式。这 4 个规则在 Ch 11-12 高分辨率格式的讨论中会被反复引用。
但本章也存在以下不足:
- §8.5 非正交修正的"4 步迭代"过程描述不够清晰 —— 实际 OpenFOAM 中是"非正交修正迭代次数"参数(
nNonOrthogonalCorrectors)控制,但本章未明确给出"为什么需要迭代"、"如何迭代"的数学解释。 - §8.7 各向异性扩散的工程实例不够 —— 工业上各向异性扩散的典型场景(多孔介质、晶体生长、纤维增强复合材料)未给出具体算例。
- uFVM 的实现细节略显简略 —— 与 Ch 7 一样,uFVM 的代码片段和函数签名没有完整展示,对自学者不够友好。
- 缺乏对"非正交网格上最小二乘梯度法"的展开 —— Ch 9 会详细讨论梯度计算,但与本章的"非正交修正"是紧密耦合的(面梯度是非正交修正的核心输入)。这种"两章内容互相依赖"对自学读者构成挑战。
总体而言,本章是 FVM 扩散项离散的"权威教材式"参考章节,与 Versteeg-Malalasekera(偏入门)、Ferziger-Peric(偏理论)、OpenFOAM 官方文档(偏工程)形成三角对标。Moukalled 的优势在于"理论 + 工程 + 实现"三位一体的连贯叙述。
重要参考文献
- [X1] Patankar S.V. (1980) Numerical Heat Transfer and Fluid Flow. Hemisphere. (FVM 与扩散项离散原始文献)
- [X2] 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.
- [X3] Ferziger J.H., Perić M. (2002) Computational Methods for Fluid Dynamics, 3rd Edition. Springer. (扩散项离散化的理论深入参考)
- [X4] Versteeg H.K., Malalasekera W. (2007) An Introduction to Computational Fluid Dynamics: The Finite Volume Method, 2nd Edition. Pearson. (扩散项入门参考)
- [X5] Mathur S.R., Murthy J.Y. (1997) A pressure-based method for unstructured meshes. Numerical Heat Transfer, Part B, 31(2): 195-215. (非结构网格上扩散项离散化)
- [X6] OpenFOAM Foundation (2014) OpenFOAM: The Open Source CFD Toolbox — Programmer's Guide. (OpenFOAM laplacianScheme 实现)
- [X7] Jasak H. (1996) Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows. PhD Thesis, Imperial College. (FVM 离散化误差与收敛性分析)
- [X8] Weller H.G., Tabor G., Jasak H., Fureby C. (1998) A tensorial approach to computational continuum mechanics using object-oriented techniques. Computers in Physics, 12(6): 620-631.