1、ABAQUS用户材料子程序UMAT介绍报告人:裴华富(一)UMAT简介 ABAQUS 不仅提供标准的有限元分析程序,而且具有良好的开放性,可利用它提供的用户子程序接口生成非标准的分析程序来满足用户的需要,在实际工程中得到广泛应用。ABAQUS 允许用户通过子程序以代码的形式来扩展主程序的功能,并给用户提供了强大而又灵活的用户子程序接口和应用程序接口(Utility Routine), ABAQUS 一共有 42 个用户子程序接口,15 个应用程序接口。(一)UMAT简介 用户可以定义包括:边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数值交换等等。这些用户子程序接口
2、使得用户解决一些问题时有很大的灵活性,同时大大的扩充了 ABAQUS 的功能。(一)UMAT简介 通过用户材料子程序(User-defined Material Mechanical Behavior,简称UMAT)接口,用户可定义任何补充的材料模型,不但任意数量的材料常数都可以作为资料被读取,而且ABAQUS 对于任何数量的与解相关的状态变量在每一材料计数点都提供了存储功能,以便在这些子程序中应用。(二)用户材料子程序功能UMAT 子程序具有强大的功能,使用UMAT 子程序:(1) 可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。(2) 可以用于力学行
3、为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS 中的任何单元;(二)用户材料子程序功能(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化率。(三)编程思路 由于主程序与UMAT 之间存在数据传递,甚至共用一些变量,因此必须遵守有关UMAT 的书写格式,UMAT 中常用的变量在文件开头予以定义,通常格式为:(三)编程思路SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2 STRAN,DSTRAN,TIME,DTIME,TEM
4、P,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(
5、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 (三)编程思路nUMAT 中的应力矩阵、应变矩阵以及矩阵DDSDDE ,DDSDDT ,DRPLDE 等,都是直接分量存储在前,剪切分量存储在后。直接分量有N
6、DI 个,剪切分量有NSHR 个。各分量之间的顺序根据单元自由度的不同有一些差异,所以编写UMAT 时要考虑到所使用单元的类别。下面对UMAT 中用到的一些变量进行说明:(三)编程思路nDDSDDE(NTENS,NTENS)是一个NTENS 维的方阵,称作雅可比矩阵。nSTRESS(NTENS)应力张量矩阵,对应NDI 个直接分量和NSHR 个剪切分量。nSTATEV(NSTATEV)用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT 中。(三)编程思路n状态变量矩阵的维数,等于关键字“*DEPVAR”定义的数值。状态变量矩阵的维数通过ABAQUS 输入文件中的关键字“*DEPVAR”
7、定义,关键字下面数据行的数值即为状态变量矩阵的维数。n材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。(三)编程思路nPROPS(NPROPS)材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。nSSE , SPD , SCD分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。它们对计算结果没有影响,仅仅作为能量输出。(三)编程思路其他变量:STRAN ( NTENS ) :应变矩阵;DSTRAN ( NTENS ) :应变增量矩阵;DTIME :增量步的时间增量;NDI :直接应力分量的个数;NSHR :剪
8、切应力分量的个数;NTENS :总应力分量的个数, NTENS = NDI + NSHR 。(三)编程思路nUMAT 子程序的设计和 FORTRAN 程序设计完全一样,它可由若干个子程序段组成,每个程序段可独立编写,实现不同的功能,然后将各程序单位连接起来即成为一个整体。这就是结构化程序的设计思想。(三)编程思路编制用户子程序时应注意:(1) 用户子程序相互之间不能调用,但可以调用用户自己编写的 Fortran 子程序和 ABAQUS 应用程序。(2) 当用户在用户子程序中利用 OPEN 打开外部文件时,要注意以下两点:一是设备号的选择是有限制的,只能取 1518 和大于 100 的设备号,其
9、余的都已被ABAQUS 占用;二是用户需提供外部文件的绝对路径而不是相对路径。(三)编程思路(3) 对于不同的用户子程序 ABAQUS 调用的时间是不同的,有的是在每个 STEP的开始,有的是 STEP 的结尾,有的是在每个 INCREMENT 的开始等等。ABAQUS调用用户子程序时,都会把当前的 STEP 和 INCREMENT 利用用户子程序的两个实参 KSTEP 和 KINC 传给用户子程序,用户可把它们输出到外部文件中,这样就可清楚的知道 ABAQUS 何时调用该用户子程序。为保证用户子程序的正确执行,子程序的书写必须遵循 ABAQUS 的相关规定。(四)子程序的调用 将这两个文件拷
10、贝到分析目录D:Temp下,将子程序的后缀改为.for,然后在D:Temp下面用运行n在command中: abaqus job=your job name user=your umat n在cae中调用子程序可以采用以下方法:打开job下面的edit菜单,点general,点击user subroutine后面的select,即可选择你所需要的用户子程序。(五)需要解决的关键问题UMAT编程的关键几点:1.提供准确的雅可比距阵,程序收敛速度快;2.非对称雅可比矩阵的处理;3.必须用增量法更新应力;(六)总结 殷-Graham粘弹塑性本构模型与其他本构模型存在很大的差异,在编制UMAT的过程中,需要对本构模型了解清晰的基础上,熟悉力学概念,对雅可比矩阵的非对称性进行处理,提供精确的雅克比矩阵,寻找解决耦合问题的方法。老师和同学们:谢谢你们的支持和帮助!