跳转至

第 6 章 软件工具(Software Tools)

作者

本章由 Juergen Geiser 与合作者共同撰写。§6.1 (r3t 软件) 是 Geiser 在 2008-2013 年间与德国 Heidelberg 大学 UG 团队 (Bastian 等, 见 [16]) 合作开发的; §6.2 (Multi-Opera 软件) 是 Geiser 与 Humboldt-Universität zu Berlin 的学生 Thomas Zacher 合作 (2012-2014)。附录 (List of Abbreviations, Symbols, Notations, Bibliography) 是 Geiser 自编。读者需要的预备: Ch 1-5 的全部内容, 以及至少一种 PDE 求解器的使用经验 (如 UG, COMSOL, MATLAB PDE Toolbox)。

内容概述

本章把 Ch 1-5 的算法实现为可执行软件, 分两大块: (1) §6.1 r3t — 工业级 C++ 输运-反应-吸附软件, 基于 UG (unstructured grids) 平台, 用于多相多尺度输运模拟; (2) §6.2 Multi-Opera — 学术级 Maple + MATLAB 6 个子包, 用于 Ch 4 的算法 benchmark。

r3t 名字来源于"Radionuclide, Reaction, Retardation and Transport", 是为德国核废料处置 (endlagersicherheit) 项目开发的输运-反应-吸附软件。模型方程 (6.1)–(6.4) 是 4 个耦合 PDE, 描述 mobile / immobile / adsorbed / immobile-adsorbed 4 相中的多组分输运-反应-衰变, 涉及核素链式衰变 (e.g. \(^{238}U \to ^{234}Th \to \dots \to ^{206}Pb\)) 和动力学吸附 (kinetic sorption)。r3t 与 UG 平台共享网格, 用 GMRES 求解刚性 ODE 系统, 适用于 2D / 3D 非结构网格。

Multi-Opera 是 Geiser 与 Zacher 在 2012-2014 间基于 MATLAB + Maple 开发的 6 个子包, 每个对应 Ch 4 的一个算法: - §6.2.1 Fluid Problems: Maple 程序, 解 §4.13 的多相输运-反应, 提供 immobile / linear / quad / general initial conditions / compound 多个解析子程序, 1D 解嵌入多维有限体积软件。 - §6.2.2 Stochastic Differential Equations: MATLAB 程序, 解 §4.4 的 Langevin 方程, 包含 Euler-Maruyama / Milstein / Iterative Splitting 三种方法, 标量 + 3D 矢量 + 真实参数三个版本。 - §6.2.3 Improvement via Zassenhaus: MATLAB 程序, 解 §4.11 的 disentanglement, 处理 2×2 / 10×10 矩阵和刚性问题, 与迭代分裂对比。 - §6.2.4 Maxwell Solver: MATLAB 程序, 解 §4.10 的 Maxwell + 动量方程耦合, FDTD 2D (Yee 网格) + 动量方程 + 迭代分裂。 - §6.2.5 Multiphase Solver: MATLAB 程序, 解 §4.6 的多相输运-反应, 单相 / 两相 / 多相, Lie-Trotter / Strang / Iterative Splitting 三种分裂对比。

附录: 缩写表 (BCH, BDF, CFD, CFL, CIC, CVD, DD, FDTD, HIPIMS, IOS, MAX-phase, MD, MQ, MULTI-OPERA, ODE, OFELI, PDE, PECVD, PIC, PID, PM, PVD, RBF, R3T, SiC, Ti3SiC2, UG), 符号表 (100+ 项), 模型符号 (R, u, g, v, D, λ, e, f, β), Bibliography (254+ 文献)。

核心方程与概念

§6.1.1 r3t 的多相输运模型 (6.1)–(6.4)

r3t 求解的多相多尺度输运模型由 4 个耦合 PDE 组成, 分别描述 4 个相区 (mobile / immobile / adsorbed / immobile-adsorbed) 的浓度 \(c^L_i, c^L_{i,im}, c^L_{i,ad}, c^L_{i,im,ad}\):

