coolFL
Mechanical
- Mar 4, 2015
- 39
Hi everybody,
I am trying to simulate UMAT subroutine for very simple 3D problem. I have a cantilever beam and I am applying (-ve) pressure at one end. In UMAT, I have written a code for Isotropic Isothermal elasticity. Which is nothing but *ELASTIC option in Abaqus. But still I am getting compilation error in Abaqus. Can somebody please help me in fixing this very simple problem on UMAT?
UMAT code is as follows and the abaqus file for 3D cantilever beam is also attached,
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
real :: EMOD,ENU,EBULK3,EG2,EG,EG3,ELAM
integer :: K1,K2
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)
!This code is written to simulate Isotropic Isothermal Elasticity, which is nothing but uniform elastic model from Abaqus
!PROPS(1) = E; Young's modulus of the material
!PROPS(2) = nu; Poission's ratio of the material
!Please note this code is not applicable for plane stress conditions as the stiffness matrix is different for them
!if (NDI/=3) then
! write(7,*) 'This UMAT only be used for elements with 3D'
! call XIT
!endif
!Elastic Properties definition
EMOD=PROPS(1)
ENU=PROPS(2)
EBULK3=EMOD/(1-2*ENU)
EG2=EMOD/(1+ENU)
EG=EG2/2
EG3=3*EG
ELAM=(EBULK3-EG2)/3
do K1= 1, NDI
do K2= 1,NDI
DDSDDE(K2,K1)=ELAM
end do
DDSDDE(K1,K1)=EG2+ELAM
end do
do K1= NDI+1, NTENS
DDSDDE(K1,K1)=EG
end do
!This part calculates stress based on element stiffness matrix and engineering strain
do K1=1, NTENS
do K2=1, NTENS
STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
end do
end do
RETURN
END
Thanks in advance,
Nik
I am trying to simulate UMAT subroutine for very simple 3D problem. I have a cantilever beam and I am applying (-ve) pressure at one end. In UMAT, I have written a code for Isotropic Isothermal elasticity. Which is nothing but *ELASTIC option in Abaqus. But still I am getting compilation error in Abaqus. Can somebody please help me in fixing this very simple problem on UMAT?
UMAT code is as follows and the abaqus file for 3D cantilever beam is also attached,
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
real :: EMOD,ENU,EBULK3,EG2,EG,EG3,ELAM
integer :: K1,K2
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)
!This code is written to simulate Isotropic Isothermal Elasticity, which is nothing but uniform elastic model from Abaqus
!PROPS(1) = E; Young's modulus of the material
!PROPS(2) = nu; Poission's ratio of the material
!Please note this code is not applicable for plane stress conditions as the stiffness matrix is different for them
!if (NDI/=3) then
! write(7,*) 'This UMAT only be used for elements with 3D'
! call XIT
!endif
!Elastic Properties definition
EMOD=PROPS(1)
ENU=PROPS(2)
EBULK3=EMOD/(1-2*ENU)
EG2=EMOD/(1+ENU)
EG=EG2/2
EG3=3*EG
ELAM=(EBULK3-EG2)/3
do K1= 1, NDI
do K2= 1,NDI
DDSDDE(K2,K1)=ELAM
end do
DDSDDE(K1,K1)=EG2+ELAM
end do
do K1= NDI+1, NTENS
DDSDDE(K1,K1)=EG
end do
!This part calculates stress based on element stiffness matrix and engineering strain
do K1=1, NTENS
do K2=1, NTENS
STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
end do
end do
RETURN
END
Thanks in advance,
Nik