所有的数值求解方法均伴随着误差,问题的关键在于我们需要评估误差的量级及其在特定应用中的可接受性。不同场景下的容许误差标准存在非常显著的差异,如在新产品早期设计的优化研究中,定性分析与系统对设计变更的响应至关重要,然而此时可以容忍的误差在其他的应用中也许会导致灾难性的后果。因此,评估求解结果的可靠性与获取解本身同等重要。使用商业代码时,应尽可能聚焦于结果分析与误差估算,尽管这对初学者而言负担较重,但却是资深 CFD 从业者的常规实践。
误差分析应遵循与误差来源分析相反的顺序:先估算迭代误差(单次计算即可完成);其次评估离散误差(至少需在不同网格上进行两次计算);最后分析建模误差(需依赖参考数据,可能涉及多次计算)。为确保后续误差估算的准确性,每一级的误差均应比前一级小一个数量级。
迭代误差估计
由于纳维-斯托克斯方程具有显著的非线性特征,其数值求解过程通常包含双重迭代循环:内层迭代旨在求解特定变量的线性化(或解耦)方程组,而外层迭代则负责更新线性方程组的系数矩阵及右端项。
从计算效率的角度出发,合理设定迭代终止条件至关重要。对于内层迭代而言,过度追求收敛并无必要,因为在非线性耦合方程组完全求解之前,矩阵系数与右端项本身就需要经历多次更新。一般建议在每次系数更新前,仅需将残差降低一个数量级即可;若继续深入迭代,不仅无法减少外层迭代次数,反而会徒增计算耗时。反之,若内层迭代过早终止,则会导致外层迭代次数增加,同样加重计算负担。因此,内层迭代的最优策略需根据具体问题的特性灵活调整。
相比之下,外层迭代的控制更为关键。只有当由矩阵系数和右端项更新所引起的解的变化趋于微小,离散化的非线性方程才算真正求解完毕。经验表明,外层迭代误差(亦称收敛误差)应至少比离散化误差低一个数量级。在多数工程应用中,各变量相对于参考值的相对精度达到三至四位有效数字,通常即可满足实际需求。
针对此类误差的估算方法多种多样,Ferziger 和 Perić(1996)曾对其中三种误差进行了详尽分析,相关内容亦可参阅第 5.7 节。理论研究表明,除迭代初始阶段外,误差的衰减速率与残差及相邻迭代差值的衰减速率保持一致。图 8.9 验证了这一结论:经过若干次迭代后,残差范数、相邻迭代差值范数、估计误差及实际迭代误差的曲线均呈现出平行趋势。需要特别注意的是,对于外迭代而言,相关残差是基于线性化方程的当前解、更新后的矩阵系数及右端项计算所得(即在新内迭代循环开始时计算的残差)。相应解的差值,则可通过计算两个连续循环中末次内迭代的数值之差获得。
基于上述规律,若计算初始时的误差水平已知(例如从零场启动时,误差即为解本身;若初值猜测粗略但合理,则误差略低),则可以确信:当残差(或相邻迭代差值)的范数降低 3 至 4 个数量级时,误差将相应降低 2 至 3 个数量级。这意味着在后续迭代过程中,前两至三位有效数字将保持稳定,解的精度可达 0.01% 至 0.1%。
上述论述主要适用于稳态问题的求解,而在非稳态问题中,迭代误差的估算更为复杂。采用显式方法时,只需确保压力或压力修正方程的求解残差足够小,以充分满足质量守恒方程;通常将残差降低三个数量级即可满足要求。采用隐式方法时,若时间步长极小(如 LES 模拟),则无需对外部迭代设定过于严格的标准。由于相邻时间步间解的变化较小,每步内将残差降低三个数量级可能显得过严,此时仅需 3 次外部迭代便足以更新非线性及耦合效应。在任何新的应用领域中,均应测试不同收敛标准的影响,以确保迭代误差被控制在可接受范围内。
在数值计算中,一种常见的误区是仅依据连续迭代间的差值大小来判断收敛,即当差值低于特定阈值时便停止计算。然而,较小的差值可能仅意味着收敛速度缓慢,实际的迭代误差仍可能维持在较高水平。为准确估算真实误差,需对连续迭代差值进行适当的归一化处理;收敛过程越慢,所需的归一化因子通常越大(参见第 5.7 节)。另一方面,要求差值范数下降三至四个数量级,通常被视为一个更为稳妥的收敛标准。鉴于大多数 CFD 方法中的线性方程求解器均需计算残差,最简便且有效的做法是直接监控残差范数(如绝对值之和或平方和的平方根)。
网格分辨率不同,对迭代误差的容忍度也应有所区别。在离散误差较大的粗网格上,可容许相对较大的迭代误差;而在细网格上,则需采用更严格的残差标准。若收敛判据基于残差总和而非节点平均残差,这一差异便能自动体现:随着节点数量增加,残差总和相应增大,收敛标准也随之自然收紧,从而适配不同网格精度的需求。
在开发新代码或添加新功能时,必须确证求解过程能够收敛至舍入误差水平。无法收敛通常表明程序存在错误,尤其是在边界条件的实现环节。有时,若极限值低于预设的收敛阈值,潜在问题可能被掩盖;而在其他情况下,程序甚至可能提前终止或发生发散。因此,只有在所有新特性经过充分测试与验证后,方可恢复常规的收敛标准。
此外,当试图求解本质上不稳定的流动问题(例如特定雷诺数下圆柱绕流中的冯·卡门涡街)时,迭代过程往往无法收敛。由于每次迭代在数值上可视为一个伪时间步长(详见第 7.2.2.2 节),该过程通常不会直接发散,而是表现为残差的持续振荡。此类现象在几何对称但稳定对称解失稳的情况下尤为常见,典型场景包括扩散器或突扩管流动;其稳定解(含层流解与雷诺平均解)往往呈现不对称特征,且一侧分离区显著大于另一侧。针对此类问题,可通过降低雷诺数、利用对称边界条件仅计算半域流动,或直接采用瞬态计算方法进行排查。
在复杂几何体中,流动不稳定性可能仅局限于求解域的局部区域(如汽车后视镜后方)。此时,残差虽能降至常规收敛标准以下,但若试图进一步降低,便会在某一阶段重新进入振荡状态。这种不稳定性通常较弱,即便开展非稳态计算,力、力矩及总热通量等积分量随时间的变化也不显著,然而稳态计算却始终无法实现真正收敛。
图 12.3 展示了壁面障碍物周围稳态湍流计算中可能遇到的典型问题。在尝试稳态求解时,残差在同一较高水平附近波动,未见下降趋势。若在 2000 次迭代后切换至瞬态模拟,尽管每个新时间步的初始残差仍维持高位且无降低迹象,但步内外部迭代收敛性良好:仅需 5 次外部迭代,动量方程残差即可下降两个数量级以上。结合不对称的速度矢量图可知,障碍物后方尾流具有显著的非稳态特性,这充分表明该流动在物理上不存在稳态解。

