Notifications
Clear all

State variables in UMAT


wajeethm
Posts: 2
Topic starter
(@wajeethm)
New Member
Joined: 9 years ago

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

2 Replies
Jorgen
Posts: 3955
Moderator
(@jorgen)
Member
Joined: 3 years ago

At first sight, your code looks OK. I unfortunately do not have time to review it in detail (without charging for my time) 🙁

-Jorgen

2 Replies
wajeethm
Posts: 2
Topic starter
(@wajeethm)
New Member
Joined: 9 years ago

Thanks Jorgen. Yes, I understand you will not be able to look at my code in detail .I realised the mistake I made.The UMAT is working now, but I still have a doubt. Can you please take a look at the attached images. The first image shows the results of the UMAT for a single element. The image shows the degraded stiffness properties which are stored in SDV1. It shows the undamaged value and degraded value(degradation factor is 0.2) .

But the problem arises when I test it on a problem with multiple elements. My SDV values are increasing instead of degradation. When I check the .dat file the values are correct, its only in the .odb file that they are showing an absurd value. Can you please advice?

Thanks and Regards,

Trupti

Reply
Share: