ABAQUS Kelvin Voigt
ABAQUS Kelvin Voigt
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
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),
2 DDSDDT(NTENS),DRPLDE(NTENS),
3 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
4 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
C
C
INTEGER i, j
REAL Y, n, eta
REAL lambda, thetalambda, mu, thetamu
REAL A, B, C, D, F, G
C
REAL, DIMENSION(NTENS,NTENS):: DDSDE
REAL, DIMENSION(NTENS,NTENS):: DDSDS
REAL, DIMENSION(NTENS):: SIGold
C
Y = PROPS(1)
n = PROPS(2)
eta = PROPS(3) ! shear viscosity
C
lambda = Y*n/((1.0d0+n)*(1.0d0-2.0d0*n))
mu = Y/(2.0d0*(1.0d0+n))
thetalambda = 3.0d0*eta/Y
thetamu = eta/mu
C
A = lambda*(1.0d0 + thetalambda/DTIME) +
1 2.0d0*mu*(1.0d0 + thetamu/DTIME)
B = lambda*(1.0d0 + thetalambda/DTIME)
C = lambda + 2.0d0*mu
D = lambda
F = 2.0d0*mu*(1.0d0 + thetamu/DTIME)
G = 2.0d0*mu
C
DO i = 1,NTENS
DO j = 1,NTENS
DDSDDE(i,j) = 0.0d0
DDSDE(i,j) = 0.0d0
DDSDS(i,j) = 0.0d0
END DO
END DO
C
C DEFINE TENSOR COEFFICIENTS RELATED TO NORMAL STRESSES
C
DO i = 1,NDI
DO j = 1,NDI
DDSDDE(i,j) = B
DDSDE(i,j) = D
DDSDS(i,j) = 0.0d0
END DO
DDSDDE(i,i) = A
DDSDE(i,i) = C
DDSDS(i,i) = -1.0d0
END DO
C
C DEFINE TENSOR COEFFICIENTS RELATED TO SHEAR STRESSES
C
DO i = NDI+1,NTENS
DDSDDE(i,i) = F/2.0d0
DDSDE(i,i) = G/2.0d0
DDSDS(i,i) = - 1.0d0
END DO
C
C STORE PRESENT STRESS STATE IN ARRAY SIGold
C
DO i= 1,NTENS
SIGold(i) = STRESS(i)
END DO
C
C UPDATE STRESSES
C
DO i = 1,NTENS
DO j = 1,NTENS
STRESS(i) = STRESS(i) + DDSDDE(i,j)*DSTRAN(j) +
1 DDSDE(i,j)*STRAN(j) +
2 DDSDS(i,j)*SIGold(j)
END DO
END DO
C
RETURN
END