跳转至

第14章 源项离散化、松弛与其他细节(Discretization of the Source Term, Relaxation, and Other Details)

作者

本章由 F. Moukalled、L. Mangani 和 M. Darwish 合著。本章是 Numerics 模块(Ch 8-14)的收官章节,专门处理"小但大"影响的数值细节:源项的隐式 / 显式处理、亚松弛、残差形式、收敛判据。本章是 Ch 15-16 N-S 方程求解与 Ch 17 湍流模型的"前置章节"。

内容概述

本章 40 页篇幅是全书 20 章中相对短的一章,但内容都是工业 CFD 实践中"非知道不可"的细节。在工程实践中,源项处理 + 亚松弛 + 收敛判据的选择往往决定一个 CFD 项目是"快速收敛"还是"反复发散调试"。

§14.1 源项离散化 —— 源项 \(Q_\phi\) 在很多物理问题中(湍流模型、化学反应、辐射传热、多相流)依赖 \(\phi\) 本身,即 \(Q_\phi = Q_\phi(\phi)\)。这种"自非线性"对数值稳定性影响巨大。

工业上常见的"自非线性源项"包括: - 湍流模型:k 方程的源项 \(-\epsilon\)\(\epsilon\) 依赖 k)、k-ω 模型的交叉扩散项 - 化学反应:Arrhenius 公式的 \(A \exp(-E_a / RT)\)\(T\) 出现在指数项 - 辐射传热\(Q_T = A (T_1^4 - T^4)\)\(T\) 的 4 次方 - 多相流:相变源项的"阶跃"特性 - 化学反应流:组分质量分数的化学消耗 / 生成项

这些"自非线性源项"如果处理不当,会导致严重的数值不稳定或发散。本节给出 Taylor 线性化(Eq. 14.3)的标准处理方法。

  • 基本形式 (Eq. 14.1)

$\(a_C \phi_C + \sum_{F} a_F \phi_F = Q_{\phi,C} V_C \tag{14.1}\)$

其中 \(Q_{\phi,C} V_C\) 是源项在控制体 \(C\) 上的积分。

  • Taylor 展开线性化 (Eq. 14.3)

$\(Q_\phi(\phi_C) = \left( \frac{\partial Q}{\partial \phi_C} \right)^* \phi_C + \left[ Q^* - \left( \frac{\partial Q}{\partial \phi_C} \right)^* \phi_C^* \right] \tag{14.3}\)$

把源项拆分为"隐式部分"(\(\left( \frac{\partial Q}{\partial \phi} \right)^* \phi_C\))和"显式部分"(\(Q^* - \left( \frac{\partial Q}{\partial \phi} \right)^* \phi_C^*\),基于上一迭代值)。这是源项处理的核心思想:把非线性项沿当前迭代点做一阶 Taylor 展开,分离出"对 \(\phi_C\) 的线性依赖"作为隐式项,剩下的作为显式项

  • 离散后形式 (Eq. 14.5)

$\(\left( a_C - \text{Flux}_C^C \right) \phi_C + \sum_F a_F \phi_F = \text{Flux}_V^C \tag{14.5}\)$

其中 \(\text{Flux}_C^C = \int_{V_C} \frac{\partial Q^*}{\partial \phi_C} dV\) 是隐式部分对 \(a_C\) 的贡献(注意是减号,因为它从右端移到左端),\(\text{Flux}_V^C\) 是显式部分。

  • 稳定性要求 (Eq. 14.5 末尾)
  • 隐式部分 \(\text{Flux}_C^C \leq 0\)(保证对角占优)
  • 显式部分 \(\text{Flux}_V^C \geq 0\)(保证正定解)
  • 这等价于"负源项(sink)隐式、正源项(source)显式"的工程经验法则。具体地:

    • 如果 \(\partial Q / \partial \phi < 0\)(源随 \(\phi\) 增加而减少,是稳定源),应隐式处理
    • 如果 \(\partial Q / \partial \phi > 0\)(源随 \(\phi\) 增加而增加,是不稳定源),应显式处理
  • Example 1:辐射源项

$\(Q_T = A (T_1^4 - T^4)\)$

展开线性化:

$\(\frac{\partial Q_T}{\partial T} = -4 A T^3\)$

源项"导数为负"是稳定源,应隐式处理。Example 1 详细演示了这一处理过程,以及不同选择(隐式 vs 显式)对收敛性的影响 —— 隐式处理通常收敛更快、更稳定。

§14.2 亚松弛 (Under-Relaxation) —— 高非线性问题的"安全阀"。当源项的线性化仍无法保证收敛时(例如化学反应、相变流、强湍流),需要亚松弛进一步减慢迭代更新。

  • 基本形式

$\(\phi_C^{new} = \phi_C^{old} + \alpha (\phi_C^{computed} - \phi_C^{old}), \quad 0 < \alpha < 1\)$

通过减慢迭代更新速度,避免数值振荡。\(\alpha = 1\) 为无松弛(直接用计算值),\(\alpha \to 0\) 为无穷慢(基本不更新)。

  • Patankar 隐式亚松弛 (Eq. 14.9) —— 把亚松弛项加入离散方程

