Skip to main content

UMAT for uniaxial compression (plasticity)test is not converge

Submitted by PK on

Hello everyone,

I am beginner of UMAT.

I am now modeling the model for uniaxial compression of shape memory alloys based on plasticity model and backward euler method.

My material is in cubic 1*1*1. It seems to be simple problem.

Anyway, I am still not familiar with UMAT and Abaqus.

The problem is I apply load just only in Y-axis and specify the boundary condition as in attached file

I think that it passed the plastic deformation zone and abaqus try to calculate...

However, it seems to not finish the calculation... Now, I don't know which part of my UMAT is wrong...

Could you please suggest any advices about...

1) The suitable boundary condition for uniaxial compression test

2) Does the increment time have to equal to the interval increment (number of loops) of backward euler method

3) Maybe some parts of my UMAT is wrong

I copied some parts of my UMAT below

Thank you in advance for suggestion :)

************************************************************************************

C  Set stress threshold

C  Declare PROPS(3) stress for start reorientation to SMVR variable

      SMVR=PROPS(3)

C

C  Using absolute value of max. 

      ABSTR=ABS(STR(2,2))

C  Yield condition, strain rate STRR

      PHI=ABSTR-SMVR

      STATEV(7)=PHI

      FMVR=PROPS(4)

      TOTSTRN=PROPS(5)

      STRR=(FMVR-SMVR)/TOTSTRN

      

      WRITE(7,666) STATEV(1), STATEV(2), STATEV(3), STATEV(4), STATEV(5),

     +           STATEV(6), STATEV(7)

 666  FORMAT( F12.8,F12.8,F12.8,F12.8,F12.8,F12.8,F12.8)

 

C  Compare PHI that greater than zero or not. If it is greater than zero, the reorientation will begin.

C

   10  IF(PHI.GE.ZERO) THEN 

C Flow direction for Tresca criteria

C   

      FLOW(1)=1

      FLOW(2)=-1

       DO K1=3, NTENS

       FLOW(K1) = 0

       END DO

C Calculate the plastic multiplier coefficient to compensate stress come back to the yield surface

C

      

      DO NEWTON=1,10

      RSH=ABS(STR(1,1)-STR(2,2)-SMVR+STRR*DP)

      DP=DP+RSH/(THREE*GSHR+STRR)

      IF(DABS(RSH).LT.TOLER) GOTO 20

      END DO

   20 CONTINUE      

C

C Update twinning strain (ETW)

      ETW(1)=ETW(1)+DP*FLOW(1)

      ETW(2)=ETW(2)+DP*FLOW(2)

      DO K1=3, NTENS

      ETW(K1)=ETW(K1)+DP*FLOW(K1)

      END DO

C

C Increment of twinning strain part

C

      DTWSTRAN(1)=DP*FLOW(1)

      DTWSTRAN(2)=DP*FLOW(2)

      DO K1=3, NTENS

      DTWSTRAN(K1)=DP*FLOW(K1)

      END DO

C

C Max.strain in 45 deg. twin boundary (Var.1 and Var2 is perpendicular to each other)

C C = square root part

C MAXTWSTR = Maximum shear strain that acts to twin boundary (45 deg)

      C = SQRT(((DTWSTRAN(1)-DTWSTRAN(2))/2)**2 + DTWSTRAN(4)**2)

      MAXPTWIN= (DTWSTRAN(1)+DTWSTRAN(2))/2 + C

      MINPTWIN= (DTWSTRAN(1)+DTWSTRAN(2))/2 - C

      MAXTWSTR = (MAXPTWIN-MINPTWIN)/2

C----------------------------------------------------------------------------------        

C If the var.2 grows in the expense of var.1 , update var.2 volume fraction

C

      IF(ABS(STR(1,1)).GE.ABS(STR(2,2))) THEN

      IF (VFLAG.EQ.0) THEN

         V1=ONE

            COUNT=ZERO

            V2=ZERO

         VFLAG = 1

      ELSE

             DV2=MAXTWSTR/TOTSTRN

             COUNT=COUNT+1

             CV2=DV2*COUNT

             V2=CV2

             V1=V1-CV2

         END IF

         GOTO 20

C

C If the var.1 grows in the expense of var.2, update var.1 volume fraction

C

      ELSE IF(ABS(STR(1,1)).LT.ABS(STR(2,2))) THEN

         IF (VFLAG.EQ.0) THEN

             V2=ONE

             COUNT=ZERO

             V1=ZERO

             VFLAG = 1

         ELSE

             DV1=MAXTWSTR/TOTSTRN

             COUNT=COUNT+1

             CV1=DV1*COUNT

             V2=V2-CV1

             V1=CV1

         END IF

         GOTO 20

      END IF   

C------------------------------------------------------------------------------------

C Update stress, elastic strain

C

      DO K1=1, NDI

        EELAS(K1) = EELAS(K1) + FLOW(K1)*DP

        STRESS(K1)=(1-DP*(EG2+ELAM)/ABS(STRESS(K1)))*STRESS(K1)

      END DO

      DO K1=NDI+1,NTENS

         EELAS(K1) = EELAS(K1) + FLOW(K1)*DP

         STRESS(K1)=(1-DP*(EG2+ELAM)/ABS(STRESS(K1)))*STRESS(K1)

      END DO

C  

C Calculate Jacobian matrix. Jacobian matrix related to convergent of solution in ABAQUS

C

      EFFG=GSHR*SMVR/ABS(STR(1,1)-STR(2,2))

      EFFG2=TWO*EFFG

      EFFG3=THREE/TWO*EFFG2

      EFFLAME=(EBULK-EFFG2)/THREE

      EFFHRD=EG3*STRR/(EG3+STRR)-EFFG3

      DO K1=1, NDI

        DO K2=1, NDI

           DDSDDE(K2,K1)=EFFLAM

        END DO

        DDSDDE(K1,K1)=EFFG2+EFFLAM

      END DO

      DO K1=NDI+1,NTENS

       DDSDDE(K1,K1)=EFFG

      END DO

      DO K1=1, NTENS

        DO K2=1, NTENS

           DDSDDE(K2,K1)=DDSDDE(K2,K1)+EFFHRD*FLOW(K2)*FLOW(K1)

        END DO

      END DO

C

C In the last part(before calculation Jacobian matrix), we have to tell ABAQUS that if Variant1 or variant2 is not equal to 1

C the calculation in the reorientation process is continue

C

      IF(MAXTWSTR.LT.TOTSTRN) THEN 

          GOTO 10

      ELSE IF(MAXTWSTR.GE.TOTSTRN) THEN 

DO K1=1,NDI

         STATEV(K1)=STR(K1,K1)

         STATEV(K1+NINE)=EELAS1(K1,K1)

END DO

  STATEV(4)=STR(1,2)

  STATEV(5)=STR(2,3)

  STATEV(6)=STR(1,3)

  STATEV(13)=EELAS1(1,2)

  STATEV(14)=EELAS1(2,3)

  STATEV(15)=EELAS1(1,3)

  STATEV(16)=ETW(1)

  STATEV(17)=ETW(2)

  STATEV(18)=ETW(3)

         STATEV(19)=V1

         STATEV(20)=V2

         STATEV(21)=DP

          RETURN

      END IF

      END IF 

      RETURN

      END

Attachment Size
0627.txt 3.71 KB