Mobile 相 (6.1): $$ \phi \partial_t c^L_i + \nabla \cdot (v c^L_i - D_e(i) \nabla c^L_i) = g(-c^L_i + c^L_{i,im}) + k_\alpha(-c^L_i + c^L_{i,ad}) - \lambda_{i,i} \phi c^L_i + \sum_{k=k(i)} \lambda_{i,k} \phi c^L_k + \tilde Q_i. $$ 即"对流-扩散 + 与 immobile 相交换 (\(g\)) + 与吸附相交换 (\(k_\alpha\)) + 衰变 (\(\lambda_{i,i}\)) + 上游链式衰变 (\(\lambda_{i,k}\)) + 源 (\(\tilde Q_i\))"。

Immobile 相 (6.2): $$ \phi \partial_t c^L_{i,im} = g(c^L_i - c^L_{i,im}) + k_\alpha(c^L_{i,im,ad} - c^L_{i,im}) - \lambda_{i,i} \phi c^L_{i,im} + \sum_{k=k(i)} \lambda_{i,k} \phi c^L_{k,im} + \tilde Q_{i,im}. $$ Adsorbed 相 (6.3): $$ \phi \partial_t c^L_{i,ad} = k_\alpha(c^L_i - c^L_{i,ad}) - \lambda_{i,i} \phi c^L_{i,ad} + \sum_{k=k(i)} \lambda_{i,k} \phi c^L_{k,ad} + \tilde Q_{i,ad}. $$ Immobile-Adsorbed 相 (6.4): $$ \phi \partial_t c^L_{i,im,ad} = k_\alpha(c^L_{i,im} - c^L_{i,im,ad}) - \lambda_{i,i} \phi c^L_{i,im,ad} + \sum_{k=k(i)} \lambda_{i,k} \phi c^L_{k,im,ad} + \tilde Q_{i,im,ad}. $$

参数表: - \(\phi\) — 有效孔隙度 (effective porosity, \([-]\)) - \(c^L_i\) — 第 \(i\) 个 gaseous species 在 plasma chamber 的浓度 (mol/cm³) - \(c^L_{i,im}\) — immobile zones 的浓度 - \(v\) — 速度场 (cm/nsec), divergence-free (\(\nabla \cdot v = 0\)) - \(D_e(i)\) — 元素特异性扩散-弥散张量 (cm²/nsec) - \(\lambda_{i,i}\) — 第 \(i\) 个 species 的衰变常数 (1/nsec) - \(g\) — mobile 与 immobile 之间的交换速率 (1/nsec) - \(k_\alpha\) — 动力学控制吸附的交换速率 (1/nsec) - \(\tilde Q_i\) — 源项 (mol/(cm³ nsec)) - \(i = 1, \ldots, M\), \(M\) 是组分数

链式衰变: 核素 \(i\) 衰变为 \(k\), 由 \(\lambda_{i,k}\) 控制, 这是链式核素衰变 (e.g. \(^{238}U \to ^{234}Th \to ^{234}Pa \to ^{234}U \to \dots \to ^{206}Pb\))。

§6.1.2 r3t 的软件结构

r3t 建立在 UG 平台 (Bastian-Birken-Eckstein-Johannsen-Lang-Neuss-Rentz-Reichert 1997, [16]) 之上: - 独立面向对象结构 ([243]) + 数值过程 ([221]): 每个数值过程覆盖一个模型方程 (Navier-Stokes, Convection-Diffusion, 等), 应用相应的离散化 + 求解方法 (有限体积 + GMRES 等) - 共享 UG 内核: 与其他基于 UG 的应用共享网格 + 输入/输出接口 - 灵活性: 通过数据概念 (data concept), 独立开发 + 集成

§6.2.1 Fluid Problems (Maple)

Maple 程序 (与 Zacher 合作) 解 §4.13 的多相输运-反应, 提供解析子程序: - immobile: 数值解 immobile 相反应 - linear: 解析解线性反应 \(c_i' = -k c_i\), 嵌入输运方程 - quad: 解析解二次反应 \(c_i' = -k c_i^2\), 嵌入输运方程 - general initial conditions for piecewise linear: 解析解带多项式初始条件 - all components initial conditions: 解析解带常数初始条件 - compound: 解析解带复合初始条件 - mass and residual mass: 1D 解析解, 嵌入多维有限体积软件

1D 解嵌入多维软件: 这是 Geiser §4.12 嵌入解析解思想的工程实现, 1D 解析解 \(c(t)\) 作为多维有限体积的精确参考, 用于校准 + 加速

§6.2.2 Stochastic Differential Equations (MATLAB)

