1、为何需要使用用户材料子程序(User-Defined Material, UMAT )?
很简单,当ABAQUS 没有提供我们需要的材料模型时。所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
UMAT 子程序具有强大的功能,使用UMAT 子程序:
(1)可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQU S 中的任何单元。
(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian )矩阵,即应力增量对应变增量的变化率。
(4) 可以和用户子程序“USDFLD ”联合使用,通过“USDFLD ”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
2、需要哪些基础知识?
先看一下ABAQUS 手册(ABAQUS Analysis User's Manual )里的一段话:
Warning:  The use of this option generally requires considerable expertise(一定的专业知识). The user is cautioned that the implementation (实现) of any realistic constitutive (基本) model requires extensive (广泛的) development and testing. Initial testing on a single eleme nt model with prescribed traction loading (指定拉伸载荷) is strongly recommended. 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。当然,最基本的一些概念和知识还是要具备的,比如:
应力(stress),应变(strain )及其分量; volumetric part 和deviatoric part ;模量(modul us )、泊松比(Poisson’s ratio)、拉梅常数(Lame constant);矩阵的加减乘除甚至求逆;还有一些高等数学知识如积分、微分等。
3、UMAT 的基本任务?
我们知道,有限元计算(增量方法)的基本问题是: 已知第n 步的结果(应力,应变等)n σ,n ε,然后给出一个应变增量1+n d ε,计算新的应力1+n σ。UMAT 要完成这一计算,并要计算Jacobian 矩阵DDSDDE(I,J) =εσΔ∂Δ∂/。σΔ是应力增量矩阵(张量或许更合适),εΔ是应变增量矩阵。DDSDDE(I,J) 定义了第J 个应变分量的微小变化对
第I 个应力分量带来的变化。该矩阵只影响收敛速度,不影响计算结果的准确性(当然,不收敛自然得不到结果)。
4、怎样建立自己的材料模型?
本构方程就是描述材料应力应变(增量)关系的数学公式,不是凭空想象出来的,而是根据实验结果作出的合理归纳。比如对弹性材料,实验发现应力和应变同步线性增长,所以用一个简单的数学公式描述。为了解释弹塑性材料的实验现象,又提出了一些弹塑性模型,并用数学公式表示出来。
对各向同性材料(Isotropic material),经常采用的办法是先研究材料单向应力-应变规律(如单向拉伸、压缩试验),并用一数学公式加以描述,然后把该规律推广到各应力分量。这叫做“泛化“(generalization)。
5、一个完整的例子及解释
由于主程序与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)
INCLUDE 'ABA_PARAM.INC'
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
COORDS 当前积分点的坐标
DDSDDE ( NTENS NTENS)大小为NTENS×NTENS的Jacobian矩阵(ε
σΔ∂
∂/),D
Δ
DSDDE(I,J) 定义了第J个应变分量的微小变化对第I 个应
力分量带来的变化。通常Jacobian矩阵是一个对称矩阵,
除非在“*USER MATERIAL”语句中加入了“UNSYM
M”参数;需要更新
DROT对Finite strain问题,应变应该排除旋转部分,该矩阵提
供了旋转矩阵,详见下面的解释;已知
DSTRAN (NTENS)应变增量
dε,已知
n
1+
DTIME增量步的时间增量dt;已知
KSTEP,KINC 传到用户子程序当前的STEP和INCREMENT值
NDI直接应力、应变个数,对三维问题、轴对称问题自然是3
(11,22,33),平面问题是2(11,22);已知
NOEL,NPT 积分点所在单元的编号和积分点的编号
NSHR剪切应力、应变个数,三维问题时3(12,13,23),轴对称问
题是1(12);已知
NTENS=NDI+ NSHR,总应力分量的个数;已知
PNEWDT可用来控制时间步的变化。如果设置为小于1的数,则程
序放弃当前计算,并用新的时间增量DTIME X PNEWDT
作为新的时间增量计算;这对时间相关的材料如聚合物等
有用;如果设为大余1的数,则下一个增量步加大DTIM
E为DTIME X PNEWDT。可以更新。
PROPS (NPROPS)材料常数数组,如模量啊,粘度系数等等;材料参数的个
调用子程序的例子数,等于关键词“*USER MATERIAL”中“CONSTANT
S”常数设定的值;矩阵中元素的数值对应于关键词“US
ER MATERIAL”下面的数据行。作为已知量传入;已知SSE,SPD,SCD 分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗
散。它们对计算结果没有影响,仅仅作为能量输出STATEV (NSTATEV)状态变量矩阵,用来保存用户自己定义的一些变量,如累
计塑性应变,粘弹性应变等等。增量步开始时作为已知量
传入,增量步结束应该更新
STRAN (NTENS)当前应变数组
ε,已知
n
STRESS (NTENS)应力张量数组,对应NDI个直接分量和NSHR个剪切分
σ中的数值通过U
量。在增量步的开始,应力张量矩阵n
MAT和主程序之间的接口传递到UMAT中,在增量步的
σ。对于包含刚
结束UMAT将对应力张量矩阵更新为1+n
体转动的有限应变问题,一个增量步调用UMAT之前就
已经对应力张量进行了刚体转动,因此UMAT中只需处
理应力张量的共旋部分。UMAT中应力张量的度量为柯
西(真实)应力。
下面这个UMAT取自ABAQUS手册,是一个用于大变形下的弹塑性材料模型,注意的是这里需要了解J2理论。
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,
1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,
2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,
3 PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
定义了一些相关参数与变量什么,从ABAQUS安装目录下的子文件夹“…\site”中可到
C
CHARACTER*8 CMNAME
C
DIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS),
1 DDSDDT(NTENS)(应变矩阵),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS)(应变增量矩阵),
2 PREDEF(1),DPRED(1),PROPS(NPROPS)(材料常数矩),COORDS(3),DROT(3,3)(旋
转矩阵),
3 DFGRD0(3,3),DFGRD1(3,3)
声明矩阵的尺寸
C
C    LOCAL ARRAYS
C ----------------------------------------------------------------
C    EELAS  - ELASTIC STRAINS
C    EPLAS  - PLASTIC STRAINS
C    FLOW  - DIRECTION OF PLASTIC FLOW
C ----------------------------------------------------------------
C
局部变量,用来暂时保存弹性应变、塑性应变分量以及流动方向
DIMENSION EELAS(6),EPLAS(6),FLOW(6)
C
PARAMETER(ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0,SIX=6.D0,
1          ENUMAX=.4999D0,NEWTON=10,TOLER=1.0D-6)
C
C ----------------------------------------------------------------
C    UMAT FOR ISOTROPIC ELASTICITY AN
D ISOTROPIC MISES PLASTICITY
C    CANNOT BE USE
D FOR PLAN
E STRESS
C ----------------------------------------------------------------
C    PROPS(1) - E
C    PROPS(2) - NU
C    PROPS(3..) - SYIEL
D AN HARDENING DATA
C    CALLS HARDSUB FOR CURVE OF YIEL
D STRESS VS. PLASTIC STRAIN
C ----------------------------------------------------------------
C
C    ELASTIC PROPERTIES
C
获取杨氏模量,泊松比,作为已知量由PROPS 向量传入
EMOD=PROPS(1)  E
ENU=PROPS(2)  ν
EBULK3=EMOD/(ONE-TWO*ENU)  3K    )21(3ν−=E
k
EG2=EMOD/(ONE+ENU)  2G    )1(2υ+=E
G        EG=EG2/TWO          G    )1(2υ+=E
G        EG3=THREE*EG  3G
ELAM=(EBULK3-EG2)/THREE  λ      3
)23(G k −=λ      DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K1,K2)=ZERO
END DO
END DO 弹性部分,Jacobian 矩阵很容易计算

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。