网格细化比与GCI收敛验证方法
理论与物理
概述 — 什么是网格收敛性验证
老师,网格收敛性验证需要比较几个级别的网格呢? 有人说“要试三个”,为什么两个不行呢?
最少需要三个级别。只比较两个网格的话,只能得出“结果相近所以没问题”的结论。如果有三个,就能估计收敛速度(阶数 p),并通过外推来预测网格尺寸趋于零时的极限解。这就是Richardson外推法,而量化其误差带的就是GCI(网格收敛指数)。
原来如此,两个点只能画直线,但有了三个点就能看出曲线的弯曲趋势,是这样吧。
正是如此。ASME V&V 20(计算流体力学与固体力学的验证与确认指南)也将这种三网格法规定为标准流程。在论文或项目报告中要声明“无网格依赖性”,出示GCI数值已成为国际通用的做法。
网格收敛性验证是定量评估离散化误差、保证解可靠性的V&V流程的核心。其要点可归纳为以下三点。
- 细化比 r — 粗网格与细网格的代表尺寸之比。$r \geq 1.3$(推荐 $r = \sqrt{2} \approx 1.41$)
- Richardson外推法 — 基于三个及以上网格的结果,外推网格尺寸趋于零时的极限解
- GCI — 将离散化不确定性量化为95%置信区间
网格细化比 r 的定义
细化比就是网格细化“倍率”吧? 如果 $r = 2$,就能把单元尺寸减半,看起来很简单。
对于结构网格,$r = 2$ 确实简单,但单元数在3D情况下会变成8倍。计算成本会爆炸式增长。因此ASME V&V 20推荐使用 $r = \sqrt{2} \approx 1.41$。这样单元数只需增加约2.8倍。反之,如果 $r < 1.3$,网格间的差异太小,会被舍入误差淹没,导致观测阶数 $p$ 的估计不稳定。
网格细化比的定义如下。
此处 $h$ 是代表网格尺寸。为确保始终有 $r > 1$,分子取粗网格,分母取细网格。
r 的推荐范围与依据
| $r$ 的值 | 3D单元数增加率 | 判定 |
|---|---|---|
| $r = 2.0$ | $\times 8$ | 理想但计算成本高 |
| $r = \sqrt{2} \approx 1.41$ | $\times 2.8$ | ASME V&V 20推荐 |
| $r = 1.3$ | $\times 2.2$ | 最低要求 |
| $r < 1.3$ | — | 不推荐($p$估计不稳定) |
非结构网格的代表尺寸
结构网格的单元尺寸均匀,所以 $h$ 很明确,但像四面体网格这样的非结构网格,$h$ 该如何定义呢?
最标准的方法是从所有单元体积的平均值反算等效长度。$d$ 是空间维数,2D用面积,3D用体积。
$N$ 是单元数,$V_i$ 是各单元的体积(2D情况下为面积),$d$ 是空间维数(2 或 3)。通过此定义,即使是非结构网格也能获得标量形式的代表尺寸。
那么对于非结构网格,细化比 $r$ 可以从单元数的比例计算出来吗?
是的。如果是各向同性细化,单元数比与 $r$ 的关系如下。
例如,一个3D模型中 $N_{\text{fine}} = 800{,}000$,$N_{\text{coarse}} = 200{,}000$,则 $r = (800{,}000 / 200{,}000)^{1/3} = 4^{1/3} \approx 1.587$,这确保了足够的细化比。
Richardson外推法
Richardson外推法,简单说就是预测“网格无限细化时答案是多少”的方法吧?具体是怎么计算的呢?
离散化解 $f_h$ 相对于真解 $f_{\text{exact}}$ 可以用以下Taylor展开表示。
这里 $p$ 是离散化格式的理论阶数,$g_p$ 是未知系数。忽略高阶项后,可以从三个网格($h_1 < h_2 < h_3$, $f_1, f_2, f_3$)得到外推值。
这里 $r_{21} = h_2 / h_1$,$\hat{p}$ 是从三个解估计出的观测阶数(后述)。
也就是说,对最细网格的结果 $f_1$ 进行进一步修正,使其更接近真解,对吧。
没错。但由于截断了高阶项,外推值只是一个“估计”,并非真值。正因如此,才需要用GCI来量化其不确定性。
观测阶数 p 的计算
当细化比为等比($r_{21} = r_{32} = r$)时,观测阶数 $\hat{p}$ 可直接用下式计算。
$f_1$: 细网格的解,$f_2$: 中网格的解,$f_3$: 粗网格的解。如果 $\hat{p}$ 接近理论阶数 $p_{\text{formal}}$(例如:二阶单元为2),则可以判断解已进入渐近范围。
如果 $r_{21} \neq r_{32}$(不是等比)怎么办? 实际工作中,由于网格划分的限制,很难做到完全等比吧?
问得好。这种情况下无法显式求解,需要通过迭代法(如定点迭代或牛顿法)求解以下非线性方程。
这里 $\varepsilon_{32} = f_3 - f_2$,$\varepsilon_{21} = f_2 - f_1$,$s = \text{sign}(\varepsilon_{32}/\varepsilon_{21})$。通常迭代10次以内即可收敛。
GCI(网格收敛指数)
看GCI的公式里有个安全系数 $F_s$,这是什么意思?
$F_s$ 是为了提高置信度的“保险系数”。Roache的原始论文中,对于两网格法推荐 $F_s = 3$(保守),对于三网格法推荐 $F_s = 1.25$。因为三网格法已经用观测阶数 $\hat{p}$ 验证了外推精度的一致性,所以可以减小安全系数。
细网格侧的GCI($\text{GCI}_{21}^{\text{fine}}$)定义如下。
这里 $\varepsilon$ 是相对误差。
| 方法 | 安全系数 $F_s$ | 含义 |
|---|---|---|
| 两网格法 | 3.0 | 因 $\hat{p}$ 未知,故保守 |
| 三网格法 | 1.25 | $\hat{p}$ 已估计,相当于95%置信区间 |
我想看个具体例子。比如三个网格的最大应力分别是 248.3 MPa、251.6 MPa、260.1 MPa,该怎么算?
设 $f_1 = 248.3$(细),$f_2 = 251.6$(中),$f_3 = 260.1$(粗),$r = \sqrt{2}$。
$\varepsilon_{21} = 251.6 - 248.3 = 3.3$,$\varepsilon_{32} = 260.1 - 251.6 = 8.5$
$\hat{p} = \ln(8.5/3.3) / \ln(\sqrt{2}) = \ln(2.576)/0.3466 \approx 2.73$
$\varepsilon = (251.6 - 248.3)/248.3 = 0.01329$
$\text{GCI}_{21}^{\text{fine}} = 1.25 \times 0.01329 / (1.414^{2.73} - 1) = 0.01661 / 1.634 \approx 0.0102 = 1.02\%$
也就是说,对于细网格的结果 248.3 MPa,可以报告其存在 $\pm 1.0\%$ 的离散化不确定性。
渐近范围检查
是否进入渐近范围,可通过以下指标确认。
如果该值接近1(参考范围:$0.95 \leq \text{AR} \leq 1.05$),则解处于渐近范围内,GCI和Richardson外推法的可靠性高。若大幅偏离1,则可能网格还不够细,或者模型中包含奇异点。
如果没有进入渐近范围该怎么办?
有三个选择。(1) 添加更细的网格重新计算,(2) 将评估点远离奇异点(例如:使用截面平均应力而非应力集中点应力),(3) 使用更高阶的单元以更快进入渐近范围。在实际工作中,(2) 通常是性价比最高的。
数值解法与实现
三网格法的步骤
基于ASME V&V 20的三网格法标准步骤如下。
- 生成三个级别的网格: 以细化比 $r \geq 1.3$(推荐 $\sqrt{2}$)生成粗、中、细三个级别。保持网格拓扑结构一致
- 在相同条件下执行分析: 边界条件、材料、求解器设置完全统一
- 提取评估量: 记录关注的物理量(最大应力、平均温度、压力损失等)的值 $f_1, f_2, f_3$
- 计算代表网格尺寸 $h_1, h_2, h_3$: 结构网格用单元尺寸,非结构网格用前述体积平均法
- 计算观测阶数 $\hat{p}$
- 计算Richardson外推值 $f_{\text{ext}}$
- 计算 $\text{GCI}_{21}^{\text{fine}}$ 和 $\text{GCI}_{32}^{\text{coarse}}$
- 计算渐近范围检查 AR: 接近1则OK
步骤我明白了。但“保持相同拓扑结构”这一点,对于非结构网格来说很难吧?
确实,对于非结构网格,很难做到严格意义上的拓扑一致。因此,“将全局网格尺寸统一乘以 $1/r$”是更现实的做法。局部细化应在三个级别中应用于相同的区域和相同的比例,统一网格生成的“配方”。
非均匀细化比的扩展
当 $r_{21} \neq r_{32}$ 时,观测阶数 $\hat{p}$ 需要通过迭代法求解前述非线性方程。在实际应用中,以下定点迭代法足以获得足够的精度。
初始值 $\hat{p}_0$ 用等比情况下的公式计算,迭代至 $|\hat{p}_{k+1} - \hat{p}_k| < 10^{-6}$。
多个评估量的处理
有可能出现最大应力的GCI是1%,但挠度的GCI是5%这样的情况吧?应该报告哪个结果呢?
全部报告才是正确答案。GCI是针对每个评估量独立计算的,不能说“整个模型的GCI是1%”。局部量(应力集中点的应力)和整体量(总反力、最大挠度)的收敛性完全不同。通常局部量的收敛更慢。最佳实践是至少评估三个与设计决策直接相关的量,并报告各自的GCI。
实践指南
网格收敛性验证的工作流程
| 步骤 | 作业内容 | 判定基准 |
|---|---|---|
| 1. 网格生成 | 粗、中、细三个级别($r \geq 1.3$) | $r$ 的确认、网格质量指标(纵横比 < 5等) |
| 2. 分析执行 | 相同边界条件、求解器设置下运行三个工况 | 所有工况正常收敛 |
| 3. $\hat{p}$ 计算 | 观测阶数的计算 | $0 < \hat{p} \leq p_{\text{formal}} + 1$ |
| 4. GCI计算 | $\text{GCI}_{21}^{\text{fine}}$ 的计算 | 与设计裕度的整合性 |
| 5. AR 检查 | 渐近范围的确认 | $0.95 \leq \text{AR} \leq 1.05$ |
| 6. 报告 | 记录GCI值和网格信息 | 第三方可复现的详细程度 |
常见错误与对策
有前辈咨询说“做了网格收敛性验证,但GCI达到了50%”,可能是什么原因呢?
GCI过大的原因主要有以下三点。
- 在奇异点处评估 — 应力集中点(缺口尖端、载荷点)的理论解会发散到无穷大,因此无论网格多细都不会收敛。对策:在远离奇异点的位置评估,或使用截面平均应力
- 细化比太小 — 如果 $r < 1.1$,舍入误差和离散化误差难以区分。对策:确保 $r \geq 1.3$
- 分析未收敛 — 非线性分析中,如果求解器的收敛判定过于宽松,各网格的解本身就不准确。对策:将残差设置得足够小
奇异点的问题,在实际工作中非常重要啊。拐角处的应力是无穷大的,所以无论网格多细,值都会一直增大……
是的。CAE新手常犯的错误就是“用最大应力做收敛性验证”。特别是对于没有圆角的尖锐边缘模型,最大应力会随着网格细化单调递增,永不收敛。评估量的选择决定了网格收敛性验证的成败。
报告书的记载事项
报告网格收敛性验证结果时,必须包含以下信息。
- 各网格的单元数、代表尺寸 $h$
- 细化比 $r_{21}$, $r_{32}$
- 评估量(物理量名称、位置、方向)
- 各网格评估量的值 $f_1, f_2, f_3$
- 观测阶数 $\hat{p}$
- Richardson外推值 $f_{\text{ext}}$
- $\text{GCI}_{21}^{\text{fine}}$(百
なった
詳しく
報告