Hello everyone,
I am writing a UMAT to study the degraded strength of plain woven composites. As I am using UMAT for the first time, I have tried to develop the code for a simpler problem. I have written a code for a homogenous,elastic half space .I have tried a simple approach of using a Tsai-Wu failure criteria and when the failure is initiated, the stiffness properties are degraded. I have got the results but I am unable to understand the values that are stored in the state variables. I tried to print them in a text file, but I am not getting accurate results. Can someone please point out my mistake? My code is given below:
*USER SUBROUTINE
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 material
C
C
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)
C
C
PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0)
C + SIX=6.D0, NINE=9.D0, TOLER=0.D-6)
C MATERIAL AND STRENGTH PARAMETERS
PARAMETER(YT=0.06D3,XC=-1.85D3,YC=-0.06D3,XT=2.33D3,S=0.09D3)
C
DIMENSION DSTRESS(6)
E11 = 166.9D3
E22 = 8.55D3
E33 = 8.55D3
v12 = 0.33
v13 = 0.33
v23 = 0.48
G12 = 5.83D3
G13 = 5.83D3
G23 = 2.88D3
SET UP ELASTICITY MATRIX
C C22=C11 , C23 = C13 , C55=C44 , 2C66 = C11-C12
C
v31 = 0.016
v21 = 0.016
E22 = E33
v23 = v32
v12 = v13
r = (1-v12*v21 -v23*v32 - v31*v13 - 2*v21*v32*v13)/(E11*E33*2)
C11 =(1-v23*v32)/(r*E22*2)
C12 = (v21+v31*v23)/(r*E11*E33)
C13= (v31+v21*v32)/(r*E22*2)
C33 = (1-v12*v21)/(r*E11*E22)
C44 = G23
C
C DEFINING JACOBIAN MATRIX
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K2,K1) = 0.0
ENDDO
ENDDO
DDSDDE(1,1)=C11
DDSDDE(2,2)=C11
DDSDDE(1,2)=C12
DDSDDE(1,3)=C13
DDSDDE(2,3)=C13
DDSDDE(3,3)=C33
DDSDDE(4,4)=C44
DDSDDE(5,5)=C44
DDSDDE(6,6)=(C11-C12)/2
C STRESS INCREMENT
DO K1=1,NTENS
DO K2=1,NTENS
STRESS(K1) =STRESS(K1) + DDSDDE(K1,K2) * DSTRAN(K2)
ENDDO
ENDDO
C
C
C
C DEFINE FAILURE CRITERIA : (TSAI-WU FAILURE CRITERIA IS USED IN THIS CODE)
F1 = (1/XT) - (1/XC)
F2 = (1/YT) - (1/YC)
F11 = -1/(XT*XC)
F22 = -1/(YT*YC)
F66 = 1/(S**2)
C F12 =0.5
C F23 = 0.5
S11 =STRESS(1)
S22 =STRESS(2)
S33 =STRESS(3)
S12 =STRESS(4)
FI = (F1*S11)+F2*(S22*S33)+F11*(S11**2)+F22*(S22**2 +S33**2)+ (S11*S22 + S11*S33)+ S22*S33 + 2*F66*(S12**2)
C
C
C DEGRADE MATERIAL PROPERTIES
IF (FI.GE. 1.D0) THEN
STATEV(1) = 0.2*C11
STATEV(2) = 0.2*C12
STATEV(3) = 0.2*C13
STATEV(4) = 0.2*C33
STATEV(5) = 0.2*C44
ENDIF
c
c is the file open?
C if (105.NE.isFileOpen) then
C
IF (FI.GE. 1.D0) THEN
c open external file
open(unit=109,file=/home/trupti/UMAT/STATEV.txt,STATUS=NEW)
c change file flag
C isFileOpen = .TRUE.
C
c
c write data to STATEV.txt file
write(109,*) STATEV(1),STATEV(2),STATEV(3),STATEV(4),STATEV(5)
C DO K1=1,NTENS
write(109,*)S11,S22,S33,S12
C ENDDO
end if
C
C write(109,*) STATEV(NPT)
C
C
c OPEN (UNIT=uSTATEV,
c 1 FILE=STATEV.txt,
c Also tried to put the full path for the file above
c 2 STATUS=NEW)
c WRITE (uSTATEV,101) STATEV(1)
c CLOSE (UNIT=uSTATEV)
RETURN
END