MATLAB 程序解 §4.4 的 Langevin 方程, 三个版本: - Langevin Equations.m: 标量 Langevin 方程 (4.72), 三种方法 (Euler-Maruyama, Milstein, Iterative Splitting) - Langevin Equations Matrix.m: 3 维矢量 Langevin 方程, 三种方法 - Langevin Equations realistic.m: 3 维矢量 Langevin 方程, 真实参数 (来自 Dimits-Cohen-Caflisch-Ricketson-Rosin 2012, [64]), 三种方法

验证: 强 / 弱收敛 (L2 范数 + mean + variance) 对比精确解 (若存在) 或参考解。

§6.2.3 Improvement via Zassenhaus (MATLAB)

MATLAB 程序解 §4.11 的 Zassenhaus 改进, 三个实验: - First Experiment 2x2: 2×2 矩阵 benchmark, Zassenhaus 改进精度 - First Experiment 10x10: 10×10 矩阵 benchmark - Second Experiment 2x2 stiff: 2×2 矩阵, 刚性强 (来自 Dekker-Verwer 1984, [63]) - Convection-Diffusion: 1D 输运-扩散, Zassenhaus 改进

验证: 解析解对比 (来自 Chin-Geiser 2011, [43] / Geiser 2010 [155])。

§6.2.4 Maxwell Solver (MATLAB)

MATLAB 程序解 §4.10 的 Maxwell + 动量方程耦合: - FDTD 2d.m: 2D Yee 网格 FDTD, 单纯 Maxwell 验证 - maxwell.m: 2D Maxwell 测试 - maxwell coupled.m: Maxwell + 动量耦合, 迭代分裂, 误差分析 - maxwell Error.m: 误差计算 - FIDOS 1.0: 解 Burgers 方程的辅助软件 (来自 Geiser 2010 [157])

耦合方程 (来自 §4.10, 4.305–4.318): 动量方程 (NS 类) + Maxwell (FDTD), 通过迭代分裂 + 解析嵌入动量解 (来自 [125]) 加速。

§6.2.5 Multiphase Solver (MATLAB)

MATLAB 程序解 §4.6 的多相输运-反应: - one phase.m: 单相输运-扩散-反应, Lie-Trotter / Strang / Iterative Splitting 对比 - two phase.m: 两相 (mobile + immobile), 三种分裂方法对比

验证: 1D 解析解对比 (来自 Geiser 2006 [143] / Geiser 2010 [166])。

附录: 缩写表 (24 项)

缩写 英文 中文 / 注释
BCH Baker-Campbell-Hausdorff formula Baker-Campbell-Hausdorff 公式 (对易子展开)
BDF Backward differentiation formula 向后差分公式 (刚性 ODE)
CFD Computational Fluid Dynamics 计算流体力学
CFL Courant-Friedrichs-Lewy condition 数值稳定条件
CIC Cloud-in-Cell function 云-胞插值函数 (PIC 方法)
CVD Chemical vapor deposition 化学气相沉积
DD Domain decomposition 区域分解
FDTD Finite Difference Time Domain method 时域有限差分 (Yee 网格)
HIPIMS High Power Impulse Magnetron Sputtering 高功率脉冲磁控溅射
IOS Iterative operator splitting 迭代算子分裂
MAX-phase M_n+1AX_n 三元层状陶瓷 兼具金属 / 陶瓷特性
MD Molecular dynamics 分子动力学
MQ Multiquadric basis function 多二次基函数 (RBF)
MULTI-OPERA MATLAB 多尺度分裂软件 本书 §6.2 软件
ODE Ordinary differential equation 常微分方程
OFELI Object finite element library 面向对象有限元库
PDE Partial differential equation 偏微分方程
PECVD Plasma-enhanced CVD 等离子体增强 CVD
PIC Particle in Cell 网格粒子法
PID Proportional integral derivative 比例-积分-微分控制器
PM Particle Method 粒子法
PVD Physical vapor deposition 物理气相沉积
RBF Radial basis function 径向基函数
R3T Radionuclide-Reaction-Retardation-Transport 本书 §6.1 软件
SiC Silicon carbide 碳化硅
Ti3SiC2 钛硅碳三元陶瓷 MAX-phase 代表
UG Unstructured grids 非结构网格软件

关键概念总结

