初学umat子程序的小伙伴一定搜到过清华大学卢剑锋的硕士论文,里面详细介绍了Johnson-Cook塑性本构umat的编写方法,并附了代码,的确是学习弹塑性umat特别好的资料。卢剑锋是庄茁大佬的学生,庄茁大佬编著的《基于ABAQUS的有限元分析和应用》一书也将卢剑锋的硕士论文作为案例添加了进来。
以下讨论了关于该umat子程序中Johnson-Cook公式求导的问题,该问题最早提出在simwe仿真论坛:http://forum.simwe.com/thread-1011324-1-1.html
问题描述
根据径向返回算法有
其中 H 为硬化率,是屈服应力
对等效塑性应变
的导数。只有正确地更新了硬化率 H 的值,才能在牛顿迭代中正确地修正等效塑性应变增量
。
在Johnson-Cook模型中,若不考虑材料的热行为,则有
其中参考应变率
。那么,上式对等效塑性应变
求导的结果是什么?
原文方法
卢剑锋论文原文中牛顿迭代部分的代码如下
C NEWTON ITERATION
C
SYIELD=SYIEL0
DEQPL=(SMISES-SYIELD)/EG3
DSTRES=TOLER*SYIEL0/EG3
DEQMIN=HALF*DTIME*EXP(1.0D-4/C)
DO 130 KEWTON=1,NEWTON
DEQPL=MAX(DEQPL,DEQMIN)
CALL USERHARD(SYIELD,HARD,EQPLAS+DEQPL,PROPS(4))
TVP=C*LOG(DEQPL/DTIME)
TVP1=TVP+ONE
HARD1=HARD*TVP1+SYIELD*C/DEQPL
SYIELD=SYIELD*TVP1
RHS=SMISES-EG3*DEQPL-SYIELD
DEQPL=DEQPL+RHS/(EG3+HARD1)
IF(ABS(RHS/EG3) .LE. DSTRES ) GOTO 140
130 CONTINUE
WRITE(6,2) NEWTON
2 FORMAT(//,30X,'***WARNING - PLASTICITY ALGORITHM DID NOT ',
1 'CONVERGE AFTER ',I3,' ITERATIONS')
140 CONTINUE
变量HARD1表示硬化率。原文认为 项对 求导后的结果为 ,这个结果进行了一定程度的简化。
我认为较为精确的处理过程是
为前一增量步的等效塑性应变增量,
为当前增量步的等效塑性应变增量;
为前一增量步的时间步长,
为当前增量步的时间步长。卢剑锋的处理方法舍弃了上式中后半部分复杂的项。
改进方法
如果想要对原文中的方法进行改进,可在umat子程序中新增两个状态变量,一个用来保存前一增量步的等效塑性应变增量 ,另一个用来保存前一增量步的时间步长 ,然后按照 式去更新硬化率 H 即可。