Roache的GCI(网格收敛指数)
理论:改变网格估算误差
概述
评审要求“用GCI说明网格依赖性”。做三套网格代入公式就行了吗?
基本如此,但代入公式前后都有要确认的事项。GCI以加密网格时误差有规律地减小(处于渐近范围)为前提,用Richardson外推估计“网格无限细时的值”,把它与当前网格之差乘以安全系数作为误差范围。所以结果振荡或表观收敛阶远离理论值时,得出的数字就失去意义。包括网格比不恒定时的阶数计算,我们一步步来看。
网格比与收敛阶
$N$ 为单元数,下标1为最细网格。$\varepsilon_{21} = \phi_2 - \phi_1$,$s$ 为 $\varepsilon_{32}/\varepsilon_{21}$ 的符号。网格比相等时 $q = 0$,阶数直接求得;不等时迭代求解(Celik等人的步骤)。
外推值与GCI
“加密了网格”还不够
直到20世纪80年代,许多流体论文只写一句“加密网格后结果不变”,却不说明变了多少。1986年美国机械工程师学会的流体工程期刊制定了要求报告数值精度的方针,1994年Roache提出网格收敛指数(GCI),给出了定量报告网格误差的统一方法。2008年Celik等人整理了GCI的实用步骤。如今它已成为ASME V&V 20等验证标准中的标准方法。
算例:三套网格的阻力系数
在三维网格(10万、4.2万、1.8万单元)上求阻力系数。网格比 r21 = 1.335,r32 = 1.326(不恒定),格式为二阶精度。
| 情形 | 细、中、粗 | 收敛阶 | 外推值 | GCI(细) | 判断 |
|---|---|---|---|---|---|
| A 单调 | 1.2231 / 1.2285 / 1.2376 | 1.91 | 1.2158 | 0.75% | 可用 |
| B 振荡 | 1.2231 / 1.2262 / 1.2189 | 3.01(无意义) | — | 0.23%(偏小) | 按振幅±0.30% |
| C 阶数过高 | 1.2231 / 1.2285 / 1.2412 | 3.08 | 1.2193 | 0.38% | 阶数限为2:0.70% |
情形C算出的GCI更小,却要特意用更大的值?
二阶格式得出3.08的阶数,要么网格还没进入误差有规律减小的范围,要么误差恰好相互抵消。直接使用会使外推过头,低估误差范围。所以把阶数限为理论值2,保守地取0.70%。像情形B那样结果上下摆动时,阶数公式本身没有意义,取摆幅的一半(±0.30%)作为不确定度参考。只有两套网格时,假设阶数为2、安全系数取3,算例中为1.69%。做第三套网格的功夫,直接换来更窄的误差范围。
步骤总结
- 以1.3以上的网格比、保持拓扑、各方向同比例加密,生成三级网格。
- 使迭代收敛误差远小于离散误差。
- 对每个评估量确认差值符号(单调或振荡)和收敛阶。
- 阶数大幅偏离理论值时,限制阶数或增加网格。
- 把外推值、GCI和阶数列表报告。
“局部量的GCI乱跳”
某机翼总升力的GCI为漂亮的0.5%,但后缘附近某压力点的值,阶数为负或超过10,无法计算GCI。局部量换网格时测点附近单元布置改变,误差往往不单调减小;积分量(升力、阻力)误差被平均,表现良好。评估局部量时,要相似地加密网格、统一插值方法,必要时做第四套网格。别忘了GCI的可靠性因量而异。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 振荡结果直接代入公式 | 低估误差 | 按振幅评估 |
| 直接使用表观阶数 | 外推过头 | 用理论值限制 |
| 网格比太小(如1.1) | 差值被迭代误差淹没 | 1.3以上 |
| 只加密一个方向 | 阶数紊乱 | 各方向相似加密 |
| 两套网格用Fs 1.25 | 误差范围太窄 | 安全系数3 |
我想了解相关内容。
可以用Richardson外推工具试算阶数与外推。相关页面参考三网格GCI、Richardson外推、解验证、代码验证和ASME V&V 20。