第13章 时间离散:瞬态项(Temporal Discretization: The Transient Term)
作者
本章由 F. Moukalled、L. Mangani 和 M. Darwish 合著。本章是 Ch 8-12 空间离散的"时间维度补充" —— 处理一般守恒方程 (Eq. 3.93) 中瞬态项 \(\partial (\rho \phi) / \partial t\) 的离散化。本章为 Ch 15-16 的 N-S 方程瞬态求解、Ch 19 的 OpenFOAM 完整算例提供时间积分基础。
内容概述
本章 65+ 页篇幅是全书时间离散的"完整工具集",从"有限差分法 (FDM)"到"有限体积法 (FVM)"两套思路展开瞬态项离散化。
§13.1 引言 —— 时间离散与空间离散的"维度差":空间网格是非结构多维的,时间网格是结构 1D 的(\(\Delta t\) 等距或自适应)。FVM 在空间上基于"控制体 + 通量守恒";在时间上可以沿用 FDM 的"泰勒展开 + 多时间层"或 FVM 的"时间元素"。
§13.2 有限差分法 (FDM) 路径 —— 把瞬态项用 Taylor 展开表示为相邻时间层的差分。
- 前向 Euler (Forward Euler) (Eq. 13.6) —— 一阶精度、显式、CFL 条件 \(\Delta t \leq \Delta x / u\) 严格
$\(\frac{\phi_C^{n+1} - \phi_C^n}{\Delta t} + L(\phi_C^n) = 0\)$
优点:实现简单、无需求解线性系统。缺点:CFL 严格、时间步长小。
- 后向 Euler (Backward Euler) (Eq. 13.9) —— 一阶精度、隐式、CFL 条件 \(\Delta t\) 无限制
$\(\frac{\phi_C^{n+1} - \phi_C^n}{\Delta t} + L(\phi_C^{n+1}) = 0\)$
优点:时间步长不受 CFL 限制(绝对稳定)。缺点:每步需解线性系统。
- Crank-Nicolson (Eq. 13.15) —— 二阶精度、隐式
$\(\frac{\phi_C^{n+1} - \phi_C^n}{\Delta t} + \frac{1}{2} L(\phi_C^n) + \frac{1}{2} L(\phi_C^{n+1}) = 0\)$
优点:二阶精度、无条件稳定。缺点:可能产生非物理解(特别是非线性问题),需要"deferred correction"修正。
- 二阶 Runge-Kutta (RK2) (Eq. 13.19-13.21) —— 显式、二阶精度
$\(\phi^* = \phi^n + \Delta t \cdot L(\phi^n)\)$
$\(\phi^{n+1} = \frac{1}{2}(\phi^n + \phi^* + \Delta t \cdot L(\phi^*))\)$
-
Adams-Bashforth —— 多步法,利用前 \(k\) 个时间层的信息达到 \(k\) 阶精度
-
BDF (Backward Differentiation Formula) —— 多步隐式法,1 阶 / 2 阶 / 3 阶 / 4 阶 / 6 阶形式
§13.3 有限体积法 (FVM) 路径 —— 把瞬态项视为"时间维度上的对流项",构造"时间元素",在时间维度上做体积 / 通量积分。
- FVM 时间元素 (Eq. 13.27-13.29) —— 在 \((x, t)\) 平面内构造"时空控制体"
$\(\int_{t_n}^{t_{n+1}} \int_{V_C} \frac{\partial (\rho \phi)}{\partial t} dV dt = \int_{V_C} [(\rho \phi)^{n+1} - (\rho \phi)^n] dV\)$
这与"时间维度的对流通量"等价,因此可以把"时间对流"与"空间对流"统一处理。
- 隐式、显式、Crank-Nicolson 统一形式 (Eq. 13.36)
$\(\frac{(\rho \phi)^{n+1} - (\rho \phi)^n}{\Delta t} = -f \cdot L(\phi^{n+1}) - (1 - f) \cdot L(\phi^n)\)$
其中 \(f\) 是隐式因子:\(f = 0\) 为显式 Euler,\(f = 1\) 为隐式 Euler,\(f = 0.5\) 为 Crank-Nicolson。
- 稳定性的 von Neumann 分析 —— 离散系统的稳定性取决于 \(f\) 与 \(G = 1 - \Delta t \cdot \lambda\)(\(\lambda\) 是空间算子的特征值)的乘积。\(|fG| \leq 1\) 为稳定。
§13.4 非结构网格上的时间离散 —— 1D 情形下时间网格是结构化的;多维情形下每个 cell 有自己的"时间步进"(局部时间步进,Local Time Stepping, LTS)。
§13.5 隐式 / 显式混合策略 —— 在 N-S 方程求解中,隐式处理扩散项 + 显式处理对流项是常见的工程策略(既保证扩散稳定,又减少计算量)。
§13.6 计算指针 —— uFVM 与 OpenFOAM 的实现:
- OpenFOAM 通过 system/fvSchemes 中的 ddtSchemes 配置:Euler(隐式)、CrankNicolson 0.9(CN + 90% 隐式)、backward、localEuler(LTS)
- system/fvSolution 中的 application 控制时间步进方式
§13.7 收敛性诊断 —— 残差下降、时间步长适应、稳态到达判据。
§13.8 闭包 —— 总结时间离散的选择规则。
核心方程与概念
- 一般瞬态方程 (Eq. 13.1)
$\(\frac{\partial (\rho \phi)}{\partial t} + L(\phi) = 0 \tag{13.1}\)$
其中 \(L(\phi)\) 是空间算子(对流 + 扩散 + 源)。
- FVM 时间元素离散 (Eq. 13.27)
$\(\int_{V_C} [(\rho \phi)^{n+1} - (\rho \phi)^n] dV + \int_{t_n}^{t_{n+1}} \int_{V_C} L(\phi) dV dt = 0 \tag{13.27}\)$
- 统一时间离散格式 (Eq. 13.36)
$\(\frac{(\rho \phi)^{n+1} - (\rho \phi)^n}{\Delta t} = -f \cdot L(\phi^{n+1}) - (1 - f) \cdot L(\phi^n) \tag{13.36}\)$
其中 \(f \in [0, 1]\) 是隐式因子。
| \(f\) | 名称 | 精度 | 稳定性 |
|---|---|---|---|
| 0 | 显式 Euler | 1 阶 | CFL 严格 |
| 0.5 | Crank-Nicolson | 2 阶 | 无条件稳定 |
| 1 | 隐式 Euler | 1 阶 | 无条件稳定 |
| \(f > 0.5\) | 加权隐式 | 介于 1-2 阶 | 无条件稳定 |
- 二阶 BDF (BDF2) (Eq. 13.22)
$\(\frac{3 \phi^{n+1} - 4 \phi^n + \phi^{n-1}}{2 \Delta t} = L(\phi^{n+1})\)$
优点:二阶精度、无条件稳定。缺点:每步存储 2 个时间层。
-
Runge-Kutta 4 阶 (RK4) —— 4 阶精度、显式,但每步需 4 次函数求值。
-
CFL 条件 (Forward Euler 情形) (Eq. 13.50)
$\(\Delta t \leq \min_C \frac{\Delta x_C}{|\mathbf{v}_C| + c_C}\)$
其中 \(c\) 是声速(可压缩流情形)。对显式 Euler,CFL 是硬性限制。
关键结论
- FVM 在时间维度上可以采用 FDM 或 FVM 两种思路:FDM 更简洁(泰勒展开),FVM 更"统一"(与空间离散共享"控制体 + 通量"框架)。本书两种都展开。
- 隐式 vs 显式的选择取决于"时间步长" vs "每步计算量"的 trade-off:显式时间步长受 CFL 限制但每步便宜;隐式时间步长无限制但每步需解线性系统。
- Crank-Nicolson 在非线性问题上可能产生非物理解,需要"deferred correction"或"亚松弛"修正。工业 CFD 常用 90% 隐式 + 10% 显式(
CrankNicolson 0.9)以兼顾精度与稳定性。 - BDF2 是工业上常用的二阶隐式时间格式:相比 Crank-Nicolson 在刚性问题上更稳定。
- Local Time Stepping (LTS) 在多维非结构网格上能显著加速稳态求解:每个 cell 独立选择最大允许时间步长,加快收敛。
- OpenFOAM 的
ddtSchemes配置是工业 CFD 用户最常调整的参数之一。Euler是默认稳定选择,CrankNicolson 0.9是工程上"精度 + 稳定性"的最优平衡。
挑战和开放性问题
- 非线性问题的隐式求解 —— 当 \(L(\phi)\) 非线性时,\(\phi^{n+1}\) 出现在方程两侧,需要迭代(如 PISO 算法)。
- 刚性问题的稳定性 —— 当 \(\Delta t\) 远大于物理时间尺度时,显式格式崩溃;隐式格式需要更复杂的时间步进(SDIRK、ESDIRK 等 Runge-Kutta 隐式方法)。
- 多时间尺度耦合 —— 工业 CFD 中常出现"化学反应快 / 流体慢"的多时间尺度问题,需要 IMEX(隐式-显式)方法。
- 保结构时间积分 —— 对 Hamilton 系统(无黏流、可压缩流某些极限情形),需要保能量、保动量的特殊时间格式(如 AVF、Lie 群方法)。
- GPU 加速的时间积分 —— Runge-Kutta 与多步法的 GPU 并行化是研究热点。
个人反思与批判性分析
本章是 FVM 时间离散的"完整工具集",65 页篇幅覆盖了 FDM 与 FVM 两套思路下的全部主流时间格式。从写作特点看:
- "FDM 路径"与"FVM 路径"的并列展开 —— 这是 Moukalled 这本教材的特色:把同一问题的两种处理思路都展示给读者,让读者根据工程需要选择。FDM 路径的优势是"简洁直观"(直接用 Taylor 展开),FVM 路径的优势是"与空间离散统一"(同样的控制体 + 通量框架),后者使整个求解器在代码层面更一致。
- 隐式因子的统一形式 (Eq. 13.36) —— 把显式 Euler、Crank-Nicolson、隐式 Euler 统一为单一公式,便于理解与实现。读者只需调整隐式因子 \(f\) 即可在 1 阶显式、1 阶隐式、2 阶 CN 之间切换,这是工业 CFD 求解器设计中的核心 trade-off 控制。
- CFL 条件的清晰分析 —— 给出显式 Euler 情形的 CFL 判据 \(\Delta t \leq \min_C \Delta x_C / (|\mathbf{v}_C| + c_C)\),帮助读者理解"为什么显式格式时间步长受限制"。CFL 条件是 CFD 求解器设计中的"金科玉律",违反 CFL 会导致数值崩溃。
- 稳定性分析(von Neumann) —— 通过 Fourier 模式 \(e^{i k x}\) 分析离散系统的放大因子 \(G(k)\),判断稳定条件。本节是数值分析标准工具的应用。
- OpenFOAM
ddtSchemes的对应 —— 把抽象的时间格式映射到具体的 OpenFOAM 配置选项。例如CrankNicolson 0.9表示 90% 隐式 + 10% 显式的二阶时间格式,是工业上"精度 + 稳定性"的最优平衡。
但本章也存在不足:
- BDF2 及更高阶 BDF 的稳定性分析不够详细 —— 6 阶 BDF 是工业上常用的"高精度时间格式",但 BDF 阶数 > 2 时对非平滑解会出现"瞬态不稳定"(transient instability),需要"second derivative damping"等技巧修正。本书未深入。
- Runge-Kutta 隐式方法 (SDIRK, ESDIRK) 是刚性问题的标准解法,本书未涉及。这些方法在天体力学、化学反应 CFD 中非常重要。
- 保结构时间积分 是 2010 年代后的研究热点(针对 Hamilton 系统、无黏流),本书未涉及。Hairer 等的 Geometric Numerical Integration 是该领域的标准参考。
- Local Time Stepping (LTS) 的实现细节(如对 \(\Delta t\) 的局部限制、稳定性分析)展开不够。OpenFOAM 的
localEuler是 LTS 的工业实现,但未详细讨论其稳定性保证。 - 双时间步进 (Dual Time Stepping, DTS) 是不可压缩 N-S 方程瞬态求解(Ch 15)的核心技术 —— 用"伪时间步"迭代求解每个物理时间步。本书 Ch 15 会涉及,但本章未深入 DTS 的稳定性与收敛性分析。
- 时间精度 vs 空间精度的匹配 —— 工业 CFD 中常见的"二阶空间 + 一阶时间"的不匹配会导致"时间误差主导"问题,本书未展开匹配原则。
总体而言,本章是 FVM 时间离散的"标准工具集"参考章节,与 Ferziger-Peric、Hirsch 的对应章节形成对标。Moukalled 的优势在于"FDM + FVM 双视角 + 统一形式(隐式因子)"的连贯叙述。本章与 Ch 8-12 空间离散方法一起构成 FVM 数值方法的"完整工具集",是 Ch 15-16 算法、Ch 17 湍流模型、Ch 19 完整算例的前置基础。
从工程实践角度,时间离散格式的选择对 CFD 求解器性能影响巨大:
- 不可压缩流稳态求解(Ch 15) 常用
SteadyState(隐式 + 局部时间步进 LTS),时间精度不重要 - 不可压缩流瞬态求解 常用
CrankNicolson 0.9(90% 隐式 + 10% 显式)或backward(BDF2) - 可压缩流稳态求解 常用
SteadyState+localEuler(LTS) - 可压缩流瞬态求解 常用
backward(BDF2)或CrankNicolson - DNS/LES 瞬态求解(高阶精度)常用 RK3 / RK4 显式(低存储 Runge-Kutta)
读者需要根据具体工程问题选择合适的时间格式,并通过 benchmark 比较精度与计算成本。
重要参考文献
- [X1] Hundsdorfer W., Verwer J.G. (2003) Numerical Solution of Time-Dependent Advection-Diffusion-Reaction Equations. Springer. (时间离散标准参考)
- [X2] Hairer E., Nørsett S.P., Wanner G. (1993) Solving Ordinary Differential Equations I: Nonstiff Problems. Springer. (Runge-Kutta 标准教材)
- [X3] Hairer E., Wanner G. (1996) Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. Springer. (BDF、隐式 RK 教材)
- [X4] Crank J., Nicolson P. (1947) A practical method for numerical evaluation of solutions of partial differential equations of the heat-conduction type. Mathematical Proceedings of the Cambridge Philosophical Society, 43(1): 50-67. (Crank-Nicolson 原始文献)
- [X5] Courant R., Friedrichs K., Lewy H. (1928) Über die partiellen Differenzengleichungen der mathematischen Physik. Mathematische Annalen, 100(1): 32-74. (CFL 条件原始文献)
- [X6] OpenFOAM Foundation (2014) OpenFOAM: The Open Source CFD Toolbox — Programmer's Guide. (OpenFOAM ddtSchemes 实现)
- [X7] Ferziger J.H., Perić M. (2002) Computational Methods for Fluid Dynamics, 3rd Edition. Springer. (时间离散标准参考)
- [X8] Versteeg H.K., Malalasekera W. (2007) An Introduction to Computational Fluid Dynamics: The Finite Volume Method, 2nd Edition. Pearson.
- [X9] Gaitonde A.L., Visbal M.R. (2001) High-order schemes for Navier-Stokes equations: Algorithm and implementation into FDL3DI. AFRL-VA-WP-TR-1998-3060. (高阶时间格式参考)
- [X10] Kennedy C.A., Carpenter M.H. (2003) Additive Runge-Kutta schemes for convection-diffusion-reaction equations. Applied Numerical Mathematics, 44(1-2): 139-181. (IMEX 格式)