$\(\frac{a_C}{\alpha} \phi_C^{new} + \sum_F a_F \phi_F = b_C + \frac{1 - \alpha}{\alpha} a_C \phi_C^{old}\)$

优点:自动嵌入线性系统,\(\alpha\)\(0 < \alpha \leq 1\) 范围内保证无条件稳定。缺点:\(\alpha\) 太小会导致收敛极慢(每步只更新一小部分)。

  • E-factor 方法 (van Doormaal-Raithby 1984) —— 通过调整源项的导数 \(\partial Q / \partial \phi\) 实现亚松弛:

$\(\frac{\partial Q}{\partial \phi} \to \frac{1}{E} \frac{\partial Q}{\partial \phi}\)$

其中 \(E > 1\) 是 E-factor。优点:保持源项物理意义,E-factor 与 Patankar 隐式亚松弛在数学上等价。缺点:实现上需要修改源项线性化逻辑,工业实现较少。

  • 伪时间步法 (False Transient) (Mallinson-de Vahl Davis 1973) —— 把"稳态问题"用瞬态求解器求解,每步用 CFL 限制时间步长。优点:稳健,对病态问题也能收敛;缺点:收敛到稳态需要数千步,计算成本高。

§14.3 残差形式 (Residual Form) —— 把离散方程写成

\[R_C = a_C \phi_C + \sum_F a_F \phi_F - b_C\]

\(R_C\) 是 cell \(C\) 上的"残差"。当所有 \(R_C \to 0\) 时,\(\phi\) 收敛。残差分析是判断收敛性的核心工具。

工程上有两种常用的残差: - 绝对残差 \(|R_C|\):直接判断每个 cell 的平衡误差 - 归一化残差 \(|R_C| / (\sum_F |a_F| + |b_C|)\):消除量级影响,便于跨物理量比较

OpenFOAM 默认输出归一化残差到 log 文件,例如:

time step continuity errors : sum local = 1.234e-3, global = 2.456e-4

§14.4 收敛判据 (Convergence Indicators) —— 工业 CFD 中判断解是否收敛的 4 大判据:

  1. 残差下降 —— 各物理量的归一化残差降至 \(10^{-3}\) - \(10^{-6}\)。不同物理量的阈值不同:压力通常更难收敛(\(10^{-4}\)),湍流量更难(\(10^{-3}\))。
  2. 整体守恒 —— 流入 - 流出 = 0(流量守恒、能量守恒)。在 OpenFOAM 中通过 fluxReport 或自定义 functionObject 监测。
  3. 关键量不随迭代变化 —— 升力、阻力、热流等"积分量"在最后 100 步内变化 < 0.1%。这是最可靠的判据,因为工程上真正关心的是这些积分量。
  4. 网格无关性验证 —— 加密网格后解不变(网格收敛性研究)。这是最严格的判据,但成本最高(2-3 倍计算量)。

§14.5 计算指针 —— uFVM 与 OpenFOAM 的实现: - OpenFOAM 通过 system/fvSolution 中的 relaxationFactors 配置:

relaxationFactors
{
    fields
    {
        p               0.3;
    }
    equations
    {
        U               0.7;
        "(k|epsilon|omega)" 0.7;
    }
}
- 压力亚松弛 \(\alpha_p = 0.3\) 是 SIMPLE 系列算法的"标配"(压力更新要慢) - 速度亚松弛 \(\alpha_U = 0.7\) 是工业典型(速度可以快一些) - 湍流量亚松弛 \(\alpha_k = 0.7\) 是工业典型

  • uFVM 通过 cfdRelaxEquation(...) 调用

§14.6 闭包 —— 总结源项 + 亚松弛的工程实践。

核心方程与概念

  • 源项 Taylor 线性化 (Eq. 14.3)

$\(Q(\phi) \approx \left( \frac{\partial Q}{\partial \phi} \right)^* \phi + \left[ Q^* - \left( \frac{\partial Q}{\partial \phi} \right)^* \phi^* \right]\)$

  • 离散后形式 (Eq. 14.5)

$\(\left( a_C - \frac{\partial Q}{\partial \phi} \right) \phi_C + \sum_F a_F \phi_F = Q^* - \left( \frac{\partial Q}{\partial \phi} \right)^* \phi_C^*\)$

  • 隐式 / 显式规则 —— 负源(sink)隐式、正源(source)显式

  • Patankar 隐式亚松弛 (Eq. 14.9)

$\(\frac{a_C}{\alpha} \phi_C^{new} = b_C - \sum_F a_F \phi_F + \frac{1 - \alpha}{\alpha} a_C \phi_C^{old}\)$

  • E-factor 方法

$\(\frac{\partial Q}{\partial \phi} \to \frac{1}{E} \frac{\partial Q}{\partial \phi}\)$

  • 残差 (Eq. 14.13)

