Hi, I'm trying to use the UMAT subroutine for time-dependent elastic modulus analysis. Some of you might recommend that I use the field method. Actually, I already did it, but I face a new problem if the time increment is large. It is hard to use the field method since I have defined each time-increment magnitude according to the field that I define. So, in this case, I think the UMAT subroutine is a good idea. I'm trying to make the UMAT subroutine code with the scenario that I want to update the elastic modulus (E) in some time cases (28 (T1), 50 (T2), 100 (T3), 150 (T4), 200 (T5), 250 (T6), 300 (T7), 350 (T8), and 365 (T9) days). Then, I make a step with time period 365 and increment 1. And then I defined the updated elastic modulus as STATEV. I defined 9 STATEV for each time case. When I submitted the job, the job was complete using the below codes, and when I checked the STATEV results, they also corroborated well with my hand calculation results. The problem is that I want to extract the data for stress, displacement, and others for each time case. When I tried to extract the results using the below codes, I found that the results just refer to the least time case (28 days) for each time. Can someone help me? My model is a 2D plane stress model.
Abaqus
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,JSTEP,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),DFGRD0(3,3),DFGRD1(3,3), 4 JSTEP(4) C PARAMETER (ZERO=0.0D0, ONE=1.0D0, TWO=2.0D0, S=0.38D0, T0=28D0) C E=PROPS(1) v=PROPS(2) T1=PROPS(3) T2=PROPS(4) T3=PROPS(5) T4=PROPS(6) T5=PROPS(7) T6=PROPS(8) T7=PROPS(9) T8=PROPS(10) T9=PROPS(11) C IF (TIME(2).LE.T1) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET1=E*(EXP(S*(1-(T0/T1)**(0.5))))**(0.5) DDSDDE(1,1)=ET1/(ONE-v*v) DDSDDE(2,2)=ET1/(ONE-v*v) DDSDDE(3,3)=ET1*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET1*v/(ONE-v*v) DDSDDE(2,1)=ET1*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T2) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET2=E*(EXP(S*(1-(T0/T2)**(0.5))))**(0.5) DDSDDE(1,1)=ET2/(ONE-v*v) DDSDDE(2,2)=ET2/(ONE-v*v) DDSDDE(3,3)=ET2*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET2*v/(ONE-v*v) DDSDDE(2,1)=ET2*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T3) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET3=E*(EXP(S*(1-(T0/T3)**(0.5))))**(0.5) DDSDDE(1,1)=ET3/(ONE-v*v) DDSDDE(2,2)=ET3/(ONE-v*v) DDSDDE(3,3)=ET3*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET3*v/(ONE-v*v) DDSDDE(2,1)=ET3*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T4) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET4=E*(EXP(S*(1-(T0/T4)**(0.5))))**(0.5) DDSDDE(1,1)=ET4/(ONE-v*v) DDSDDE(2,2)=ET4/(ONE-v*v) DDSDDE(3,3)=ET4*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET4*v/(ONE-v*v) DDSDDE(2,1)=ET4*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T5) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET5=E*(EXP(S*(1-(T0/T5)**(0.5))))**(0.5) DDSDDE(1,1)=ET5/(ONE-v*v) DDSDDE(2,2)=ET5/(ONE-v*v) DDSDDE(3,3)=ET5*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET5*v/(ONE-v*v) DDSDDE(2,1)=ET5*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T6) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET6=E*(EXP(S*(1-(T0/T6)**(0.5))))**(0.5) DDSDDE(1,1)=ET6/(ONE-v*v) DDSDDE(2,2)=ET6/(ONE-v*v) DDSDDE(3,3)=ET6*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET6*v/(ONE-v*v) DDSDDE(2,1)=ET6*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T7) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET7=E*(EXP(S*(1-(T0/T7)**(0.5))))**(0.5) DDSDDE(1,1)=ET7/(ONE-v*v) DDSDDE(2,2)=ET7/(ONE-v*v) DDSDDE(3,3)=ET7*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET7*v/(ONE-v*v) DDSDDE(2,1)=ET7*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T8) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET8=E*(EXP(S*(1-(T0/T8)**(0.5))))**(0.5) DDSDDE(1,1)=ET8/(ONE-v*v) DDSDDE(2,2)=ET8/(ONE-v*v) DDSDDE(3,3)=ET8*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET8*v/(ONE-v*v) DDSDDE(2,1)=ET8*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ELSEIF (TIME(2).LE.T9) THEN DO i=1, NTENS DO j=1, NTENS DDSDDE(i,j)=ZERO END DO END DO ET9=E*(EXP(S*(1-(T0/T9)**(0.5))))**(0.5) DDSDDE(1,1)=ET9/(ONE-v*v) DDSDDE(2,2)=ET9/(ONE-v*v) DDSDDE(3,3)=ET9*(ONE-v)/(TWO*(ONE-v*v)) DDSDDE(1,2)=ET9*v/(ONE-v*v) DDSDDE(2,1)=ET9*v/(ONE-v*v) DO i=1, NTENS DO j=1, NTENS STRESS(i)=STRESS(i)+DDSDDE(i,j)*DSTRAN(j) END DO END DO ENDIF C STATEV(1)=ET1 STATEV(2)=ET2 STATEV(3)=ET3 STATEV(4)=ET4 STATEV(5)=ET5 STATEV(6)=ET6 STATEV(7)=ET7 STATEV(8)=ET8 STATEV(9)=ET9 C RETURN END