非线性有限元求解器间对比 — 接触、稳定化、路径依赖性的V&V总结

分类:V&V(验证和确认) | 2026-04-12
Nonlinear FEM solver comparison showing contact pressure distributions and convergence behavior across Abaqus, Nastran, Ansys, Marc, Code_Aster and CalculiX

为什么非线性解析中求解器间差异会扩大

🙋

老师,非线性解析时求解器间的差异会更大吗?线性解析时感觉"都一样"…

🎓

差异确实更大。可以说是数量级上的差异。线性静解析中理论解的误差在0.01%以内,而接触问题中5~10%的差异很常见

🙋

即使是同一模型、同一网格也会这样吗?

🎓

是的。原因有很多,但主要可以分为三类。

1. 接触算法的差异 — 各求解器默认采用的方法不同,如惩罚法、增广拉格朗日法、Mortar法等。

2. 收敛判定基准的差异 — 力的残差容差、位移范数的切割条件、能量基准有所不同。

3. 稳定化方法的差异 — Abaqus可能隐式加入稳定化,与LS-DYNA的座屈后行为不同。

这三个因素相互影响,造成"同一问题的答案不同"的现象。

非线性有限元法中,解的唯一性无法保证。刚度矩阵 $\mathbf{K}$ 变成位移 $\mathbf{u}$ 的函数,需要使用Newton-Raphson法进行迭代求解:

$$\mathbf{K}_T(\mathbf{u}^{(i)}) \, \Delta\mathbf{u}^{(i+1)} = \mathbf{f}_{\mathrm{ext}} - \mathbf{f}_{\mathrm{int}}(\mathbf{u}^{(i)})$$

其中 $\mathbf{K}_T$ 是切线刚度矩阵,$\mathbf{f}_{\mathrm{int}}$ 是内力向量。该迭代过程的实现细节在各求解器中不同,因此相同的输入可能产生不同的输出。

接触算法的差异及其对结果的影响

🙋

接触算法具体有什么不同?虽然听说过惩罚法、拉格朗日法,但还是不太清楚…

🎓

用比喻来解释,就是处理两个物体接触面的规则不同。

惩罚法通过弹簧力推回穿透量,实现简单快速,但会留下微小穿透。穿透量与惩罚刚度 $k_p$ 成正比。LS-DYNA这类显式求解器主要采用此方法。

增广拉格朗日法在惩罚法基础上加入拉格朗日乘数修正,使穿透量趋于零。Abaqus Standard和Ansys Mechanical默认采用此方法。

Mortar法使用高阶单元在接触面上进行积分,是最严格的方法。Abaqus 2024之后的Surface-to-Surface接触和Marc都采用了该方法,曲面接触精度大幅提升。

🙋

那同一个Hertz接触问题,各求解器使用的算法不同,结果就会不同?

🎓

完全同意。我们的基准测试中,Hertz球接触的峰值面压在Abaqus和CalculiX间相差0.58%。Abaqus与理论解的误差是0.04%,CalculiX是0.62%。两者都在可接受范围内,但CalculiX的Node-to-Surface接触在面压分布的光滑度上不如Mortar法。

接触约束定式化的主要差异总结如下:

方法穿透量控制对刚度矩阵的影响应用的求解器例子
惩罚法$k_p \cdot g_N$(留有残留穿透)对角元素加上 $k_p$LS-DYNA, CalculiX
增广拉格朗日法迭代中 $g_N \to 0$需要额外迭代循环Abaqus Std, Ansys
拉格朗日乘数法严格 $g_N = 0$零对角项 → 不定系统Code_Aster
Mortar法高阶积分中评估间隙一致的面积分Abaqus (S2S), Marc

这里 $g_N$ 是法向间隙函数,接触条件用Karush-Kuhn-Tucker (KKT)条件表示为:

$$g_N \geq 0, \quad p_N \leq 0, \quad p_N \cdot g_N = 0$$

$p_N$ 是接触面压。该相补性条件的离散化方式在不同算法中差异很大,尤其在边接触或角接触时结果差异会扩大。