$\(R_C = a_C \phi_C + \sum_F a_F \phi_F - b_C\)$

  • 归一化残差 (Eq. 14.14)

$\(R_{C,norm} = \frac{R_C}{\sum_F |a_F| + |b_C|}\)$

关键结论

  1. 源项的隐式 / 显式处理对收敛性影响巨大:负源(sink)隐式、正源(source)显式是工业经验法则。
  2. 亚松弛是高非线性问题的"安全阀":湍流、化学反应、多相流等高非线性问题必须配合亚松弛才能稳定收敛。OpenFOAM 默认 p 0.3 / U 0.7 是工业上"压力慢、速度中"的典型配置。
  3. E-factor 与伪时间步法是亚松弛的两种"变体":E-factor 通过修改源项导数实现,伪时间步法通过瞬态求解器实现。
  4. 残差分析是判断收敛性的核心工具:但残差下降不等于物理量收敛 —— 必须配合整体守恒、关键量不变化、网格无关性 4 大判据。
  5. OpenFOAM relaxationFactors 是工业 CFD 用户最常调整的参数之一

挑战和开放性问题

  1. 亚松弛因子的最优选取 —— 没有通用理论指导,多依赖经验或自适应算法。亚松弛因子 \(\alpha\) 太小 → 收敛慢;太大 → 发散。工业上常采用"先小后大"的策略。
  2. E-factor 与 Patankar 亚松弛的等价性 —— 严格的数学等价性证明需要 \(\alpha\)\(E\) 满足特定关系,工业实现中常被忽略。
  3. 多物理场耦合的亚松弛 —— 流-热-化-力多场耦合时,各物理量的最优亚松弛因子相互影响,需要联合调优。
  4. 网格无关性验证的成本 —— 加密网格 2-3 倍的计算成本是工业 CFD 项目最昂贵的验证步骤之一。
  5. 机器学习辅助的亚松弛因子优化 —— 现代研究开始用 RL(强化学习)自适应选择亚松弛因子,本书未涉及。

个人反思与批判性分析

本章是"小细节"章节,40 页篇幅覆盖了源项处理、亚松弛、残差、收敛判据 4 大主题。从写作特点看:

  • "小但大"的影响 —— 作者特别强调源项处理不当会导致发散、亚松弛选择不当会导致收敛慢或发散。这些"非物理但数值上关键"的细节是工业 CFD 实践中"老手"与"新手"的分水岭。
  • 3 种亚松弛方法的并列展开 —— Patankar 隐式、E-factor、伪时间步法各有优劣,作者给出选择指南。
  • 4 大收敛判据 —— 残差、整体守恒、关键量、网格无关性,是工业 CFD 项目验证解的"金标准"。

但本章也存在不足:

  • 亚松弛因子的"自适应"选择 是工业上的常见需求(简单问题用大 \(\alpha\)、难问题用小 \(\alpha\)),本书未深入。
  • 残差的"物理意义"分析 —— 不同物理量的残差大小不直接可比(压力的残差可能比速度大 10 倍),归一化残差的"绝对阈值"(\(10^{-6}\))在不同物理量上有不同意义,本书未深入。
  • 网格无关性的"网格收敛指数 (GCI)" 是 ASME 2008 提出的标准方法,本书未涉及。
  • 非线性方程的 Newton-Raphson 迭代 是化学反应流、相变流等强非线性问题的标准解法,本书未涉及。

总体而言,本章是"工程必备"的细节章节,与 Patankar 1980、van Doormaal-Raithby 1984 的经典文献形成对标。Moukalled 的优势在于"理论(Taylor 线性化) + 工程(3 种亚松弛方法) + OpenFOAM 实践"三位一体。

重要参考文献

  • [X1] Patankar S.V. (1980) Numerical Heat Transfer and Fluid Flow. Hemisphere. (Patankar 隐式亚松弛原始文献)
  • [X2] van Doormaal J.P., Raithby G.D. (1984) Enhancements of the SIMPLE method for predicting incompressible fluid flows. Numerical Heat Transfer, 7(2): 147-163. (E-factor 方法)
  • [X3] Mallinson G.D., de Vahl Davis G. (1973) The method of the false transient for the solution of coupled elliptic equations. Journal of Computational Physics, 12(4): 435-461. (伪时间步法)
  • [X4] Ferziger J.H., Perić M. (2002) Computational Methods for Fluid Dynamics, 3rd Edition. Springer.
  • [X5] Versteeg H.K., Malalasekera W. (2007) An Introduction to Computational Fluid Dynamics: The Finite Volume Method, 2nd Edition. Pearson.
  • [X6] Roache P.J. (1998) Verification and Validation in Computational Science and Engineering. Hermosa Publishers. (网格收敛性 V&V 标准参考)
  • [X7] ASME (2008) Standard for Verification and Validation in Computational Fluid Dynamics and Heat Transfer. ASME V&V 20-2009. (GCI 标准)
  • [X8] OpenFOAM Foundation (2014) OpenFOAM: The Open Source CFD Toolbox — User Guide. (OpenFOAM relaxationFactors)