3. 收敛诊断信息解读
当 Abaqus/Standard 的非线性分析出现不收敛时,求解器并不会“沉默地失败”,它会把每一次迭代的完整轨迹写进三类文本文件:.sta 给出按增量步汇总的状态摘要,.msg 记录每个增量步内逐次迭代的残差与位移修正量,.dat 则承载模型检查、单元警告、接触初始化、约束冲突等更早阶段的诊断信息。真正高效的排障,不是反复改参数试算,而是先读这三份文件,判断失败发生在“模型定义阶段”“增量切割阶段”还是“迭代收敛阶段”,再决定修正方向。
三类文件的职责分工
.dat 是分析开始前和开始时的“体检报告”。它包含节点坐标、单元连接、材料定义回显、集合与面定义、约束方程、接触对初始化、以及大量 WARNING。例如出现 ***WARNING: OVERCONSTRAINT CHECKS 或 DEGREE OF FREEDOM 1 IS NOT ACTIVE,说明边界条件或刚体约束存在冗余;出现 ZERO PIVOT 或 NUMERICAL SINGULARITY,往往指向未约束的刚体模态。这些信息在迭代开始前就已经决定了收敛的“先天条件”,必须先处理。
.sta 是增量步级别的“进度条”。每一行形如:
INCREMENT 1 ATTEMPT: 1 TIME: 0.1000
ITERATION 1 CUTBACK: 0 SEVERE: 0
...
CONVERGENCE: 4 ITERATIONS
它告诉我们:第几个增量步、第几次尝试、当前时间、是否发生 cutback、是否触发 severe discontinuity、最终用了几次迭代收敛。如果某个增量步反复出现 ATTEMPT: 2、ATTEMPT: 3,说明该步被多次切割;如果 SEVERE: 1 频繁出现,说明接触状态或材料状态在剧烈跳变。
.msg 是迭代级别的“心电图”。它逐次输出残差力范数、位移修正量范数、以及收敛判据的比较结果。典型片段如下:
ITERATION 1
FORCE RESIDUAL 1.234E+03 TOLERANCE 1.000E+01
DISPLACEMENT CORR 2.345E-02 TOLERANCE 1.000E-03
...
ITERATION 2
FORCE RESIDUAL 5.678E+01 TOLERANCE 1.000E+01
DISPLACEMENT CORR 3.456E-03 TOLERANCE 1.000E-03
这里的关键不是看绝对值,而是看“残差是否在下降”“下降速率是否足够”“位移修正量是否已经小于容差”。Abaqus 默认同时检查力残差和位移修正量,两者都满足才判定收敛。
如何从 .msg 判断“发散”还是“停滞”
把 .msg 中每个迭代步的力残差按顺序抄出来,观察其变化趋势,通常只有三种形态:
- 正常收敛:残差从 10³ 量级逐次下降到 10¹ 以下,位移修正量同步减小,一般 4~8 次迭代内满足容差。此时不需要干预。
- 停滞:残差在第 3~5 次迭代后基本不再下降,例如从 1.2×10³ 降到 8.5×10¹ 后连续三次停留在 8×10¹ 附近。这通常意味着接触状态反复切换、材料进入软化段、或某个局部区域出现刚体位移但未被约束。
- 发散:残差先下降后反弹,例如 1.2×10³ → 5.6×10¹ → 3.2×10² → 1.8×10³,位移修正量同步增大。这往往由几何非线性过强、载荷步过大、接触过盈量不合理或单元严重畸变引起。
一个实用的量化判据是:若连续两次迭代的力残差比值大于 0.9,且位移修正量没有明显减小,就可以判定为停滞;若残差比值大于 1.0,则判定为发散。此时继续迭代没有意义,应主动终止并检查模型。
警告与错误的优先级处理
三类文件中的信息按严重程度可分为四级,处理顺序应从高到低:
| 级别 | 典型信息 | 所在文件 | 处理动作 |
|---|---|---|---|
| 错误 ERROR | NUMERICAL SINGULARITY、ZERO PIVOT | .dat / .msg | 必须修正,否则无法求解 |
| 严重警告 SEVERE | SEVERE DISCONTINUITY、CONTACT CHATTERING | .sta / .msg | 检查接触与材料状态跳变 |
| 警告 WARNING | OVERCONSTRAINT、DOF NOT ACTIVE | .dat | 确认是否冗余,必要时删除 |
| 提示 INFO | 自动增量、自动时间步调整 | .sta | 记录即可,通常无需干预 |
.msg 中搜索 ***ERROR 和 ***WARNING,可以跳过大量迭代数据直接找到问题行;在 .sta 中搜索 CUTBACK 和 SEVERE,可以快速定位被反复切割的增量步;在 .dat 中搜索 SINGULARITY 和 OVERCONSTRAINT,可以在建模阶段就排除隐患。
一个完整的诊断示例
假设某橡胶密封圈压缩分析在第 3 个增量步失败。.sta 显示:
INCREMENT 3 ATTEMPT: 1 TIME: 0.3000
ITERATION 1 CUTBACK: 0 SEVERE: 0
...
***ERROR: TOO MANY ATTEMPTS MADE FOR THIS INCREMENT
转到 .msg 查看第 3 增量步的迭代历史:
ITERATION 1 FORCE RESIDUAL 2.1E+03 TOL 1.0E+01
ITERATION 2 FORCE RESIDUAL 8.4E+02 TOL 1.0E+01
ITERATION 3 FORCE RESIDUAL 7.9E+02 TOL 1.0E+01
ITERATION 4 FORCE RESIDUAL 8.1E+02 TOL 1.0E+01
ITERATION 5 FORCE RESIDUAL 8.0E+02 TOL 1.0E+01
残差从 2.1×10³ 降到 8×10² 后不再下降,属于典型停滞。进一步在 .msg 中搜索 CONTACT,发现大量 CONTACT STATUS CHANGED 记录,说明密封圈与沟槽的接触状态在开/闭之间反复切换。此时正确的修正方向不是继续减小增量步,而是调整接触定义:将接触从硬接触改为软接触、增加接触稳定阻尼、或把初始过盈量分多个载荷步逐步施加。
.msg 显示残差已经停滞,减小增量步只会让失败推迟到更小的时间点,并不能解决接触切换或材料软化带来的本质问题。必须先读文件、判断失败类型,再选择对应策略。