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
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
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 |