Abaqus中的求解类型分为显示与隐士。显示求解基于动力学方程,当前求解至于前一时刻的速度与位移有关,求解过程无需迭代,是有条件稳定,无条件收敛;隐式求解则基于虚功原理,一般需要迭代计算,无条件稳定,有条件收敛。
所以对于你提到的不收敛问题这里我就认为是针对隐式计算。
在模型计算报错时,我们首先查看Job Monitor中的报错信息,对于简单的模型错误,例如材料、边界、载荷定义错误、网格问题、关键字定义错误等都能在Job Monitor中直接看出。针对不同的问题针对修改就可以。这部分相信稍微有些经验的CAEer都能自行解决。
在接着讲之前,我希望大家能够了解模型收敛的本质是什么?
对于线性系统来说,一般不存在收敛问题。模型不收敛一般都是由于几何非线性、材料非线性、边界非线性。
有限元求解的过程是根据外力与内力平衡求解出各个节点的位移,根据位移再求解应力、应变等。对于非线性系统,载荷与位移的关系也通常是非线性的,如下图所示。
我们的首要目的就是求解不同载荷下的位移。做法就是将一个完整求解过程细分为许多个小的过程。
这里就不得不提abaqus中的Step、increment与iterations。
这里举一个例子,假如我们从冰箱里拿面包吃。
Step1:打开冰箱
Step2:拿面包
Step3:关上冰箱
Step4:吃面包
面包很大,不能一下吞下去,所以为了吃面包我们首先咬一口(Step4:increment1),然后要咀嚼很多口(Step4:increment1->iteration1->iteration2->......->iterationN);接着再咬一口(Step4:increment2),再次咀嚼(Step4:increment2->iteration1->iteration2->......->iterationN),直到把面包吃完。
可以看到为了把面包吃完将吃面包细分成了很多步骤,实际有限元计算时也是一样,理解了上述三个参数的含义对后面的调参有重要意义。
我们通常说的不收敛是发生在“嚼面包”(iteration)过程中,当软件尝试很多次迭代发现物体的内力与外力差值仍然超过规定误差时就会报出“不收敛”。
为了深入了解,我们这里举个例子。将一个物体所受外力设为P,物体内力(作用在节点上)设为I。作用在节点上的内力是由与节点相连的单元的应力产生的。
一个物体处于平衡,则内力与外力相平衡。
为了求解上式,首先施加一个小的载荷增量 。根据位移为 时结构的切线刚度 以及载荷增量 计算位移修正值 ,最后计算出此时的位移 。
此时重新计算物体内力 ,可以得到你内力与外力的差值
这里的 就是衡量每次iteration是否收敛的标准。abaqus默认 小于结构所受平均力的0.5%则认为内力与外力 相平衡,但是此时还未认定为收敛,还需要检查 是不是小于 ( )的1%(abaqus默认值),如果是则判定收敛,进入下一个迭代。
下一次迭代计算遇上个步骤相同,最后还是通过判断内力与外力的残差与来判断该次迭代是否收敛。
那么对于复杂难以收敛的模型,如果你调整其他参数发现毫无作用时,可以适当调整判断迭代收敛的这两个参数:与
具体入口为:Step->Other->Genreal Solution Controls->Filed Equations
还可以调整 以及 ,但是这里作者也没有搞明白是和含义,希望大神不吝赐教。
还可以调整增量步(increment),其中 和 是重要的两个参数。因材料非线性、几何非线性、摩擦产生的非单调收敛需要增加;因复杂的材料本构模型而导致雅可矩阵非对称引起的不收敛需要增加。
最后总结一下
首先我们需要根据报错内容排查不收敛的原因,很多时候不收敛都是由于模型本身的问题,例如:边界约束不足、部件重复导入、材料属性输入错误、网格质量太差等等。
还有一些不收敛是由于复杂模型以及边界条件造成的,例如模型涉及到接触时发生不收敛(这里我写了一篇文章,大家可以参考里面的接触设置进行调整开车小王子:有限元学习日记?(Abaqus中的接触详解)),可以修改主从接触面;让从面网格更密;修改接触参数;增加接触阻尼。
上述方法都尝试过后,可以试着调整默认的收敛参数。也就是上文提到的 。但是这里要谨慎,因为这很有可能影响最终计算结果的精度。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删