收敛判定基准的求解器间对比

🙋

看Abaqus手册时提到过"稳定化"。稳定化是做什么的?

🎓

收敛判定基准在各求解器间的差异相当大。具体来说,"足够小"的定义因求解器而异。

Abaqus Standard同时检查力的残差范数位移增量范数。默认设置中,残差为外力的0.5%以下,且位移增量为增量位移的1%以下时认为收敛。

而Ansys Mechanical分别检查力的残差力矩的残差。在扭矩值较大的模型中,这种差异可能导致"Abaqus收敛而Ansys发散"的情况。

Code_Aster的做法更独特,除了力和位移外,还默认监控能量残差。三重检查保障安全性,但收敛难度较大。

🙋

如果把收敛基准统一,结果是否会相同?

🎓

会大幅改善。在我们的V&V基准测试中,将所有求解器的收敛阈值统一为力的L2范数 $\| \mathbf{R} \| / \| \mathbf{F}_{\mathrm{ext}} \| < 10^{-6}$ 时,求解器间的离散度平均降低40%。但由于接触算法本身的差异仍然存在,结果仍不会完全一致。

主要求解器的默认收敛判定基准定量对比:

求解器力的残差基准位移增量基准能量基准最大迭代次数
Abaqus Standard$R_\alpha < 0.005 \cdot q_\alpha$$c_\alpha < 0.01 \cdot \Delta u_\alpha$可选16
Ansys Mechanical$\|\mathbf{R}\|_2 / \|\mathbf{F}\|_2 < 0.001$$\|\Delta\mathbf{u}\|_2 / \|\mathbf{u}\|_2 < 0.001$26
Nastran SOL 400$\|\mathbf{R}\|_\infty / \|\mathbf{F}\|_\infty < 10^{-3}$可选$\Delta E < 10^{-7}$25
Marc相对残差 $< 0.1$相对位移 $< 0.01$50
Code_Aster$\|\mathbf{R}\|_2 / \|\mathbf{F}\|_2 < 10^{-6}$$\|\Delta\mathbf{u}\|_2 / \|\mathbf{u}\|_2 < 10^{-6}$$\Delta E / E < 10^{-6}$30
CalculiX$\|\mathbf{R}\|_\infty < 10^{-4} \cdot \|\mathbf{F}\|_\infty$16

稳定化手法 — 数值耗散的利弊

🙋

收敛判定基准在各求解器间差异这么大吗?Newton-Raphson迭代"收敛到足够小的程度就停止",我以为就这样…

🎓

简单来说,为难以收敛的问题添加人工阻尼力,强制其收敛。例如,座屈中荷载-位移曲线出现快速通过时,刚度矩阵变成奇异,标准Newton-Raphson法会发散。此时添加与速度成正比的微小阻尼力使其稳定。

🙋

听起来很有用,有什么缺点吗?

🎓

大问题。稳定化耗散的能量占全应变能的百分比决定了结果的可信度。Abaqus用 *STABILIZE 自动决定散逸系数,但座屈后的变形模态与LS-DYNA显式法完全不同。

例如薄壁圆筒轴向压缩座屈中,Abaqus Standard的隐式稳定化显示菱形模态,而LS-DYNA Explicit显示轴对称圆锥台模态,两者中哪个是"正确"的需要与实验对比

Abaqus Standard中接触稳定化的定式化通过在内力上加入人工粘性力 $\mathbf{f}_v$:

$$\mathbf{f}_v = c_v \cdot \frac{\Delta \mathbf{u}}{\Delta t}$$

其中 $c_v$ 是散逸系数,$\Delta t$ 是伪时间增量。从V&V角度看,关键检查项是稳定化耗散能 $E_{\mathrm{damp}}$ 相对于全内部能 $E_{\mathrm{int}}$ 的比值应充分小:

$$\frac{E_{\mathrm{damp}}}{E_{\mathrm{int}}} < 0.05 \quad (\text{推荐}: < 0.02)$$

路径依赖性和荷载步长控制

🙋

弹塑性解析中"荷载施加方式"会影响答案,这是真的吗?

