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 默认同时检查力残差和位移修正量,两者都满足才判定收敛。

Abaqus 收敛诊断三文件协同解读 .dat 查模型 → .sta 看增量 → .msg 追迭代 .dat 模型体检报告 • 单元/材料/集合回显 • 接触对初始化状态 • 过约束检查 OVERCONSTRAINT • 零主元 ZERO PIVOT • 数值奇异 NUMERICAL SINGULARITY • 自由度未激活 DOF NOT ACTIVE .sta 增量进度条 • INCREMENT / ATTEMPT 编号 • TIME 当前分析时间 • CUTBACK 切割次数 • SEVERE 严重不连续标记 • CONVERGENCE 迭代次数 • 增量步是否被反复重试 .msg 迭代心电图 • ITERATION 逐次编号 • FORCE RESIDUAL 力残差 • DISPLACEMENT CORR 位移修正 • TOLERANCE 收敛容差 • 残差下降速率 • 是否出现发散/停滞 .msg 中残差力随迭代次数的典型走势 迭代次数 ITERATION 残差力范数(对数) TOL 正常收敛 停滞(残差不再下降) 发散(残差反弹)

如何从 .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,则判定为发散。此时继续迭代没有意义,应主动终止并检查模型。

警告与错误的优先级处理

三类文件中的信息按严重程度可分为四级,处理顺序应从高到低:

级别典型信息所在文件处理动作
错误 ERRORNUMERICAL SINGULARITY、ZERO PIVOT.dat / .msg必须修正,否则无法求解
严重警告 SEVERESEVERE DISCONTINUITY、CONTACT CHATTERING.sta / .msg检查接触与材料状态跳变
警告 WARNINGOVERCONSTRAINT、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 显示残差已经停滞,减小增量步只会让失败推迟到更小的时间点,并不能解决接触切换或材料软化带来的本质问题。必须先读文件、判断失败类型,再选择对应策略。