第 5 章 · 网格、稳定性与 CFL 条件
格式选好了还不行,还必须回答两个问题:网格怎么切?时间步长能取多大?这一节的 CFL 条件是 CFD 里出场率最高的不等式,必须吃透。
网格的分类与生成
- 结构网格:点有规则的 $(i,j)$ 下标,差分格式好写,但复杂外形难贴合。
- 非结构网格:任意三角形/四面体,几何适应性强,配合有限体积法使用。
- 贴体坐标:用坐标变换把物理空间的弯曲网格变成计算空间的正方形,方程多出度量项。
网格质量三要素:正交性(影响精度)、光滑性(变化平缓,减少虚假折射)、疏密(梯度大的地方加密)。
CFL 条件:信息不能跑得比格式快
显式格式在一时间步内,数值信息的传播距离不能超过物理信息的传播距离。对一维对流方程:
$\nu$ 叫柯朗数。直观图像:$t^n$ 时刻 $u_i$ 的依赖域(格式能"看到"的网格点范围)必须包含物理依赖域(特征线扫过的范围),否则真实解的信息还没到,格式就已经算出答案——必然错。
稳定性分析:冯·诺依曼方法
把误差写成傅里叶模态 $e_i^n = A^n e^{ik x_i}$,代入格式,得到放大因子 $A(k)$。稳定的条件是所有模态 $|A| \le 1$。以迎风格式为例:
可推出 $|A| \le 1$ 当且仅当 $0 \le \nu \le 1$。热传导方程 $\partial u/\partial t = \alpha u_{xx}$ 的显式格式同理给出 $d = \alpha\Delta t/\Delta x^2 \le 1/2$——扩散项对时间步的限制更苛刻($\Delta x^2$ 出现在分母)。
老师的提醒
- 多维问题 CFL 取对角线传播:$\Delta t \le \frac{\Delta x}{|u| + |v| + a}$(含声速 $a$),不要用一维结论硬套。
- 网格加密一倍,显式格式的时间步要减半,计算量翻四倍以上——这是隐式格式存在的根本理由。
自检
- 推导迎风格式的冯·诺依曼放大因子。
- 为什么扩散问题的显式时间步长限制比对流问题苛刻?
- Lax 等价定理的前提是什么?
更深一层:CFL 条件是"因果律"的数值化身
CFL 条件常被当成一个"公式",但它其实是一条物理因果律的数值翻译:在一个时间步内,数值依赖域必须覆盖物理依赖域。物理依赖域由特征线决定(对流问题的特征线斜率 $dt/dx = 1/c$),数值依赖域由格式模板决定(显式格式一步只能"看到"相邻网格点)。两者相乘得出的不等式 $\nu = c\Delta t/\Delta x \le 1$ 的几何含义一目了然:时间步内特征线扫过的距离不能超过一个网格。一旦违反,格式"看不到"真正决定解的信息,只能瞎猜——发散是必然的赏罚。
更深一层:对线性方程,CFL + 相容性 = 收敛(Lax 等价定理)。这三件套的关系值得做成一张卡片:相容(格式趋近方程,$\Delta t, \Delta x \to 0$ 时截断误差消失)、稳定(误差有界)、收敛(数值解趋近真解)。相容好查(泰勒展开),稳定好查(冯·诺依曼分析),收敛难查(真实非线性解)——于是工程上永远用"验证前两者"代替"证明第三者"。这套替代逻辑是非线性问题数值分析的基石。
推导细读:冯·诺依曼分析五步走
以迎风格式为例完整走一遍,之后任何格式你都能五分钟自查稳定性: 1. 设误差模态:$e_j^n = A^n e^{ik x_j}$(把误差分解成傅里叶波,逐个追踪振幅 $A$); 2. 代入格式:$u_j^{n+1} = u_j^n - \nu(u_j^n - u_{j-1}^n)$ 得
3. 算模长:$|A|^2 = (1-\nu+\nu\cos\theta)^2 + \nu^2\sin^2\theta$($\theta = k\Delta x$); 4. 求条件:$|A| \le 1$ 对所有 $\theta$ 成立 ⟹ 化简得 $0 \le \nu \le 1$; 5. 读物理:$\nu = 1$ 时 $|A| = 1$(误差不增),$\nu = 0.5$ 时高频误差被强烈阻尼($|A|$ 在 $\theta = \pi$ 处最小)——迎风不仅稳,还顺手把网格尺度的噪声抹掉(这是好事也是"糊"的来源)。
二维扩散、三时间层格式、含有源项的格式——全都套这五步,只是代数繁简不同。练熟一遍,稳定性分析就从"黑魔法"变成"手艺"。
在真实世界里:时间步长是工业仿真的第一杠杆
商业软件里时间步长的选择直接决定项目进度:某阀门外流场,$\Delta t = 1\ \mu s$ 时算一个工况要 3 天,$\Delta t = 5\ \mu s$(在 CFL 允许内、配合亚松弛)只要 14 小时。工程师的时间步决策链:先按 CFL 算理论上限 → 打 7 折留安全余量 → 看残差与监测量是否平稳 → 平稳则逐步加大试探。另一条工程出路是局部时间步(定常问题中每个网格用各自的最大允许步长)——收敛加速数倍,代价是失去时间精度,只适用于"只要定常解"的场合。这些操作手册级知识,全部生长在本节的两个公式上。
常见误区与辨析
- "时间步小一定准":小步长只保稳定;精度由空间离散主导(空间误差常比时间误差大一个量级),无限减步长只是浪费。
- "隐式格式就不用管 CFL":隐式无条件稳定指误差不爆炸,但时间精度仍受 CFL 制约(算非定常激波时隐式步长过大照样把激波算糊)。
- "网格加密只影响空间精度":显式格式加密空间网格一倍,时间步必须减半,总计算量翻四倍以上——网格研究的成本账要这么算。
专题深入:Lax 等价定理的证明轮廓与"适定性"前提
Lax 等价定理(相容 + 稳定 ⟺ 收敛)是数值分析的基石定理,它的证明轮廓值得勾勒:正向(相容 + 稳定 → 收敛):误差方程 = 格式的齐次版 + 截断误差驱动项;稳定性让齐次演化的放大有界;相容性让驱动项趋零——两者相乘,误差趋于零。反向:收敛 ⟹ 稳定(否则误差爆炸);收敛 ⟹ 相容(不一致的格式收敛到别的方程的解)。定理的前提"适定的线性初值问题"常被忽略:不适定问题(反时间热传导)或强非线性问题(湍流)不在它的保护范围——数值收敛在这些场合需要额外的物理或正则化论证。
数学细节展开:冯·诺依曼分析的推广——矩阵形式与能量法
冯·诺依曼分析在方程组上变成矩阵放大因子:$A^n$ 变成矩阵的幂,稳定性条件是谱半径 $\rho(G) \le 1$(必要)或 $\|G\| \le 1 + O(\Delta t)$(充分)。谱半径条件只是必要条件——矩阵非正规时 $\rho \le 1$ 可以暂态放大(伪谱的瞬态增长,流体力学转捩研究的核心工具)。能量法($L^2$ 范数不增的代数证明)是冯·诺依曼分析的推广,它处理边界条件与变系数问题——von Neumann 只能管均匀网格与周期边界,能量法没有这个限制。稳定性分析的三层工具:傅里叶(von Neumann,最快)→ 矩阵/谱半径(方程组)→ 能量法(边界条件)——按问题复杂度逐级升级。
工程案例细节:CFL 调优的"渐进试探"实战
真实 CFD 项目的 CFL 调优实录:起步 0.5(保守)→ 残差平稳下降 3 个量级 → 提到 0.8 → 残差降速变缓但不振 → 提到 1.0 → 出现低频振荡 → 退回 0.8 并加隐式残差光顺 → 收敛。每一步的代价是重跑收敛史——CFL 调优是"试探-观察-调整"的循环,不是一次性计算。经验规则:显式格式 CFL 起步 0.5,隐式格式可到 10-1000(按问题刚性),湍流大分离问题 CFL 要低(时间精度限制)。CFL 是"收敛速度"与"稳定性"的旋钮,不是"精度"旋钮——这个区分在调参时经常被搞混。
例题
一维对流方程 $u_t + 300\,u_x = 0$,网格 $\Delta x = 1\ \mathrm{mm}$。显式格式允许的最大时间步是多少?若改为二维并叠加声速 $a = 340\ \mathrm{m/s}$ 的传播,估计 $\Delta t$ 上限。
解答
一维 CFL:$\Delta t \le \frac{\Delta x}{|c|} = \frac{0.001}{300} \approx 3.33\times10^{-6}\ \mathrm{s} = 3.3\ \mu s$。
二维(含声速的信息传播):最大波速取 $|c| + a = 640\ \mathrm{m/s}$,按对角传播
- 要点:时间步由"最快的波走一格"决定;粘性显式项还会叠加 $\Delta t \le \Delta x^2/(4\nu)$ 的限制,通常更苛刻。