一致性与收敛:原理与诊断验证
一致性回答的是"把 h 缩小一半,离散算子与连续算子的差是否按 2p 缩小";收敛回答的是"目标量本身是否随 h 趋向同一个极限"。两者不等价:一致的格式可以因为自由面缺损或粒子无序而不收敛,看起来收敛的算例也可能只是各项误差恰好抵消。下面把 SPH 的离散误差拆成核近似截断项与粒子求积误差两部分,给出可手算的系数,并说明怎样用加密序列把阶数测出来。验收一个无网格解的可信度,靠的不是"残差曲线看起来平了",而是三件事:误差随分辨率的单调收敛、由加密序列外推出的极限值、以及外推值与解析解或基准数据的差额。三者齐备才能给出量化区间;缺任一项,报告里的有效数字就只是打印精度。下面给出可照抄的诊断流程与两次完整手算。
核近似的二阶矩决定主截断项
把 f(x′) 在 x 处做 Taylor 展开,一阶项因 ∫x′Wdx′=0 而消失,剩下
⟨f⟩(x)=∫Ωf(x′)W(x−x′,h)dx′=f(x)+2σ2∇2f(x)+O(h4),σ2=∫∣x′∣2Wdx′
σ2 是核的二阶矩,它把核的形状与误差系数直接绑定。一维三次样条核可以手算:写成 W=(2/3h)f(q)、q=∣x∣/h,则 σ2=h232∫02q2f(q)dq,其中
∫01(q2−1.5q4+0.75q5)dq=0.15833,∫120.25q2(2−q)3dq=0.09167
两项之和为 0.25,于是 σ2=h2/6≈0.1667h2,主截断项为 σ2∇2f/2≈0.0833h2∇2f。取 h=0.012 m、Δx=0.010 m,该系数为 1.20×10−5 m2,比 h2=1.44×10−4 m2 小 8.3%。
这一步的工程含义很直接:核近似本身是二阶一致的,h 从 0.024 m 减到 0.012 m 时积分近似误差应降到 1/4。若实测只降到 1/2,问题必定出在粒子求和或边界,而不是核函数本身——此时换核纯属浪费。
粒子求积把二阶拉回一阶
把积分换成 ∑jVjfjWij 会引入求积误差 Equad:
j∑VjfjWij=fi+2σ2∇2fi+Equad,Equad={O(Δx2),O(Δx),规则点阵无序分布
规则点阵上 W 的对称性使一阶矩 ∑jVj(xj−xi)Wij 逐项抵消,求积误差与核偏差同为二阶;粒子位置一旦随机抖动,一阶矩不再为零而是一个量级为 Δxd/2 的随机量,误差退化为 O(Δx)。这正是 Quinlan 等(2006)所说的"无序破坏一致性":把粒子摆整齐不是审美问题,而是精度问题。
以 L=1 m 的一维域为例,Δx=0.010 m 给出 N=100 个粒子,h=1.2Δx=0.012 m,支持半径 rc=2h=0.024 m,内部粒子单侧有 rc/Δx=2.4 个邻居,全支持域约 5 个。这个邻居数在一维够用,但同样的 h/Δx 放到三维只有约 58 个,精度与稳定性余量都更紧。
故障模式与判定试验
| 现象 |
根因 |
判定试验 |
| 加密后 $L_2$ 误差不降 |
只缩 Δx 未缩 h,有效分辨率没变 |
固定 h/Δx=1.2,比较 Δx 减半前后的误差 |
| 阶数停在 0.9~1.0 |
粒子无序使求积误差退化为 O(Δx) |
换成规则点阵重跑同一算例,看阶数是否回到 2 |
| 常数场出现虚假梯度 |
用 ∑jVjAj∇iWij 而非差值形式 |
令 A≡const,检查 $\max |
| 内部正常、表面偏低 |
自由面核截断使 Si≈0.78 |
沿法向绘制 Si,检查表面值是否低于 0.95 |
| 时间步减半结果仍漂移 |
空间一致性不足,时间误差掩盖了它 |
按 Δt∝Δx 做空间时间联合加密 |
| 三套分辨率误差几乎重合 |
实际粒子数没变,只是换了文件名 |
打印每套的粒子数、平均邻居数与 h |
| 观测阶为负或跳动 |
解在加密时非单调,GCI 前提不成立 |
画误差-分辨率曲线,检查单调性与符号 |
| GCI 仅 0.1% 但与实验差 5% |
模型误差主导,与离散无关 |
固定分辨率只换闭合关系或边界条件,看差额是否保留 |
| 加密后压力噪声反而变大 |
粒子无序度随加密上升 |
记录 σN/Nmean 与 h/Δx 的实际值 |
| 时间步减半结果变化超 1% |
时间积分误差主导 |
固定 Δx 只减 Δt,比较目标量 |
诊断链从"换一套分辨率能否复现"开始
最省事的证伪手段是只改分辨率、其余一切不动,看目标量是否朝同一方向单调逼近。若 Δx 从 0.02 m 减到 0.01 m 时目标量反而跳了 3%,那么后续所有"调参改善"都不必谈,先查粒子分布、自由面处理和时间步。
需要固定的量:核函数、h/Δx、边界粒子层数、Δt/Δx、初始粒子排布方式。任何一项跟着分辨率一起变,测到的就是混合效应。诊断记录里至少要留三套网格的粒子数、平均邻居数、h 值、时间步与目标量。
两个可对照的基准算例
平面 Poiseuille 流:半宽 H=0.05 m、ν=1.0×10−6 m2/s、ρ=1000 kg/m3,驱动压力梯度 dp/dx=−0.12 Pa/m。解析最大流速
umax=2μH2dxdp=2×1.0×10−3(0.05)2×0.12=0.15 m/s
用 H=0.05 m、每侧 10 层粒子(Δx=0.005 m)算得的中心线速度应落在 0.148∼0.152 m/s,超出即说明壁面黏性或边界粒子层数有问题。该算例的优势是解光滑、无自由面,专门用来单独检验一致性和壁面处理。
Taylor-Green 涡:u=−Ucos(2πx/L)sin(2πy/L)、v=Usin(2πx/L)cos(2πy/L),取 U=1.0 m/s、L=1.0 m、ν=0.01 m2/s,动能按 e−2νk2t 衰减,k=2π/L=6.283 rad/m,衰减率 2νk2=0.790 s−1。t=1.0 s 时动能应剩 e−0.790=0.454。这个算例对压力噪声和粒子无序最敏感:同一分辨率下,规则点阵与 0.3Δx 抖动点阵的 t=1 s 动能保留率若相差超过 2%,就是分布问题而非格式问题。
收敛阶必须用加密序列测
判断一致性是否真的成立,最直接的办法是算一系列 Δx 并拟合阶数:
p=ln(Δx1/Δx2)ln(e1/e2)
两组对照数据说明问题。规则点阵下 $L_2误差随\Delta x=0.040,0.020,0.010,0.005\ \text{m}依次为6.7\times10^{-2},1.7\times10^{-2},4.2\times10^{-3},1.05\times10^{-3},相邻阶数1.98,2.02,2.00;把同一算例的初始位置加上0.3\Delta x的均匀随机抖动后,误差变为8.1\times10^{-2},4.1\times10^{-2},2.05\times10^{-2},1.02\times10^{-2},阶数掉到0.98,1.00,1.01$。两组唯一的差别就是粒子分布。
import math
def order(e, dx):
return [math.log(e[k] / e[k + 1]) / math.log(dx[k] / dx[k + 1])
for k in range(len(e) - 1)]
dx = [0.040, 0.020, 0.010, 0.005] # m
e_rg = [6.7e-2, 1.7e-2, 4.2e-3, 1.05e-3] # 规则点阵
e_ds = [8.1e-2, 4.1e-2, 2.05e-2, 1.02e-2] # 位置抖动 0.3*dx
print(order(e_rg, dx)) # [1.98, 2.02, 2.00]
print(order(e_ds, dx)) # [0.98, 1.00, 1.01]
一致性由截断误差的幂次定义
设 L 是连续算子,Lh 是它在粒子上的离散对应。若对足够光滑的场 f 存在与 h 无关的常数 C,使
∥Lhf−Lf∥∞≤Chp,h→0,Δxh=const
则称格式具有 p 阶一致性。式中的"h/Δx 固定"是定义的一部分而不是实现细节:只缩 Δx 而保持 h 不变,测到的既不是旧格式的阶数,也不是新格式的阶数。SPH 的 Lh 由两步串联——核近似把点值换成支撑域内的加权积分,粒子求和再把积分换成有限和——两步误差量级不同,必须分开评估。
用制造解把误差变成可测的数
有解析解时用解析解,没有时用制造解(MMS):先选一个光滑函数作为精确解,把它代回控制方程算出源项,再把源项加进求解器。取
u(x,t)=sin(L2πx)cos(T2πt),L=1.0 m, T=1.0 s, ν=1.0×10−6 m2/s
源项为 S=∂tu−ν∂xxu,量纲为 s−1。这样得到的误差里没有模型误差,只剩离散误差,才能拿来判阶。若 MMS 测到二阶、而工程算例只有一阶,差异必然来自边界或自由面,不是格式本身。
把时间误差与空间误差分开
无网格法常把 Δt 与 Δx 绑定成 Δt∝Δx,一旦结果不对,无法判断是空间还是时间。分离办法是固定 Δx,只把 Δt 减半再减半:某溃坝算例在 Δx=0.01 m 下,Δt=5.7×10−5 s 与 2.85×10−5 s 的最大爬高相差 0.04%,说明时间误差已可忽略;若相差超过 1%,则应先修时间积分或重新核算 CFL 系数,再谈空间精度。
def richardson(f1, f2, f3, r=2.0, Fs=1.25):
import math
p = abs(math.log(abs((f3 - f2) / (f2 - f1)))) / math.log(r)
fex = f3 + (f3 - f2) / (r ** p - 1.0)
gci = Fs * abs((f3 - f2) / f3) / (r ** p - 1.0)
return p, fex, gci
p, fex, gci = richardson(0.862, 0.851, 0.8483)
print(f"p={p:.2f} f_ext={fex:.5f} m/s GCI={gci*100:.2f}%")
# p=2.03 f_ext=0.84742 m/s GCI=0.13%
自由面是一致性最先失守的位置
支撑域被边界切断后,归一化条件 ∑jVjWij=1 不再自动成立。记 Si=∑jVjWij,用一维三次样条核、h=1.2Δx 手算:内部粒子的邻居距离为 0,±Δx,±2Δx,对应 q=0,0.8333,1.6667,W 值分别为 0.6667/h、0.2616/h、0.00617/h,求和为 1.2022/h,乘 Vj=Δx=0.8333h 得 Si≈1.0018。自由面粒子只剩一侧三个邻居,求和为 0.9346/h,Si≈0.779,比内部低 22%。
这 22% 的缺失直接表现为表面密度亏损和虚假表面张力,也解释了"内部二阶、表面一阶"为何是自由面 SPH 的典型收敛行为。判定方法是沿壁面法向画 Si 剖面:内部应落在 [0.99,1.01],表面若低于 0.95 就必须引入边界粒子层或核修正。
Richardson 外推与 GCI 给出量化区间
设三套分辨率满足 Δx2=Δx1/2、Δx3=Δx2/2,加密比 r=2。观测阶数与外推值为
p=lnr1lnf2−f1f3−f2,fext=f3+rp−1f3−f2
再用 Roache 的网格收敛指数给出不确定度带:
GCI32=Fsrp−1∣(f3−f2)/f3∣,Fs=1.25
Fs=1.25 用于三套及以上网格;只有两套网格时习惯取 Fs=3。手算一次:某二维算例的断面平均速度在 Δx=0.04,0.02,0.01 m 下为 f1=0.862、f2=0.851、f3=0.8483 m/s,则 ∣f3−f2∣=2.70×10−3、∣f2−f1∣=1.10×10−2,比值 0.2455,ln0.2455=−1.4046,除以 ln2=0.6931 得 p=2.03。外推 fext=0.8483−2.70×10−3/(22.03−1)=0.8483−8.75×10−4=0.84742 m/s,而 GCI =1.25×(2.70×10−3/0.8483)/3.084=1.29×10−3,即 0.13%。
结论应写成"0.8474 m/s,离散不确定度 0.13%",而不是把 f3 的六位数字照抄。若 p 算出来是负数或非整数且远离预期阶,说明解在加密过程中非单调,GCI 公式的前提不成立,此时要回到误差-分辨率曲线本身。
参考资料
- Monaghan J.J., Smoothed Particle Hydrodynamics, Annual Review of Astronomy and Astrophysics, 30: 543-574, 1992.
- Quinlan N.J., Basa M., Lastiwka M., Truncation error in mesh-free particle methods, International Journal for Numerical Methods in Engineering, 66(13): 2064-2085, 2006.
- Liu G.R., Liu M.B., Smoothed Particle Hydrodynamics: A Meshfree Particle Method, World Scientific, 2003.
- Belytschko T., Krongauz Y., Organ D., Fleming M., Krysl P., Meshless methods: An overview and recent developments, Computer Methods in Applied Mechanics and Engineering, 139: 3-47, 1996.
- Dilts G.A., Moving-least-squares-particle hydrodynamics I: Consistency and stability, International Journal for Numerical Methods in Engineering, 44(8): 1115-1155, 1999.
- Violeau D., Fluid Mechanics and the SPH Method: Theory and Applications, Oxford University Press, 2012.
- Roache P.J., Perspective: A method for uniform reporting of grid refinement studies, Journal of Fluids Engineering, 116(3): 405-413, 1994.
- Celik I.B., Ghia U., Roache P.J., Freitas C.J., Coleman H., Raad P.E., Procedure for estimation and reporting of uncertainty due to discretization in CFD applications, Journal of Fluids Engineering, 130(7): 078001, 2008.
- Richardson L.F., The approximate arithmetical solution by finite differences of physical problems, Philosophical Transactions of the Royal Society A, 210: 307-357, 1911.
- Monaghan J.J., Smoothed Particle Hydrodynamics and Its Diverse Applications, Annual Review of Fluid Mechanics, 44: 323-346, 2012.
- Liu M.B., Liu G.R., Smoothed particle hydrodynamics (SPH): an overview and recent developments, Archives of Computational Methods in Engineering, 17: 25-76, 2010.