ASME V&V 20 验证度量标准
理论与物理
什么是验证指标
老师,验证指标具体计算什么?如果只是看仿真和实验是否一致,直接计算误差百分比不就可以了吗?
问得好。确实很多人只看“仿真值与实验值相差百分之几”。但仅凭这个是不够的。为什么呢?因为实验数据和仿真都存在不确定性。
例如,假设实验测得的应力是100 MPa。仿真结果是105 MPa。误差5%,这样不行吗?但如果实验的测量精度是$\pm8$ MPa呢?如果仿真的网格依赖性有$\pm3$ MPa呢?那5 MPa的差异可能就在不确定性范围内,实际上或许可以说“是一致的”。
原来如此……也就是说,不仅需要误差的大小,还需要一个机制来判断这个误差是否是“有意义的差异”。
没错。ASME V&V 20(计算流体动力学与传热学验证与确认标准)正是将这个判断框架标准化的产物。验证指标是指,在考虑双方不确定性的基础上,定量评估仿真结果与实验数据一致程度的指标。
比较误差 E 的定义
具体是用什么公式计算呢?
起点是比较误差 E(Comparison Error)。这个很简单:
其中 $S$ 是仿真结果(Simulation outcome),$D$ 是实验数据(experimental Data)。
因为是带符号的差值,所以如果仿真比实验大则$E > 0$,小则$E < 0$。如果想用“相对误差”,有时会使用$E/D$,但在ASME V&V 20的基本框架中,更多使用基于绝对值的$E$。
这里我明白了。但按刚才的说法,只看这个$E$本身是没有意义的,对吧?
是的。仅凭$E$无法判断“这个差异是否显著”。所以接下来要计算验证不确定性 $u_\text{val}$,并与$E$进行比较。
验证不确定性 $u_\text{val}$
验证不确定性具体是哪些不确定性的总和呢?
ASME V&V 20将不确定性大致分为三类:
- $u_\text{num}$(数值不确定性):网格依赖性、时间步长依赖性、迭代收敛残差等,由离散化引起的不确定性。通常用GCI(网格收敛指数)进行评估。
- $u_\text{input}$(输入参数的不确定性):材料物性值、边界条件、初始条件的测量精度或波动。例如,如果杨氏模量为$210 \pm 5$ GPa,那么$\pm5$ GPa就是输入不确定性。
- $u_\text{exp}$(实验的不确定性):传感器精度、测量位置偏差、环境变动等,实验数据侧的不确定性。
如果假设这些不确定性源相互独立,则可以用RSS(平方和的平方根)进行合成:
平方和的平方根,这和误差传播时的思路是一样的呢。
正是如此。和GUM(测量不确定度表示指南)的思路相同。但需要注意两点。第一,如果不确定性源之间存在相关性,则需要添加相关项。第二,这里所说的不确定性通常以标准不确定度($k=1$,约68%置信区间)处理,但有时也会用95%置信区间($k=2$)处理,因此在报告中必须注明使用的是哪一种。
各不确定性成分的具体评估方法
- $u_\text{num}$的评估:在三个或更多网格级别上求解,应用Richardson外推法。GCI = $F_s \cdot |(\hat{f}_\text{fine} - \hat{f}_\text{coarse})/\hat{f}_\text{fine}| / (r^p - 1)$。安全系数$F_s$通常为1.25(三水平外推时)或3.0(两水平时)。
- $u_\text{input}$的评估:使用灵敏度系数法($u_\text{input}^2 = \sum_i (\partial S/\partial x_i)^2 u_{x_i}^2$)或蒙特卡洛法进行评估。参数较多时,拉丁超立方采样效率较高。
- $u_\text{exp}$的评估:根据GUM,合成Type A(统计评估:重复测量的标准偏差)和Type B(系统评估:校准证书、传感器规格书)。
判定标准:$|E|$ vs $u_\text{val}$
得到$E$和$u_\text{val}$后,如何决定“合格/不合格”呢?
判定很简单。ASME V&V 20的基本思路如下:
- 当 $|E| \leq u_\text{val}$ 时:比较误差落在不确定性范围内。在此条件下,无法区分仿真与实验的差异是模型误差所致还是不确定性所致。可以判断为验证成功。
- 当 $|E| > u_\text{val}$ 时:存在无法用不确定性解释的差异。即存在模型形式误差(model form error)。需要改进模型。
请稍等。$|E| \leq u_\text{val$这个条件,如果不确定性很大,岂不是什么都“合格”了?
问得尖锐!确实如此,这正是V&V 20重要思想的关键点。$|E| \leq u_\text{val}$并非证明“仿真是正确的”,而是意味着“在当前的知识水平(不确定性大小)下,无法检测出模型误差的存在”。
因此,验证的质量由$u_\text{val}$的大小决定。为了减小不确定性,需要不断努力进行更精密的实验、使用更精细的网格、获取更准确的物性值。
💡 直观理解:以射击靶为例,$E$相当于“子弹偏离中心多少”,$u_\text{val}$相当于“靶子的大小”。如果子弹击中靶子($|E| \leq u_\text{val}$),则枪法合格。但如果靶子直径有1米,谁都能击中。要证明枪法好(模型的精度),就需要击中更小的靶子。
面积指标(Area Metric)
$E$和$u_\text{val}$的比较是针对每个点的评估吧。如果响应是分布的情况怎么办?比如整个温度分布的一致性。
很好的视角。这种情况下使用的就是面积指标(Area Validation Metric)。这是Ferson等人(2008)提出的方法,比较仿真结果和实验数据各自的累积分布函数(CDF)。
其中$F_S(y)$是仿真结果的CDF,$F_D(y)$是实验数据的CDF。
$d_\text{area}$取值为0或正数,如果两个CDF完全一致,则$d_\text{area} = 0$。这个指标的优点在于:
- 反映分布形状(不仅是平均值,还包括波动、偏斜等)
- 可以将多个响应量汇总为一个数值
- 易于设定阈值(例如:若$d_\text{area} < 0.1$则合格)
例如,在汽车碰撞试验中比较加速度时间历程时,可以将每个时刻的值视为样本构建CDF,然后用面积指标进行统一评估。
CDF的面积差,原来如此。比逐点比较更容易把握整体情况。
u-pooling法
如果有多个验证点——例如10个测量点或5种条件下的实验——如何进行综合评估呢?
解决这个问题的方法是u-pooling法(Ferson & Oberkampf, 2009)。思路如下:
- 在每个验证点$i$,构建实验数据$D_i$的CDF $F_{D_i}$
- 确定仿真值$S_i$在该CDF上的位置:$u_i = F_{D_i}(S_i)$
- 如果模型完美,$u_i$应服从$[0, 1]$上的均匀分布
- 将收集到的$\{u_1, u_2, \ldots, u_n\}$的CDF与标准均匀分布$U[0,1]$的CDF进行比较
如果这个$u_i$显著偏离均匀分布,就证明模型存在系统性偏差。例如,如果$u_i$整体偏向0,则可知“仿真存在系统性低估”;如果偏向1,则是“系统性高估”。
在实际工作中,通常使用Kolmogorov-Smirnov检验(KS检验)或Anderson-Darling检验来统计检验偏离均匀分布的程度。
也就是说,可以把不同条件下的结果汇总起来,判断“这个模型整体上怎么样?”。真是非常方便的方法。
可靠性指标(Reliability Metric)
作为验证指标的另一种形式,还有可靠性指标:
$$ r = P(|S - D| \leq \delta_\text{req}) $$其中$\delta_\text{req}$是工程要求(容许误差),$r$表示“仿真满足要求的概率”。当$S$和$D$中任意一个或两者都具有概率分布时,可以进行基于可靠性的判定。这在航空航天等有“故障概率$10^{-6}$以下”严格要求的领域非常有效。
数值解法与实现
不确定性的量化方法
理论我明白了。但实际中$u_\text{num}$和$u_\text{input}$这些,具体怎么得出数值呢?有规范的操作步骤吗?
关于$u_\text{num}$,最广泛使用的是Richardson外推法 + GCI。我们来整理一下步骤:
- 在三个或更多网格密度级别(粗、中、细)上求解同一问题。设代表性网格尺寸为$h_1 > h_2 > h_3$。
- 设定细化比 $r = h_1 / h_2$(通常$r \approx 1.3\sim2.0$)。
- 求表观收敛阶数$p$:
这里$f_1, f_2, f_3$分别是粗、中、细网格下的解值。然后计算GCI(网格收敛指数):
安全系数$F_s = 1.25$(三水平外推时)。这个$\text{GCI}_\text{fine}$就是数值不确定性$u_\text{num}$的估计值。
用三个网格求解,根据收敛方式估计“距离真解有多远”,是这样吧。
与蒙特卡洛法的组合
$u_\text{input}$这边怎么处理呢?如果输入参数有10个甚至20个,全部求灵敏度系数似乎很麻烦……
没错,参数多的时候灵敏度系数法计算成本很高。这时蒙特卡洛法就派上用场了。步骤如下:
- 设定每个输入参数的概率分布(正态分布、均匀分布等)
- 使用拉丁超立方采样(LHS)等方法生成$N$个样本集($N = 100 \sim 10{,}000$左右)
- 对每个样本执行仿真,得到响应的分布
- 响应的标准偏差就是$u_\text{input}$
但是,如果一次仿真需要几个小时(如CFD),执行$N=1000$次是不现实的。因此,在实际应用中,通常会引入代理模型(响应面法、克里金法、PCE:多项式混沌展开)来降低计算成本。
通过灵敏度分析进行贡献度分解
当$u_\text{val}$太大而无法使用时,我想知道“减少哪个不确定性最有效”。
这时就变得重要的是不确定性贡献度分解(Uncertainty Budget)。查看$u_\text{val}^2 = u_\text{num}^2 + u_\text{input}^2 + u_\text{exp}^2$中各项的比率。
例如在实际项目中,如果$u_\text{val} = 12.5$ MPa:
| 不确定性成分 | 值 [MPa] | 平方贡献率 | 对策 |
|---|---|---|---|
| $u_\text{num}$ | 3.2 | 6.6% | 网格细化 |
| $u_\text{input}$ | 11.0 | 77.4% | 提高材料试验精度 |
| $u_\text{exp}$ | 5.0 | 16.0% | 测量系统校准 |
| $u_\text{val}$(合成) | 12.5 | 100% | — |
在这个例子中,$u_\text{input}$占主导地位(77.4%),因此即使细化网格,整体不确定性也几乎不会下降。由此可知,提高材料物性值的精度是性价比最高的方法。能够做出这样的判断,正是V&V 20框架的优势所在。
实践指南
验证计划的制定方法
老师,实际进行验证时,第一步应该做什么?直接计算$E = S - D$就可以吗?
那是初学者常犯的错误。首先必须制定验证计划。ASME V&V 20推荐使用“PIRT(现象识别与排序表)”,按以下顺序推进:
- 确定验证对象的SRQ(系统响应量):比较什么?最大应力?温度分布?流速剖面?笼统地说“结果是否一致”是不行的。必须明确具体的响应量。
- 设定所需的精度要求:确定$\delta_\text{req}$(容许误差)。没有这个就无法判断“合格”。
- 制定实验计划:在哪些参数范围内,测量多少次。选择能够充分减小不确定性的测量方法。
- 先完成代码的校核(Verification):在验证之前,先完成代码校核和解的校核。在存在数值错误的状态下进行验证是没有意义的。
なった
詳しく
報告