2. 网格畸变导致求解不收敛的排查与网格重划
畸变如何把非线性求解拖入死循环
大变形分析中,单元畸变不是“精度略差”这么简单:它会让单元雅可比行列式趋近于零甚至为负,等参变换失效,刚度矩阵出现病态或非正定,牛顿迭代的残差不再单调下降,最终在增量步上反复切分仍无法收敛。排查的关键是把“不收敛”这个笼统现象拆成可观测的指标链:增量步收敛历史 → 单元雅可比/畸变指标 → 畸变单元空间分布 → 局部重划 → 收敛性复验。
第一步:从收敛历史判断“是不是畸变”
先看求解输出中的增量步迭代记录。典型畸变特征是:前几个增量步正常收敛,进入大变形阶段后残差在 2~3 次迭代内反复升降,增量步被自动切分到极小值仍失败。这与“约束不足导致刚度矩阵奇异”不同——后者通常在第一个增量步就报错,且残差直接发散而非振荡。记录下首次失败的增量步号与载荷比例,作为后续复验的基准点。
第二步:用质量指标锁定畸变单元
在失败增量步的结果文件上(多数求解器支持输出最后收敛状态的单元质量),逐项检查下表指标。对二维四边形单元重点看内角与雅可比;对三维六面体重点看畸变比与体积负值;对壳单元重点看翘曲度。
| 指标 | 计算/查看方式 | 异常判据(示例) | 对应风险 |
|---|---|---|---|
| 雅可比行列式 det J | 单元积分点处输出 | ≤ 0 或最小值/最大值 < 0.05 | 等参变换失效,刚度矩阵病态 |
| 畸变比 | 最长边/最短边 | > 5(大变形区可放宽至 8) | 形函数梯度失真 |
| 内角 | 四边形四角 | < 30° 或 > 150° | 剪切自锁、沙漏 |
| 翘曲度 | 壳单元四节点偏离平面距离/特征长度 | > 0.15 | 弯曲刚度虚高 |
| 负体积单元数 | 体积/面积符号统计 | > 0 | 网格翻转,必然不收敛 |
若求解器不直接输出 det J,可用“单元体积/面积随时间步变化率”间接判断:某单元面积在单步内缩小超过 60%,基本可判定为畸变候选。
第三步:局部重划而非整体重划
整体重划会破坏已收敛的接触状态与历史变量,代价高且易引入新误差。正确做法是冻结畸变区、提取其边界节点坐标、在边界内重新生成网格、再把应力/应变/损伤等状态量映射回新单元。操作要点:
- 以畸变单元为中心,向外扩 2~3 层单元作为重划区,保证过渡区网格尺寸渐变。
- 重划区边界节点坐标保持不变,避免与周围网格出现悬挂节点或缝隙。
- 新网格在畸变核心区加密,畸变比控制在 3 以内,内角控制在 45°~135°。
- 状态量映射优先用单元形函数插值;对损伤等不可逆变量,取重划区旧单元的体积加权平均,避免映射后数值跳变。
第四步:复验收敛性
回到首次失败的增量步,用相同载荷增量重新求解。通过判据:该增量步残差在 5 次迭代内单调下降至收敛容差(如 1e-4 相对残差),且后续增量步不再出现增量步切分。若仍不收敛,说明畸变只是表象,需转查材料本构、接触刚度或边界条件——此时应保留重划后的网格作为新基线,避免在旧畸变网格上反复试错。
重划后务必检查重划区与周围网格的节点连接关系。若出现自由边或重复节点,会在后续增量步引入新的奇异,表现为“重划后反而更早失败”。