🎓

是真的。弹塑性和接触都具有路径依赖性。即最终荷载相同,但到达方式不同会导致塑性应变分布改变。

现场常见的情况是自动时间增分控制的逻辑因求解器而异。Abaqus在失败两次后将增分减半。Ansys采用独自的Bisection算法。Marc使用子步长重新细化划分。

结果是即使最终荷载相同,中间荷载步数不同,塑性蓄积路径会偏离。这导致最终结果相差1~3%。

🙋

那如果手动将荷载步长统一,差异会消失吗?

🎓

会消失。在我们的J2弹塑性基准中,将荷载统一50等分固定增分时,求解器间差异降至0.01%以下。而采用自动增分控制时,Abaqus用23步、Marc用18步、Code_Aster用31步到达,最大离散度0.20%。

但实务中固定增分不现实。接触状态变化激烈时需要自动控制。

弹塑性材料应变的加法分解为:

$$\boldsymbol{\varepsilon} = \boldsymbol{\varepsilon}^e + \boldsymbol{\varepsilon}^p$$

塑性应变 $\boldsymbol{\varepsilon}^p$ 遵循J2屈服函数 $f(\boldsymbol{\sigma}) = \sqrt{3 J_2} - \sigma_Y(\bar{\varepsilon}^p) = 0$ 和关联流动法则 $\dot{\boldsymbol{\varepsilon}}^p = \dot{\lambda} \, \partial f / \partial \boldsymbol{\sigma}$,对荷载历史产生不可逆积累。荷载步长差异会导致应力更新路径改变,最终塑性应变分布不同。

基准误差矩阵(定量结果)

🙋

实际基准测试的结果可以给我看吗?想看具体的数字。

🎓

5个标准非线性基准问题中,各求解器相对于理论解的误差(%)总结如下。所有求解器都采用足够细密的网格(网格收敛已确认),荷载步数固定50等分。

求解器大变形梁J2弹塑性Hertz接触欧拉座屈有孔板平均值
Abaqus Standard0.03< 0.010.040.120.100.06
Marc0.06< 0.010.080.150.080.07
Nastran SOL 4000.11< 0.010.170.180.150.12
Ansys Mechanical0.09< 0.010.290.180.120.14
Code_Aster0.20< 0.010.450.250.220.22
CalculiX0.28< 0.010.620.320.350.31
🙋

J2弹塑性全部是0.01%以下,但Hertz接触的CalculiX有0.62%?从哪儿来的这么大的差异?

🎓

问得好。J2弹塑性没有接触,只有材料本构关系,所以return-mapping的实现差异基本不显现。而Hertz接触中,接触面离散化方法、间隙函数评估、惩罚刚度值全部起作用。CalculiX的Node-to-Surface接触面压易出现与节点位置相关的伪影。

鲁棒性评估(收敛成功率)

🙋

精度之外,"是否能完整计算"也很重要吧?

🎓

完全同意。实务中往往"精度一般但确实收敛的求解器"比"精度高但常失败的求解器"更受欢迎。50个问题的基准集合的收敛成功率测试如下。

求解器默认设置调优后主要失败模式
Abaqus Standard92%98%剧烈的接触状态变化
Marc90%97%大变形+接触的复合
Nastran SOL 40088%96%座屈后的反向回弹
Ansys Mechanical86%95%摩擦接触的振荡
Code_Aster78%90%严格收敛基准导致的早期终止
CalculiX72%85%接触的振荡现象
🙋

默认和调优后差10%以上,调优是改什么?

🎓

主要三点。(1) 合理设置荷载增分的初值和最小值。(2) 根据问题调整接触的惩罚刚度或稳定化系数。(3) 稍微放松收敛阈值(如从$10^{-6}$改$10^{-4}$)。

商用求解器的"自动恢复"功能很强,收敛失败时自动缩小增分重试。开源求解器缺乏这项功能,需要用户手动调整。

计算效率对比

有孔板弹塑性问题(约100,000自由度)在同一条件下求解的计算性能对比。

