区域分解下5点/9点模板与单域计算的数值精度对比
区域分解方案下5点/9点模板的计算精度与结果一致性说明
精度损失相关判断
- 区域分解本身不会天然带来数值精度损失,精度是否受损完全取决于子域边界的邻域信息同步逻辑是否匹配模板的计算要求:
- 对仅使用北、南、西、东四个正交邻域的5点模板,区域分解时只需在各子域边界设置1层虚拟边界(ghost单元),计算前将相邻子域对应位置的边界值同步到这层虚拟单元上,子域内的模板计算流程和无分解的单域计算完全等价,不会引入任何额外误差。
- 对使用全部8个邻域的9点模板,除了正交方向的四个邻域,还需要覆盖东北、西北、东南、西南四个对角方向的邻域值。如果边界同步时只传递正交边的网格值、漏传子域角点对应的对角邻域数据,会因为邻域信息缺失引入明显计算误差;只要同步时把所有模板需要访问的邻域值完整传递到对应虚拟单元位置,同样不会产生额外精度损失。
与单域非分解方案的结果一致性判断
- 边界信息同步逻辑正确的前提下,两类分解方案的计算结果和非分解单域结果可以做到完全一致,以下两种特殊情况不属于方案本身的一致性问题:
- 迭代类计算中如果子域间同步时序出错,比如部分子域使用了上一迭代步的旧边界值参与计算,会产生结果偏差,这属于实现逻辑bug,修正同步时序即可解决。
- 并行计算时的浮点运算顺序和单域串行计算顺序不一致,受浮点运算不满足结合律的特性影响,可能产生机器精度量级(通常为1e-15~1e-12级别)的微小偏差,这类偏差属于浮点计算的固有特性,不会改变结果的数值有效性,也不属于区域分解方案带来的精度损失。
内容的提问来源于stack exchange,提问作者Redshoe
相关产品推荐
相关产品推荐

