3σdevr?
2?(19-19)
它是屈服面的法向,即r?fσ。在偏应力空间,Von Mises屈服面为环状,所以屈服面的法向通过圆心,如图19-1所示:
图19-1 径向返回算法
从图19-1可以看出,在弹性预测阶段,塑性应变和内变量保持固定;而在塑性修正阶段,总体应变保持不变。
在迭代开始时,程序对应力和应变设初始值:
p?0?p?0??0??0??0?p,???n,???0,σ?C:εn?1?ε ?εnε??(19-20)
应力在第k次迭代时为:
σ?k??σ?0?????k?C:r?k?
^^(19-21)
定义屈服面的单位法向矢量为:
n?r/r?0??0??σ0dev/σ0dev,r?0??3/2n
(19-22)
且在整个算法的塑性修正状态过程中始终保持不变,因此塑性应变的更新是??的线性函数。
在k次迭代时将检查屈服条件:
19-6
f?k????k???Y??k????0??3????k???Y??k?
????????3??????????
?????0kkkY??????(19-23)
若收敛,则迭代完毕,增量步结束。否则将计算塑性参数的增量:
(19-24)
3??H?k?并对塑性应变和内变量进一步更新:
n?σ^0dev/σ0dev,?εp?k??????k?32n,???k?????k? (19-25a)
(19-25b)
?k?^εp?k?1??εp?k???εp?k?
σ?k?1??C:εn?1?ε?p?k?1???σ?k???σ?k??σ?2????k?32n (19-25c)
(19-25d) (19-25e)
^??k?1????k?????k?
???k?1?????k?????k?
然后将更新的变量返回屈服条件进行检查,整个过程将重复直至收敛为止。这就是增量步中应力更新的过程。
18.3 ABAQUS用户材料子程序
用户材料子程序(User-defined Material Mechanical Behavior,简称UMAT)通过与ABAQUS主求解程序的接口实现与ABAQUS的数据交流。在输入文件中,使用关键字“*USER MATERIAL”表示定义用户材料属性。
18.3.1 子程序概况与接口
UMAT子程序具有强大的功能,使用UMAT子程序:
(1) 可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计
算,扩充程序功能。
19-7
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予
ABAQUS中的任何单元;
(3) 必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量
对应变增量的变化率。
(4) 可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元
每一物质点上传递到UMAT中场变量的数值。
由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关UMAT的书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为:
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) C
INCLUDE 'ABA_PARAM.INC' C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
RETURN
END
UMAT中的应力矩阵、应变矩阵以及矩阵DDSDDE,DDSDDT,DRPLDE等,都是直接分量存储在前,剪切分量存储在后。直接分量有NDI个,剪切分量有NSHR个。各分量之间的顺序根据单元自由度的不同有一些差异,所以编写UMAT时要考虑到所使用单元的类别。下面对UMAT中用到的一些变量进行说明:
19-8
DDSDDE?NTENS,NTENS?
是一个NTENS维的方阵,称作雅可比矩阵,即??σ/??ε,?σ是应力的增量,?ε是应变的增量,DDSDDE?I,J?表示增量步结束时第J个应变分量的改变引起的第I个应力分量的变化。通常雅可比是一个对称矩阵,除非在“*USER MATERIAL”语句中加入了“UNSYMM”参数。
STRESS?NTENS?
应力张量矩阵,对应NDI个直接分量和NSHR个剪切分量。在增量步的开始,应力张量矩阵中的数值通过UMAT和主程序之间的接口传递到UMAT中;在增量步的结束,UMAT将对应力张量矩阵更新。对于包含刚体转动的有限应变问题,一个增量步调用UMAT之前就已经对应力张量的进行了刚体转动,因此在UMAT中只需处理应力张量的共旋部分。UMAT中应力张量的度量为柯西(真实)应力。
STATEV?NSTATEV?
用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT中。也可在子程序USDFLD或UEXPAN中先更新数据,然后在增量步开始时将更新后的数据传递到UMAT中。在增量步结束时必须更新状态变量矩阵中的数据。
和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。
NSTATEV
状态变量矩阵的维数,等于关键字“*DEPVAR”中定义的数值。状态变量矩阵的维数通过ABAQUS输入文件中的关键字“*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。
NPROPS
材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。
19-9
PROPS?NPROPS?
材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。
SSE,SPD,SCD
分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。它们对计算结果没有影响,仅仅作为能量输出。
其他变量:
STRAN?NTENS?:应变矩阵 DSTRAN?NTENS?:应变增量矩阵
DTIME:增量步的时间增量 NDI:直接应力分量的个数 NSHR:剪切应力分量的个数
NTENS:总应力分量的个数,NTENS?NDI?NSHR
使用UMAT时需要注意单元的沙漏控制刚度和横向剪切刚度。通常减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的弹性性质定义的。这些刚度基于材料初始剪切模量的值,通常在材料定义中通过“*ELASTIC”选项定义。但是使用UMAT时,ABAQUS对程序输入文件进行预处理的时候得不到剪切模量的数值。所以这时候用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。
18.3.2 编程
基于上面所述的率相关材料公式和应力更新算法,参照ABAQUS用户材料子程序的接口规范,进行UMAT的编程。有限元模拟结果将在下一节给出,在最后一节中还给出了相应的程序源代码。
由于UMAT在单元的积分点上调用,增量步开始时,主程序路径将通过UMAT的
19-10