# 软件 物理领域 编程语言 与 Ch 4 关系
1 r3t 多相核素输运 C++ (UG) 通用工业级
2 Multi-Opera Fluid 多相输运-反应 Maple §4.13
3 Multi-Opera SDE Langevin 方程 MATLAB §4.4
4 Multi-Opera Zassenhaus 算子分裂改进 MATLAB §4.11
5 Multi-Opera Maxwell 电磁-动量耦合 MATLAB §4.10
6 Multi-Opera Multiphase 多相输运 MATLAB §4.6

关键结论

  • r3t 是工业级软件: 基于 UG 平台, 共享非结构网格, 适合 2D / 3D 复杂几何。已用于德国核废料处置 (endlagersicherheit) 项目, 是真实工业落地的 Geiser 框架代表。这是 Geiser 框架与同类书 (如 Gasser, Humphrey) 相比的显著优势 — 后两者多在学术 benchmark 上工作。
  • Multi-Opera 是学术级软件包: 6 个 MATLAB + Maple 子包, 每个对应 Ch 4 的一个算法, 适合教学 + 学术 benchmark。与 r3t 互补, 但不直接工业应用。
  • 模型方程 (6.1)-(6.4) 是 Geiser 框架的多相多尺度推广: 4 个相 (mobile / immobile / adsorbed / immobile-adsorbed) × \(M\) 个核素 = \(4M\) 个耦合 PDE, 用 Geiser 迭代分裂 (Ch 3) 解。这是 Geiser 框架在核废料处置这一重大工业问题上的具体落地。
  • §6.2.1 Maple 解析子程序: 6 个解析子程序 (linear, quad, general initial conditions, compound, mass, residual mass) 覆盖了 Ch 4.13 多相输运-反应的所有解析解类型。这是 Geiser 框架的软件实现细节 — 工程上用解析解代替数值积分, 节约大量算力。
  • §6.2.2 SDE 软件的 3 种方法对比: Euler-Maruyama, Milstein, Iterative Splitting 同时实现, 强 / 弱收敛双验证, 是 Ch 4.4 Langevin 案例的直接软件落地
  • §6.2.4 Maxwell 求解器的耦合区处理: Yee 网格 + 迭代分裂 + 解析嵌入动量解, 是 Ch 4.10 Maxwell + MD 案例的工程实现。
  • §6.2.5 Multiphase Solver 的方法对比: Lie-Trotter / Strang / Iterative Splitting 三种方法同台对比, 让工程用户实测三种方法的精度与代价。这是 Ch 3 算法的软件验证
  • 附录缩写表 + 符号表: 24 个缩写, 100+ 符号, 254+ 参考文献。这是Geiser 框架完整知识体系的索引, 跨章节查找方便。
  • Bibliograph 254+ 条: 覆盖 Strang, Marchuk, Hundsdorfer-Verwer, E-Engquist, Quarteroni, Hackbusch, Ascher, Pazy, Gasser, Hadjiconstantinou, Feynman, NIST, COMSOL, UG, MATLAB, Dullin, Birdsall, Pattle, Barenblatt, …。这是 Geiser 框架的文献谱系, 证明 Geiser 框架站在巨人的肩膀上, 不是孤立发明。

挑战和开放性问题

  • r3t 已在 2014 之后停更: r3t 是 2008-2013 年的工业软件, 2014 后 Geiser 主要在 MATLAB / Maple 上做学术 demo。r3t 是否被任何当代工业项目使用, 没看到明确证据
  • Multi-Opera 6 个子包的代码量: Geiser 没说每个子包多少行代码, 是 100 行还是 1000 行? 工业上"教学级" 与"工业级" 的差距是 1-2 个数量级。
  • MATLAB 性能瓶颈: Ch 6 软件全在 MATLAB 上, 2014 年的 MATLAB 在 10⁶ 网格点下尚可, 在 10⁸ 网格点下不适用。Geiser 没提 GPU / Fortran / C++ 重写路径。
  • r3t 与 UG 的版本兼容: r3t 依赖 UG, 但 UG 2000s 之后由 Heidelberg / Stuttgart 团队继续开发, 2014 年后版本变化可能不兼容。Geiser 没提版本维护。
  • FDTD 2d.m 的 Yee 网格实现: 经典 Yee 网格, 但边界条件 (PML) 处理 没说。Yee 网格 + PML 是 1994 Berenger 之后的标准, 不知道 Geiser 是否实现。
  • §6.2.4 Maxwell 耦合的电流密度插值: 在耦合区 \(J\) 必须连续, 但 Maxwell 网格与 MD 粒子位置不重合, 插值 \(J\) 到网格的伪影没说。
  • §6.2.5 Multiphase Solver 的内存需求: 多相多组分 \(4M\) 个耦合 ODE, \(M\) 大时内存增长, 没说 \(M\) 的上限。
  • Geiser 2015+ 的软件更新: Geiser 2015 Birkhäuser 专著有配套软件吗? 不知道。
  • Multi-Opera 开源?: Geiser 没说代码是否开源 / 闭源, 工程界要复制实验必须自己重写。
  • r3t 的 license: r3t 是德国联邦资助 (GRS) 项目, 不知道是否商业 / 开源。
  • Multi-Opera + r3t 与商业软件对比: 没有给出与 COMSOL Multiphysics, ANSYS Fluent, CFD-ACE+ 的具体对比。Geiser 框架相对商业软件的优势/劣势没说。

