Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TugboatEng on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

UMAT subroutine help

Status
Not open for further replies.

elle53

Structural
Joined
Apr 16, 2015
Messages
4
Location
GB
Dear all,

I am trying to get familiar with UMAT subroutines so I started experimenting with a simple UMAT for thermo-elastic behaviour.

I've written the following code and run a coupled temperature displacement analysis using the UMAT code. I then compared the results with the same model that used the built-in software capabilities instead of the UMAT. Although shear stress components are fine, direct stress components are off.

Any ideas why is this the case?

Here is the code:

SUBROUTINE UMAT(STRESS, STATEV, DDSDDE, SSE, SPD, SCD, RPL,
1 DDSDDT, DRPLDE, DRPLDT, STRAN, DSTRAN, TIME, DTIME, TEMP, DTEMP,
2 PREDEF, DPRED, CMNAME, NDI, NSHR, NTENS, NSTATV, PROPS, NPROPS,
3 COORDS, DROT, PNEWDT, CELENT, DFGRD0, DFGRD1, NOEL, NPT, LAYER,
4 KSPT, KSTEP, KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
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), TIME(2)
C
DOUBLE PRECISION alpg, depsth, depsK, EMOD, POIS, deps(NTENS)

C
Integer i, j
C
C -----------------------------MATERIAL PROPERTIES-----------------------------------
EMOD = 70000D0
POIS = 0.22D0
alp = 0.000009D0
C
C --------------------------THERMOELASTICITY------------------------------
C
LAMDA=POIS*EMOD/((1D0+POIS)*(1D0-2D0*POIS)) !Lame 1st constant
MI=EMOD/(2D0*(1D0+POIS)) !Lame 2nd constant
C
depsth = alp*DTEMP !Thermal strain increment
depsK=SUM(DSTRAN(1:NDI))-3D0*depsth !εkk-3*depsth
deps(1:NDI)=DSTRAN(1:NDI)-depsth !εij-depsth*δij
deps(NDI+1:NTENS)=0.5D0*DSTRAN(NDI+1:NTENS) !εij-depsth*δij
C
DO i=1, NDI
STRESS(i)=STRESS(i)+(LAMDA*depsK)+(2D0*MI*deps(i))
END DO
DO j=NDI+1,NTENS
STRESS(j)=STRESS(j)+2D0*MI*deps(j)
END DO
C
C Tangent stiffness matrix
DO i=1, NDI
DO j=1, NDI
DDSDDE(i, j)=LAMDA
END DO
DDSDDE(i, i)=LAMDA+2D0*MI
DDSDDE(i+NDI, i+NDI)=MI
END DO
C
C
RETURN
END

Many thanks!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top