扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab 阅读全文!
每个试图解决非线性有限元分析问题的工程师都经历过:收敛困难。在这个博客中,我将给出寻找引起收敛困难原因的一些方法,以及在Abaqus有限元分析中的一些常见解决方案。
打开 odb 并选择 tools>job 进行诊断。作业诊断将提供求解时的所有警告和错误,以及残差和接触信息。最有用的功能之一是在视口中高亮显示选择复选框,如下图。
在警告选项卡中,用户可以看到数值奇点和零扭矩的位置(如果适用的话),这可能会给出导致这些警告的原因。
在残差选项卡中,可以可视化残差最大的节点。查看出现收敛困难的节点位置,其通常为导致收敛问题的区域。这个区域发生了什么意想不到的事情吗?
在触点选项卡中,可以查看最大接触力误差的位置和最大穿透误差的位置。如果是接触导致收敛问题,这些区域将有所显示。
查看何时发出警告信息,看其是否可能指向问题。例如,如果求解器首次尝试采用大增量步进行计算,并给出了与负特征值相关的警告;然后在下一个增量中减小时间增量进行计算并在没有任何困难或警告的情况下获取收敛,则警告可能只是尝试太大的时间步长所引起的。如果警告消息重复出现并重复减小时间增量,则可能表示出现了稳定性问题(参见第 6 点)。
有些警告非常具体,而其他警告可能由更深层次的原因引起,其需要更多的经验来解决。
不收敛的一个原因是边界条件不足。不合理的边界条件可能导致局部极端变形。模型也可能过约束。在约束作用下,并非模型的所有刚体运动都受到抑制,很可能导致模型在一个或多个自由度上刚度为零,其通常表现为零扭矩(zero-pivot)警告。过度约束也容易导致零扭矩(zero-pivot)警告。尽管 Abaqus会在求解前检查过约束并尝试解决,但并不总是都可以被处理掉。例如,如果过度约束是在接触一段时间后开始发生的。因此,建议检查与过度约束相关的所有警告消息。不要认为 Abaqus 会修正所有的过度约束,而是需要你正确的定义约束。此外,查看零扭矩(zero-pivot)警告的位置(是否存在过约束问题?)。
接触也是导致收敛困难的主要因素。想想看,这并不奇怪,因为接开始触时将导致力-位移关系不连续,这增加了用牛顿方法(Newton’s method)得到求解结果的难度。这就是为什么 Abaqus 在接触发生变化时使用单独的严重不连续性迭代。
引起接触不收敛的一个可能原因是接触的初始状态。如果问题依赖于接触点的稳定性,并且最初没有接触,则模拟可能难以启动。这尤其在载荷控制的情况容易发生:通常载荷施被施加在没有刚度和可能发生刚体运动的物体上。(最初)使用位移控制来确保接触的发生通常可以解决此类收敛问题。Abaqus 还提供接触稳定,以帮助在接触前自动控制静态问题中的刚体运动。
也可以通过在接触控制中使用自动稳定(automatic stabilization)来处理此类不收敛问题。有必要在 interaction 定义中使用接触控制。使用automatic stabilization时,当表两个面彼此靠近但没有接触时,将施加阻尼。这样会对加载部件的位移产生阻力作用,使得刚性运动不再可能进行。由于这是为了让曲面接触,因此在应用阻尼的step期间,阻尼将默认向下降低为 0。建议检查粘性耗散量是否太大,例如将 ALLSD 与 ALLIE 进行比较。还可以应用第 6 点中提到的解决不稳定问题的技术来处理接触不收敛问题。
引起接触不收敛的另一个潜在原因是对于实际存在接触的表面没有定义接触,这可能导致非真实的结果、非常大的变形和不收敛。例如,自接触很容易被忽视。当分析中应用了Abaqus 强大的通用接触(general contact )时,通常不会发生此问题。
当应变增加(刚度不为正数)而材料中的应力不增加时,可能会出现收敛问题。当包含损伤的实验数据被用来定义不包含损伤的模型时,则可能会发生这种情况。检查模型中的(最大)应力和应变,以查看模型是否会发生损坏。
如果使用 Abaqus 的超弹性模型材料拟合选项,则材料的稳定性可能有限。通过右键单击材料并选择"评估"(evaluate),可以查看 Abaqus 计算的稳定性限制。
当使用塑性材料模型并加载到所定义曲线的末尾时,Abaqus 会用水平线推断曲线:(塑性)应变可以增加,但应力不会增加(完全塑性)。在这种情况下,刚度为零。如果这种情况在单个单元中发生,则模拟可以正常运行。但当大部分模型都经过完全塑性时,它可能成为一个问题。这通常说明对于材料来说所加载的载荷太大了。
不收敛的最常见原因是存在不稳定。模型开发的原则之一是,模型不应比描述感兴趣行为所需的复杂。有鉴于此,在过程缓慢时,假设模型以静态方式运行,因此降低模型的复杂性似乎是合理的。然而,有趣的是,这种简化会使模型更难解决。一般来说,载荷下材料的行为由牛顿的第二定律描述:
当假定静态行为时,加速度等于零,因此所有力的总和必须等于零:力平衡。当系统从一个平衡状态移动到下一个平衡状态,并且所有处于状态之间的所有状态也处于平衡状态时,此时静态假设是有效的。但情况总是这样吗?
以载荷控制的最初不接触的两个部件为例。为什么这种情况在现实中是可能的?因为加载部件的初始位移将由其惯性决定。惯性的影响使得问题稳定。包括某种惯性或阻尼效应通常有助于获得收敛解。有几种方法可以做到这一点。
在step定义中,可以选择自动稳定(automatic stabilization),例如,使用默认值指定耗散能量的分数,如下图。
这将对模型中的所有节点施加一个附加粘性力,该力的大小与节点的位移除以时间步长成比例,其具有稳定模型计算的效果。如何检查粘性耗散是否过大,例如,可以比较ALLSD和ALLIE值。
另一种是使用显式,隐式步分析步(a dynamic, implicit step)。即选择应用准静态(Quasi-static)分析,如下。
Quasi-static使用欧拉向后格式( Euler Backward scheme),它有一个基于真实质量的粘性效应。在这种情况下,需要解决时间相关问题,因此所设置的时间尺度应合理。因此需要检查动能与内部能量的关系是否较小。
尝试显式分析。虽然模拟可能需要很长时间,但在一些非常非线性的情况下,用Abaqus/Standard获得收敛解是不现实的。使用Abaqus/Explicit,至少可以确定不会有任何收敛问题。
谁知道呢?让计算机花更多的时间解决实际问题可能比继续修改模型更有效,希望最后一次更改后你可以完成该分析任务。
你准备好了吗?你准备好接受挑战了吗?
本文为 《6 Tips solving non convergence with Abaqus FEA》的中文翻译,访问原文请点击此处。
扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab,查看更多精彩文章!