ABAQUS提供式和隐式两种求解类型,其中显式计算方法是“有条件收敛的”,只需满足增量步小于限值,大多数情况均能顺利计算完成;而隐式计算方法,在非线性情况下极易出现不收敛的情况,比如:欠约束、接触、材料塑性或失效、断裂、屈曲失稳等,都可能导致多次迭代不收敛,增量步大小一降再降,直到满足终止条件而退出计算。作为老司机,使用了这么多年的软件总有点心得吧,总结了五条经验,分享给大家:
了解ABAQUS的任务提交流程,也就是让我们学会找错!当我们点击Submit后会有两个处理阶段:1)预处理;2)任务计算。
结合ABAQUS Job Monitor窗口进行讲解,两个阶段的分界点位于Data File子页面的内容是否完成;也就是说,当出现Error,而Message File和Status File未激活(生成)时,表明还处于预处理阶段,我们定义的模型一开始就存在问题,Errors子页面都会一一列出,通常会有:信息不完整、材料参数不符合本构模型、特殊定义之间冲突、关键字输入问题等,我们只需逐个修改即可。
当顺利进入任务计算阶段后,窗口上方的表格将实时更新为Status File(jobName.sta)中的内容,提示计算的进度,当后续再出现Error时,才可能是由于计算不收敛导致的错误。
模型收敛是什么?很多初学者估计都不太清楚,从而提出一些奇奇怪怪的问题,比如:“我用弹性材料可以计算,换成复杂材料模型就计算不了,为什么?”。所以了解有限元基本原理是非常必要的,而要了解ABAQUS的求解机制,就需要看帮助文档,个人认为:帮助文档分析手册第七章(Analysis Solution and Control)的内容,是进阶的必修内容,然而前市面上除了王鹰宇先生的译本,并没有书籍进行过归纳和总结,还是感觉挺遗憾的。
求解的总体思路就是:整个任务分为多个阶段(Steps);每个阶段分为若干个增量步(Increments);一个增量步进行若干迭代(Iterations),上图为二次迭代过程,而这个过程中cb=ub-ua需要小于一定限值,通过类似的多次迭代,外力P与内力I之间容差R小于给定限值,从而认为增量步达到收敛要求。
这些限制条件都有默认值,大多数情况下我们不需要进行修改,但对于一些特殊或难收敛的情况,可以适当进行调整:Step模块下->Other菜单->General Solution Controls的Field Equations子页面进行设置,不同的场量计算均有自己的一套场控制参数。
除了迭代步的限制控制,还会有增量步大小控制,其中一些在定义分析步时进行设置;更多的则位于General Solution Controls窗口中的Time Incrementation子页面,其中I0和IR为迭代步次数限制,用于控制增量步变大或缩小;IA则为允许出现不收敛迭代的次数,对应Monitor窗口中的IU至5U,对于大多数非线性情况,5次是远远不够的,需要增大。
进入任务计算阶段后:
1)如果最开始就出现1U至5U的不收敛问题,可能有以下原因:边界条件约束不足(欠约束)、重复导入部件(导致欠约束)、初始荷载过大、初始应力导致的材料塑性(Geostatic分析步)、单位制未统一(间接导致刚度过小和荷载过大)等;
2)如果是随着计算到中期或后期才出现不收敛情况,就需要根据已有的计算结果和模型情况进行判断,不收敛原因主要有:材料软化、失效、屈曲、接触非线性、温度(或其它场量)的骤变等;
3)随着加载的进行,出现畸变单元而导致终止,这个一般不是收敛问题,而是无法计算单元刚度矩阵从而无法组装整体刚度矩阵。通常需要网格重划分获得更好的网格质量、调整网格类型或采用其他大变形计算方法(ALE、CEL、SPH等)进行控制。
排除由于模型设置问题导致的不收敛情况后,可以通过以下设置增加收敛性:
1)增量步控制:增大允许的最大增量步数量、减小允许的最小增量步大小、增加允许的不收敛增量步数量IA(参考第二部分内容);
2)如果是由于材料软化、失效导致的不收敛问题,可以尝试改善网格质量、修改单元类型,如果还是不行,则在材料模型、单元类型或分析步中增加阻尼,阻尼设置看第五部分内容;
3)如果是接触导致的不收敛,可以修改接触类型、调整接触参数,如果还不行则增加接触阻尼;
4)上面三种调整后均无法收敛,则更换分析类型,采用Standard动力学或Explicit分析类型等。
说阻尼是万能的,是因为它可以极大改善模型的收敛性,实现复杂非线性问题的收敛;说阻尼是万恶的,因为它可以掩盖一些模型错误,从而提供失真甚至不合理的结果,因此大家不能过分依赖它!
切记第四部分的不收敛处理流程,首先排查模型的自身问题,最后才引入阻尼。
阻尼的添加方式主要有四种:
①材料阻尼或自稳定系数,CDP模型中就有viscosity;部分损伤材料提供Stablization Cohesive系数;动力分析中可以定义Damping,但是对于静力分析,材料Damping定义是无作用的;
②单元自稳定系数,不是所有单元都有的,其中Cohesive单元经常会定义上;
③自动稳定设置,类似全局阻尼,可以避免由于塑性绞/带、屈曲或失稳导致的不收敛问题;
④接触阻尼或自稳定系数,接触属性中可以定义阻尼;接触控制中定义阻尼自稳定系数,不太常用,位于Interaction模块->Contact Controls(接触对)或Contact Stabilization(通用接触),如果没有接触问题就不用定义。
讲了这么多,最后还是那句话:“纸上得来终觉浅”,需要大家在今后的练习过程中多多摸索、练习,只有实操后所萃取的精华才是最好的。希望这些经验总结能为给大家填坑搭桥,节约些许调试时间。