残差监测 — CAE术语解说
残差监测
CFD收敛的判断指标
CFD计算中出现的"残差(Residual)"表示什么?
残差监测的理论基础
残差的物理含义
"残差"是在求解器日志中经常看到的"Residual",当不收敛时计算会停止。但"残差"物理上表示什么?
很好的问题。物理上讲,残差表示控制方程"平衡破裂"的量化度量。例如,非定常热传导的控制方程离散化后,每个单元(或节点)的形式如下:
求解器通过求解温度T使该方程成立。但在迭代计算过程中,代入仓促的温度T*不会使右边等于零。这种"与零的偏差"就是残差R。
换句话说,能量守恒定律被违反的程度及其"误差"大小就是残差值。
"误差"但温度误差[K]与日志中出现的"1e-3"这样的无量纲数单位不同。这样的无量纲数是如何计算的?
完全正确。生残差R具有[W/m³]等物理单位。软件通过"初始残差"规范化进行无量纲化监控。在Ansys Fluent中,第一次迭代(第0步)计算出的各方程残差规模被作为基准,后续迭代残差除以它。即:
其中范数∥·∥通常为所有计算单元残差绝对值之和。因此日志中的"1e-3"表示"初始残差已缩小到千分之一"。
连续性方程、动量、能量方程等出现多个残差。哪个最重要?例如非压缩流计算中连续性残差不下降时该怎样?
根据情况而定,但在非压缩流中"连续方程(质量守恒)残差"最重要。因为它在压力与速度耦合中发挥关键作用,若不收敛整个流场失去物理意义。特别使用SIMPLE族方法时,连续方程残差通过"压力修正方程"求解而降低。若降不到1e-3以下,很可能是网格质量问题(特别是畸变大的单元)或压力速度耦合设置问题(如Rhie-Chow插值)。
残差监测的数值计算方法
求解器内部的残差计算
求解器具体在何时用什么数据计算残差?逐迭代读取所有单元数据不会很耗时吗?
确实有成本,但对收敛判定是必须的。典型CFD求解器(OpenFOAM、Fluent)的流程如下:一次迭代(如一次压力速度耦合)完成后,利用最新变量场(p、U、T等)重新评估控制方程的离散形式。计算所有单元的邻接单元流量和源项,检查方程平衡。"平衡破裂"的总和作为残差集计。为降低成本,某些求解器可设置残差计算频率(如每5次迭代计算一次)。
"残差范数"有L1范数、L2范数、最大值范数等。如何区分使用?收敛判定的严格程度会改变吧?
商用软件几乎全用L1范数(绝对值和)或最大值范数(无穷范数)。Ansys Fluent默认使用L1范数,将所有单元残差绝对值相加,反映整体"误差总量"。而Abaqus/Standard等结构分析求解器多用不平衡力最大值范数,因为任何位置的大不平衡力都会破坏整体平衡。L2范数(平方和平方根)敏感度过高,易受局部数值噪声影响,不是收敛判定主流。
非线性问题中残差每迭代振荡,下降后又上升。这是求解器错误还是算法必然?
这是算法特性,特别在牛顿-拉夫逊法的非线性结构分析中常见。从当前解计算切线刚度矩阵,求位移增量Δu,这是线性化系的解。回到实际非线性系计算不平衡力(残差),因线性化误差残差不必单调递减。Abaqus文档明确指出"残差振荡是强非线性区的正常行为"。对策是设置更小增量步或启用线性搜索法。
残差监测的实务应用
收敛判定的实际应用
实务中残差下降到多少才算"收敛"?教科书说"1e-3"但总能行吗?
1e-3只是参考值,非绝对准则。关键是同时确认"残差充分下降"和"监测物理量达稳态"。例如飞机升阻力计算,残差降到1e-5但升力系数CL仍变化0.1%。反之复杂湍流计算,残差在1e-3卡顿但壁面剪应力和热流量已定常。我的经验是:先把残差降到1e-3以下,再绘制主要物理量(阻力、最高温度、最大应力)时间序列,确认其变动在0.1%以内。
"残差下降但物理量振荡"时,首先查什么?需要细化网格吗?
细化网格是最后手段。首先怀疑"时间步长(或载荷增量)太大"。特别非定常CFD或结构动力学,时间步Δt相对物理现象时间尺度太大会产生数值不稳定和物理量振荡。例如卡门涡脱落频率100Hz,应至少按其20倍采样,即Δt≤0.0005秒。其次检查求解器松弛因子是否合适。初期设小值(如0.5、0.7),稳定后上调至0.9加快收敛。
反过来"物理量似定常但残差不下降(卡在1e-2)"这种结果可信吗?
极其危险,不能盲信结果。残差卡在1e-2意味计算域某处"大平衡破裂"被固定化。常见原因两个:其一是边界条件设置错误,如流入速度与流出条件质量不守恒。其二是网格存在极坏单元(宽纵比1000+或体积接近负值),那里的离散化误差巨大产生巨大残差。该单元及周围物理量(流速、应力)完全不可信。必须检查网格质量报告,修正畸变大的单元。
残差监测的软件比较
各软件中的残差监测
Ansys Fluent与Siemens Star-CCM+的残差监测方式和理念有差别吗?
基本概念相同但界面和默认设置不同。Fluent在"Residual Monitors"画面中为各方程设目标值(Criteria)如1e-3,低于该值时判定收敛(启用时)。Star-CCM+提供残差绘图但默认不自动停止。反之推荐用"物理量监测"(如阻力)的变化率低于某值作收敛条件。这反映Star-CCM+持"残差仅为必要不充分条件"的立场。
结构分析软件(Abaqus、Nastran)没有CFD的"连续性残差",主要是"力残差"。怎样计算,目标值是多少?
正确。结构分析的主指标是"节点不平衡力(残差力)"。Abaqus/Standard中,在每个增量步的平衡迭代内计算为外力与内部节点力之差。消息文件中的"FORCE BALANCE"项反映此。目标值通常设为"平均力"的比例。Abaqus默认收敛基准是最大残差力≤"时间平均力"的0.5%。Nastran SOL 400(非线性)类似,残差力范数≤"施加荷载范数"的1%(默认)。
多物理场软件COMSOL处理电磁、结构、流体等各种物理场。残差监测是物理场独立还是统一的?
COMSOL选择"分离求解"或"完全耦合求解"方式时有不同。使用默认"完全耦合"求解器时,所有变量(温度、位移、电势等)作单一大规模线性方程组处理,输出通常为"全方程统合残差范数"一个。选择"分离"求解器时,物理场按次序逐个求解,各阶段残差独立监测,容易识别哪个物理场收敛不好。但后者不适强耦合现象。
残差监测的故障排除
残差相关的错误和对策
Fluent计算中出现"残差发散"错误停止。初期几步直接跳到1e+10。首先查什么?
瞬间发散几乎肯定是"初始条件"或"边界条件"设置物理上不可能。检查清单:1. 初始压力场极端高低(如非压缩流初压1e5 Pa却设初值1e10 Pa)。2. 流入速度与流出面积失衡,质量守恒严重崩溃(进气1 kg/s但出口面极小)。3. 湍流参数初值非现实(k=1000 m²/s²等)。对策:把所有初值重设为"一致温和值",松弛因子设很小(0.1左右)重算。
"残差稳定下降但某值(如1e-4)完全卡住,绝对不降"这是求解器极限吗?
可能是"机器精度"或"离散化误差下界"到达。双精度浮点运算舍入误差极限约1e-16,但离散化方程组求解过程中网格分割和数值格式本身含理论误差。例二阶迎风差分的离散化误差与网格大小平方成正比,网格粗则此误差在1e-4可成卡住原因。对策是局部细化网格或改用更高精度格式(如三阶QUICK或MUSCL格式)。
结构分析中最终残差满足基准但应力、位移结果明显非物理(远离荷载点处有极端应力集中)。什么问题?
危险信号,提示"局部刚度矩阵异常"。两种原因:其一"刚体模式"存在,约束不足导致某零件未约束,整体平衡(数值上)成立但部件内应力不定。其二"网格质量极差",宽纵比超1000或内角<1度的单元会使单元刚度矩阵条件数恶化,数值误差膨胀。该单元周围应力结果是垃圾。对策:先用模型检查工具确认无未约束刚体模式,再用网格质量报告定位最坏单元并重新网格划分。
定常计算但残差周期振荡(如在1e-3和1e-2间波动)。该继续还是停止?判断标准是?
陷入"极限环"应该停下来查原因。定常求解器中残差振荡提示求解器在两个或多个解状态间往复。原因两种:其一流动物理上不稳定(如腔内流,定常解实际不存在,非定常涡产生)定常求解器无法强行求解。其二非线性太强使迭代振荡。对策:先检查监测物理量(阻力)是否随残差振荡变动。若变动则说明是非定常现象,应切换非定常求解器。
关联话题
更多说明
错误