图 12.4对比展示了稳态与瞬态模拟中障碍物所受阻力及升力的变化特征。在稳态计算中,阻力系数虽围绕某一数值波动,但该值显著低于瞬态模拟结果;两种情形下的升力虽均在零值附近波动,但稳态计算的振幅约为瞬态计算的两倍。呈现图表的核心目的在于警示 CFD 用户:当稳态计算的残差出现振荡且幅度超出常规收敛标准时,表明控制方程并未得到有效求解。此时,不应试图通过变量可视化或对振荡力取平均值来强行解读结果。唯有切换至瞬态模拟,才能确保在每个时间步结束时获得具有物理意义的控制方程解。在此基础上,方可对力或其他积分参数的振荡进行平均处理(如评估平均阻力或传热系数),或开展提取振荡频率、计算均方根值等深入分析。

在CFD仿真实践中,无论是细化网格还是将离散格式从低阶切换至高阶,收敛困难都是常见问题。这一现象的根源往往在于数值误差与物理不稳定性的相互作用:当流动本身的不稳定性较弱时,低阶格式(如一阶迎风)引入的数值扩散反而能提供额外阻尼,掩盖真实的流动特征并促使迭代收敛至稳态。然而,随着网格加密或精度提升,这种人为阻尼减弱,原本被抑制的物理不稳定性便暴露出来。特别是与流动分离相关的不稳定性,例如机翼吸力面上的小范围分离区,通常只有在网格足够精细时才会显现。
针对此类收敛问题,需根据计算类型进行区分诊断。若在稳态计算中残差持续振荡,但在瞬态计算的每个时间步内外部迭代均能顺利收敛,这通常表明流动本质上具有非定常特性,此时应放弃稳态假设,转而采用非稳态方法进行模拟。反之,若在瞬态模拟中每个时间步内的外部迭代均无法收敛,则需排查以下三类潜在原因:(i) 时间步长设置过大;(ii) 欠松弛因子取值过高;或 (iii) 模拟配置存在缺陷,这涉及网格质量、边界条件设定及流体属性定义等基础环节。
注:本文内容取自《Computational Methods for Fluid Dynamics》 12.2.2节。
”
(完)

本篇文章来源于微信公众号: CFD之道








评论前必须登录!
注册