Abaqus Umat
Abaqus Umat
1 RPL,DDSDDT,DRPLDE,DRPLDT,STRAN,DSTRAN,
2 TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,NDI,NSHR,NTENS,
3 NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,CELENT,
4 DFGRD0,DFGRD1,NOEL,NPT,KSLAY,KSPT,KSTEP,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),
4 DFGRD0(3,3),DFGRD1(3,3)
C
DIMENSION EELAS(6),EPLAS(6),ALPHA(6),dFsig(6),OLDS(6),OLDPL(6),
1 HARD(3),DEP(6), CdFsig(6),dFsigC(6)
C
DOUBLE PRECISION I1
C
PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0,SIX=6.D0,
1 ENUMAX=.4999D0,NEWTON=100,TOLER=1.0D-6)
C
IF (NDI.NE.3) THEN
WRITE(6,1)
1 FORMAT(//,30X,'***ERROR - THIS UMAT MAY ONLY BE USED FOR ',
$ 'ELEMENTS WITH THREE DIRECT STRESS COMPONENTS')
ENDIF
C
C ELASTIC PROPERTIES
C
EMOD=PROPS(1) !EMOD=YOUNG'S MODULUS
ENU=MIN(PROPS(2),ENUMAX) !ENUMAX=user defined limitation of posson
ENU=POISSON RATIO
C
EBULK3=EMOD/(ONE-TWO*ENU) !EBULK3 = K*3
EG2=EMOD/(ONE+ENU) !EG2 = G*2
EG=EG2/TWO !EG = G
EG3=THREE*EG !EG3 = G*3
ELAM=(EBULK3-EG2)/THREE !ELAM = λ = K-2/3*G
EBULK=EBULK3/THREE !EBULK = K
C
C READ THE MATERIAL PARAMETERS: F=A*I1+Q-(S0+H*EQPLAS**B)
A=PROPS(3)
S0=PROPS(4)
H=PROPS(5)
B=PROPS(6)
C
C ELASTIC STIFFNESS
C
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
C
C STORE THE EQUIVALENT PLASTIC STRAIN TO THE 13th STATE VARABLE
C
EQPLAS=STATEV(2*NTENS+1) ! EQPLAS - the equivalent PLASTIC STRAINS
C
C SAVE STRESS AND PLASTIC STRAINS AND
C CALCULATE PREDICTOR STRESS AND ELASTIC STRAIN
C
DO K1=1,NTENS
EELAS(K1)=EELAS(K1)+DSTRAN(K1)
DO K2=1,NTENS
STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
END DO
END DO
C
C CALCULATE EQUIVALENT VON MISES STRESS: Q OR Seq
C
SMISES=(STRESS(1)-STRESS(2))**2.
1 +(STRESS(2)-STRESS(3))**2.
1 +(STRESS(3)-STRESS(1))**2.
DO K1=NDI+1,NTENS
SMISES=SMISES+SIX*STRESS(K1)**2.
END DO
SMISES=SQRT(SMISES/TWO)
C
SHYDRO=(STRESS(1)+STRESS(2)+STRESS(3))/THREE !HYDROSTATIC
STRESS
I1=SHYDRO*THREE !FIRST STRESS INVARIANT
CC
F=A*I1+SMISES-(S0+H*EQPLAS**B)
ITERNO=0
DO WHILE(F.GT.TOLER) !F>TOLER
C
DO K1=1,NDI
dFsig(K1)=1.5*(STRESS(K1)-SHYDRO)/SMISES+A
END DO
DO K1=NDI+1,NTENS
dFsig(K1)=1.5*(STRESS(K1))/SMISES
END DO
C
C dFr=-H*B*R**(B-1.)
IF(EQPLAS.EQ.0.0)THEN
dFr=0.0
ELSE
dFr=-H*B*(EQPLAS**(B-1.))
ENDIF
C
C CALCULATE THE PLASTIC MULTIPLIER
CdFsig=0.0
dFsigCdFsig=0.0
DO K1=1,NTENS
DO K2=1,NTENS
CdFsig(K2)=CdFsig(K2)+DDSDDE(K2,K1)*dFsig(K1)
ENDDO
dFsigCdFsig=dFsigCdFsig+dFsig(K1)*CdFsig(K1)
ENDDO
dR=F/(dFsigCdFsig-dFr)
C SOLVE FOR NEW YIELD STRESS
C AND EQUIVALENT PLASTIC STRAIN INCREMENT USING NEWTON ITERATION
C
DO K1=1,NTENS
DEP(K1)=dR*dFsig(K1)
EPLAS(K1)=EPLAS(K1)+DEP(K1)
EELAS(K1)=EELAS(K1)-DEP(K1)
DO K2=1,NTENS
STRESS(K2)=STRESS(K2)-DDSDDE(K2,K1)*DEP(K1)
ENDDO
ENDDO
C
C CALCULATE EQUIVALENT VON MISES STRESS: Q OR Seq
C
SMISES=(STRESS(1)-STRESS(2))**2.
1 +(STRESS(2)-STRESS(3))**2.
1 +(STRESS(3)-STRESS(1))**2.
DO K1=NDI+1,NTENS
SMISES=SMISES+SIX*STRESS(K1)**2.
END DO
SMISES=SQRT(SMISES/TWO)
C
SHYDRO=(STRESS(1)+STRESS(2)+STRESS(3))/THREE !HYDROSTATIC
STRESS
I1=SHYDRO*THREE !FIRST STRESS INVARIANT
C
C CALCULATE THE EQUIVALENT PLASTIC STRAIN INCREMENT
F=A*I1+SMISES-(S0+H*EQPLAS**B)
C WRITE(6,*)"F",F,ITERNO
C
C dFsig=A*DEL(I,J)+S/Seq
DO K1=1,NDI
dFsig(K1)=1.5*(STRESS(K1)-SHYDRO)/SMISES+A
END DO
DO K1=NDI+1,NTENS
dFsig(K1)=1.5*(STRESS(K1))/SMISES
END DO
C
C dFr=-H*B*R**(B-1.)
IF(EQPLAS.EQ.0.0)THEN
dFr=0.0
ELSE
dFr=-H*B*(EQPLAS**(B-1.))
ENDIF
DO K1=1,NTENS
DO K2=1,NTENS
dFsigC(K2)=dFsigC(K2)+dFsig(K1)*DDSDDE(K1,K2)
ENDDO
ENDDO
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K1,K2)=DDSDDE(K1,K2)-CdFsig(K1)*dFsigC(K2)/
1 (dFsigCdFsig-dFr)
ENDDO
ENDDO
ENDDO
C WRITE(6,*)"CHECK!"
C
C STORE ELASTIC STRAINS, PLASTIC STRAINS AND SHIFT TENSOR
C IN STATE VARIABLE ARRAY
C
DO K1=1,NTENS
STATEV(K1)=EELAS(K1)
STATEV(K1+NTENS)=EPLAS(K1)
END DO
STATEV(2*NTENS+1)=EQPLAS
C
RETURN
END
C