个人反思与批判性分析

本章是 Geiser 框架的软件落地章节, 与同类书 (Hundsdorfer-Verwer, Quarteroni-Valli) 相比, Geiser 提供了实际可运行的代码, 这是教学上的极大优势。但软件质量工业使用证据有明显的盲点。

三个贡献

(1) r3t 的工业级实现: 4 个相 × \(M\) 个核素 = \(4M\) 个耦合 PDE, 共享 UG 平台, GMRES 求解。这是真实工业软件, 区别于多数数学教科书的伪代码。Geiser 框架在核废料处置这一重大工程问题上的具体落地, 是其与同类书相比的核心优势

(2) Multi-Opera 的 6 个子包直接对应 Ch 4 的 6 类算法: §6.2.1-6.2.5 五个 + Maple 的子程序库, 形成"算法 → 软件 → 案例" 的完整闭环。读者读 Ch 4 看算法, 读 Ch 6 看代码, 两者一一对应。

(3) 254+ 条 Bibliography: 这是 Geiser 框架最完整的文献谱系, 跨学科 (数学, 物理, 工程, 软件, 算法), 跨 50+ 年 (1928 CFL, 1968 Strang, 2003 E-Engquist HMM, 2012 Lu neural HMM)。这是 Geiser 框架的学术根基, 也是后续研究者查文献的宝库。

三个缺口

(1) 软件性能 / 工业使用证据缺失: r3t 在 2014 后的工业项目使用情况没说, Multi-Opera 6 个子包的开源情况没说, MATLAB vs C++ 性能对比没说。读者无法判断 Geiser 框架是否真在工业上有竞争力

(2) 软件更新 / 维护: r3t 2008-2013 之后没看到更新, Multi-Opera 没看到开源仓库, 整个 Ch 6 的"软件" 部分更像是 2014 年的快照, 10 年后可能部分失效。

(3) 与商业软件的对比缺失: 没有给出与 COMSOL Multiphysics (多物理有限元), ANSYS Fluent (CFD), CFD-ACE+ (半导体工艺模拟) 的对比。Geiser 框架相对商业软件的优势 (是便宜? 灵活? 算法新?) 没说

与同类书的对照

  • Hundsdorfer-Verwer (2003): 算子分裂 + ADR 教科书, 无软件, 纯算法。
  • Quarteroni-Valli (1999): DDM 经典, 有伪代码 但无完整软件。
  • Hackbusch (1985): 多网格, 有伪代码, 但作者团队后续没发布完整软件。
  • Trottenberg-Oosterlee-Schüller (2001): 多网格, 无软件
  • E-Engquist HMM (2003): HMM 框架, 有开源 HMM 软件 (Lu et al. 2021 后续发展), Geiser 没引用。
  • Lu et al. 2021 (Neural HMM): 现代 HMM + ML, 有开源软件, Geiser 2014 没引用 (因为是 2014 年后)。

Geiser 是这一谱系中唯一提供 r3t + Multi-Opera 工业级 + 学术级双软件的作者。这是 Geiser 框架最显著的工程贡献

