ABAQUS- UMAT-各向同性线弹性

发布时间 2023-06-06 17:03:55作者: PeterRabbi

1. 各向同性线弹性本构模型

指标记法:\(\sigma_{ij}=\lambda\varepsilon_{kk}\delta_{ij}+2\mu\varepsilon_{ij}\)

\[\begin{bmatrix} \sigma_1\\\sigma_2\\\sigma_3\\\sigma_4\\\sigma_5\\\sigma_6 \end{bmatrix} = \begin{bmatrix} c&\lambda&\lambda&0&0&0\\\lambda&c&\lambda&0&0&0\\\lambda&\lambda&c&0&0&0\\0&0&0&\mu&0&0\\0&0&0&0&\mu&0\\0&0&0&0&0&\mu \end{bmatrix} \begin{bmatrix} \varepsilon_1\\\varepsilon_2\\\varepsilon_3\\\varepsilon_4\\\varepsilon_5\\\varepsilon_6 \end{bmatrix} \]

其中 \(K=\frac{E}{3(1-2\nu)}\)\(\mu=G=\frac{E}{2(1+\nu)}\)\(\lambda=\frac{\nu E}{(1+\nu)(1-2\nu)}\)\(c=\lambda+2\mu=\frac{E(1-\nu)}{(1+\nu)(1-2\nu)}\)

2. UMAT需要实现的功能

截屏2023-06-02 09.03.33

3. UMAT函数头

以下是ABAQUS给出的编程框架:

   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,JSTEP,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),
     4 JSTEP(4)
C     
C      user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD
C      and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
C
      RETURN
      END

其中1-14行是ABAQUS所提供的固定的函数头。

常用的基本变量及其意义:

基本变量 含义
STRESS 应力张量
DSRTRAN 应变增量张量
DDSDDE 雅可比矩阵,刚度矩阵
NDI Number of direct stress components at this point.正应力分量个数
NSHR Number of engineering shear stress components at this point.剪应力分量个数
NTENS Size of the stress or strain component array (NDI + NSHR).

4. 编程实例

整体代码如下:

      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,JSTEP,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),
     4 JSTEP(4)
c
      PARAMETER(ONE=1.D0, TWO=2.D0)
C
C      user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD
C      and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
C
C     ELAS PROPS
      EE=PROPS(1)
      ENU=PROPS(2) 
      EG=EE/(TWO*(ONE + ENU))
      ELAM=(ENU*EE)/((ONE + ENU)*(ONE - TWO*ENU))
C
C     ELAS STIFFNESS
      DO I=1, NDI
            DO J=1, NDI
                  DDSDDE(I, J)=ELAM
            END DO
            DDSDDE(I, I)=TWO*EG+ELAM
      END DO
      DO I=NDI+1, NTENS
            DDSDDE(I, I)=EG 
      END DO
C
C     CALC STRESS
      DO I=1, NTENS
            DO J=1, NTENS
                  STRESS(I)=STRESS(I)+DDSDDE(I, J)*DSTRAN(J)
            END DO
      END DO
C
      RETURN
      END

16行的作用是定义常量(PARAMETER函数),其中里面的1.D0中的D使得常量为双精度。

21行到43行的代码解释:

​ 21-25行:定义常数的输入。开头的E表示弹性

​ 27-36行:填入参数到雅各比矩阵

​ 38-43行:计算应力增量张量并更新应力张量