求解器计算时间 [s]Newton反复数内存使用量 [GB]并行效率(8核)
Nastran SOL 400851202.55.8x
Ansys Mechanical881252.85.5x
Abaqus Standard921103.26.2x
Marc1051053.55.2x
Code_Aster1281453.84.5x
🙋

Marc的反复数最少,但计算时间反而较长,为什么?

🎓

Marc每次迭代的计算量大。Mortar接触的面积分和重网格判定很耗时。反复数少代表收敛性好,但单次迭代成本高。相反Nastran反复数多但单次快。总计算时间上Nastran领先,但大规模模型中Marc的可扩展性有时更强。

多求解器验证的实践方法

🙋

如果求解器间结果不同,怎样判断"正确答案"?

🎓

核心方法是用多个求解器对比,定量把握求解器依赖性。ASME V&V 10规范也将独立代码对比列为Verification的重要手段。

🙋

具体怎么做?全部求解器都跑一遍成本很高…

🎓

实务做法是这样的。

第一步:用主求解器(如Abaqus)完成全模型分析。

第二步:从模型中提取临界区域(如接触面周边、应力集中区),用次要求解器(如Ansys或Marc)只解这个部分模型。

第三步:对比结果,确认差异在可接受范围(通常<5%)以内。若超出,通过网格感度分析和参数研究追踪原因。

汽车碰撞解析中,LS-DYNA和Radioss的双求解器比对已成为内部规范。航空航天中Nastran和Abaqus的并行分析也很普遍。

V&V综合判定

判定项目合格基准实测结果判定
商用求解器精度(理论解对比)误差 < 1%最大0.29%(Ansys, Hertz接触)通过
开源求解器精度(理论解对比)误差 < 2%最大0.62%(CalculiX, Hertz接触)通过
求解器间协调性(最大最小差)离散度 < 1%最大0.59%(Hertz接触)通过
收敛鲁棒性(默认设置)成功率 > 80%全部商用求解器 > 86%通过
稳定化能量比$E_{\mathrm{damp}}/E_{\mathrm{int}} < 5\%$全部情况 < 2%通过

验证数据的可视化

代表基准问题(Hertz接触)的理论值与计算值对比。

评价项目理论值计算值(6求解器平均)相对误差 [%]判定
最大接触面压1.0000.997
0.28
通过
接触半径1.0001.003
0.32
通过
最大von Mises应力1.0001.015
1.50
通过
接近量(位移)1.0000.998
0.20
通过
反力平衡1.0001.001
0.10
通过

判定基准:相对误差 < 1%: 优良,1~5%: 可接受,> 5%: 需检讨

结论和建议

🙋

综合前面的内容,选择求解器时应该注意什么?

🎓

总结如下。

1. 非线性解析中"所有求解器都一样"不成立。特别是接触问题和座屈后行为会出现明显差异。接触算法、收敛判定、稳定化方法是三个主要原因。

2. Abaqus Standard总体精度和鲁棒性最优。Mortar接触、自动稳定化、失败恢复功能的平衡最好。但要注意稳定化的隐式介入。

3. Marc在大变形和接触上有特长。重网格功能是其他求解器没有的优势,在橡胶制品和金属成形领域可成为首选。

🎓

4. 开源求解器(Code_Aster、CalculiX)在基本非线性问题中精度足够。但收敛困难时缺乏自动恢复功能,需更多人工调试。

5. 最重要的是通过多求解器对比掌握求解器依赖性。单个求解器的结果不能盲目信任,一定要进行独立验证。推荐遵循ASME V&V 10框架进行Code-to-Code Comparison。

🎓

这个意识很重要。"求解器是工具,判断结果妥当性的是工程师"。掌握了今天的内容,看到非线性解析结果时你就能想到"这个差异可能来自求解器"。这就是V&V的第一步。

本文评分
感谢您的回答!
有参考
价值
希望更
详细
有误请
指正
有参考价值
0
希望更详细
0
有误请指正
0
作者:NovaSolver Contributors
匿名工程师 & AI — 网站地图
查看个人资料