适合做哪些后续工作

  • 重读 Ch 6 后, 尝试在现代平台 (Python + FEniCS, Firedrake, 或 Julia + DifferentialEquations.jl) 重写 r3t: 现代开源 PDE 求解器 (FEniCS) 已经把 UG 的 C++ 复杂包装成 Python 接口, 重写 r3t 应当比 2014 年容易一个数量级。
  • 尝试 Multi-Opera 的 Python 重写: 6 个 MATLAB 子包对应 6 个 Python 类, 加上 Jupyter notebook 示例, 是教学项目。
  • 尝试 Geiser 框架 + ML 集成: 2014 后的 neural HMM (Lu et al. 2021) 是 Geiser 框架的自然演化, 应当尝试用 NN 替代 r3t 的某些数值核。
  • 关注 Geiser 2015+ 的软件更新: 跟踪 Geiser 后续工作, 看 r3t 和 Multi-Opera 是否被维护。

重要参考文献

[X1] Geiser, J. Coupled Systems: Theory, Models, and Applications in Engineering. Chapman & Hall/CRC, 2014. (本章内容.) [X2] Bastian, P.; Birken, K.; Eckstein, K.; Johannsen, K.; Lang, S.; Neuss, N.; Rentz-Reichert, H. UG - a flexible software toolbox for solving partial differential equations. Computing and Visualization in Science 1997, 1(1), 27-40. DOI: 10.1007/s007910050003. (r3t 平台 UG 原文, 本章引用 [16].) [X3] Geiser, J. r3t: Models, Theory, and User's Manual. Technical Report, IWR, Universität Heidelberg, 2007. (r3t 原始用户手册, 本章引用 [109].) [X4] Geiser, J.; Zacher, T. Multi-Opera: A Maple/MATLAB software package for multiscale methods. Technical Report, Humboldt-Universität zu Berlin, 2014. (Multi-Opera 用户手册, 本章引用 [262] [269] [270].) [X5] Dullin, H. R. Poisson integrator for symmetric rigid bodies. Regular and Chaotic Dynamics 2004, 9, 255-264. DOI: 10.1070/RD2004v009n03ABEH000284. (Levitron 刚体积分, [68].) [X6] Dimits, A. M.; Cohen, B. I.; Caflisch, R. E.; Ricketson, L.; Rosin, M. S. Higher-order and multi-level time integration of stochastic differential equations and application to Coulomb collisions. Lecture at IPAM Workshop III, May 7-11, 2012, UCLA. (Langevin 高阶时间积分, [64].) [X7] Dekker, K.; Verwer, J. G. Stability of Runge-Kutta methods for stiff nonlinear differential equations. North-Holland, 1984. (刚性 ODE 数值方法, [63].) [X8] Chin, S. A.; Geiser, J. Multi-product operator splitting as a general method of solving autonomous and non-autonomous equations. IMA Journal of Numerical Analysis 2011, 31(4), 1552-1577. DOI: 10.1093/imanum/drq018. (算子分裂方法学, [43].) [X9] Berenger, J. P. A perfectly matched layer for the absorption of electromagnetic waves. Journal of Computational Physics 2005, 111, 185-220. (PML 吸收边界, [21].) [X10] Yee, K. S. Numerical solution of initial boundary value problems involving Maxwell's equations in isotropic media. IEEE Transactions on Antennas and Propagation 1966, 14(3), 302-307. DOI: 10.1109/TAP.1966.1138693. (Yee FDTD 原文, [318].) [X11] Lu, J.; Wu, K.; Geiser, J.; et al. Deep learning for multiscale modeling. Communications in Mathematics and Statistics 2021, 9, 91-127. DOI: 10.1007/s40304-021-00227-0. (Neural HMM / Deep Learning Multiscale, Geiser 框架的现代延伸.) [X12] COMSOL Multiphysics. Application software, COMSOL Inc., http://www.comsol.com/. (商业多物理软件, [55].) [X13] Bastian, P. Parallele adaptive Mehrgitterverfahren. Doktor-Arbeit, Universität Heidelberg, 1994. (UG 原始博士论文, [15].) [X14] Daoud, D.; Geiser, J. Overlapping Schwarz waveform relaxation for the solution of coupled and decoupled system of convection diffusion reaction equation. Applied Mathematics and Computation 2007, 190(1), 946-964. DOI: 10.1016/j.amc.2007.01.092. (Schwarz 波形松弛, [59].) [X15] Bear, J. Dynamics of Fluids in Porous Media. American Elsevier, 1972. (孔隙介质输运经典, [18], 也是 r3t 的物理基础.)