搜档网
当前位置:搜档网 › abaqus材料子程序

abaqus材料子程序

abaqus材料子程序
abaqus材料子程序

abaqus材料子程序

各向同性材料损伤本构模型

SUBROUTINE

UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,

+ RPL,DDSDDT,DRPLDE,DRPLDT,

+

STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMN AME,

+

NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEW DT,

+

CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC )

INCLUDE 'ABA_PARAM.INC'

CHARACTER*80 CMNAME

DIMENSION STRESS(NTENS),STATEV(NSTATV),

+ DDSDDE(NTENS,NTENS),DDSDDT(NTENS),

+ DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS), + TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS), + COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)

DIMENSION STRANT(6),TSTRANT(4),PT(1)

DIMENSION OLD_STRESS(6)

DIMENSION DOLD_STRESS(6),D_STRESS(6)

DIMENSION

C(6,6),CD(6,6),DSTRESS(6),BSTRESS(6),ROOT(3),

+ DFMNDE(6),DDMDE(6),DCDDM(6,6),ATEMP1(6), ATEMP2(6)

PARAMETER

(ZERO=0.D0,ONE=1.D0,TWO=2.D0,FOUR=4.D0,HALF = 0.5D0) C start

C IF (NPROPS.LT.2) THEN

C WRITE(7,*) '** ERROR: UMAT REQUIRES *NPROPS=2'

C STOP

C EN

D IF

E11 =PROPS(1)

V12 =PROPS(2)

G12 =PROPS(1)/TWO/(ONE+PROPS(2))

C Critical values of stresses

XT=PROPS(3)

XC=PROPS(4)

XS=PROPS(5)

GX=PROPS(6) !Fracture energy in matrix ETA=0.001

C Current strain

DO I = 1, NTENS

STRANT(I) = STRAN(I) + DSTRAN(I)

END DO

C Stiffness

DO I = 1, 6

DO J = 1, 6

C(I,J)=ZERO

END DO

END DO

ATEMP = (1+V12)*(1-TWO*V12)

C(1,1) = E11*(1-V12)/ATEMP

C(2,2) = E11*(1-V12)/ATEMP

C(3,3) = E11*(1-V12)/ATEMP

C(1,2) = E11*V12/ATEMP

C(1,3) = E11*V12/ATEMP

C(2,3) = E11*V12/ATEMP

C(4,4) = G12

C(5,5) = G12

C(6,6) = G12

DO I = 2, 6

DO J = 1, I-1

C(I,J) = C(J,I)

END DO

END DO

C Critical values of strains

XET=XT/(C(1,1)-2*V12*C(1,2))

XEC=XC/(C(1,1)-2*V12*C(1,2))

XES=XS/C(4,4)

DMOLD = STATEV(1)

C Strain initiation criterion

A11 = STRANT(1)**TWO+STRANT(2)**TWO+STRANT(3)**TWO

A12 = A11 / XET / XEC

A21 = STRANT(1)+STRANT(2)+STRANT(3)

A22 = (XEC - XET) / XEC / XET * A21

A31 = STRANT(4)**TWO+STRANT(5)**TWO+STRANT(6)**TWO

A32 = A31 / XES**TWO

A1= A12 + A22 + A32

C B11 = STRANT(2)**TWO

C B12 = B11 / XET / XEC

C B21 = STRANT(2)

C B22 = (XEC - XET) / XEC / XET * B21 C B31 = STRANT(5)**TWO

C B32 = B31 / XES**TWO

C B1= B12 + B22 + B32

C C11 = STRANT(3)**TWO

C C12 = C11 / XET / XEC

C C21 = STRANT(3)

C C22 = (XEC - XET) / XEC / XET * C21 C C31 = STRANT(6)**TWO

C C32 = C31 / XES**TWO

C C1= C12 + C22 + C32

STATEV(2)=A1

C STATEV(3)=B1

C STATEV(4)=C1

FMN = ZERO

IF (A1.GT.ZERO) THEN

FMN =SQRT(A1)

C IF (B1.GT.ONE) THEN

C FMN =FMN+SQRT(B1)

C IF(C1.GT.ONE) THEN

C FMN =FMN+SQRT(C1)

C EN

D IF

C EN

D IF

END IF

STATEV(5)=FMN

C write(*,*) FMN

DM = ZERO

DDMDFMN = ZERO

DO I = 1, 6

DFMNDE(I) = ZERO

DDMDE(I) = ZERO

END DO

IF (FMN .GT. ONE) THEN

C CALCULATE DM, DDMDFMN

C WRITE(6,*)FMN

T1 = (C(1,1)-2*V12*C(1,2)) * XET**2 * CELENT / GX

T2 = (ONE - FMN) * T1

DM = ONE - EXP(T2)/FMN

C WRITE(6,*)'T1 ',T1,' T2', T2, ' DM', DM

C write(*,*) DM

C CALCULATE THE DERIVATIVE OF DAMAGE VARIABLE WITH RESPECT TO FAILURE

C RITERION

DDMDFMN = (ONE / FMN + T1) * (ONE - DM)

C CALCULATE DFMNDE

IF (DM .GT. DMOLD) THEN

DFMNDE(1) = HALF/FMN*(TWO*STRANT(1)+XEC-XET)/XET/XEC

DFMNDE(2) = HALF/FMN*(TWO*STRANT(2)+XEC-XET)/XET/XEC

DFMNDE(3) = HALF/FMN*(TWO*STRANT(3)+XEC-XET)/XET/XEC

DFMNDE(4) = ONE/FMN*TWO*STRANT(4)/XES**TWO

DFMNDE(5) = ONE/FMN*TWO*STRANT(5)/XES**TWO

DFMNDE(6) = ONE/FMN*TWO*STRANT(6)/XES**TWO

DO I = 1, 6

DDMDE(I) = DFMNDE(I) * DDMDFMN END DO

END IF

END IF

DM = MAX (DM, DMOLD)

C write(6,*) DM

C SAVE THE OL

D STRESS TO OLD_STRESS

DO I = 1, NTENS

OLD_STRESS(I) = STRESS(I)

END DO

C Effective stiffness

DO I = 1, 6

DO J = 1, 6

CD(I,J)=C(I,J)

END DO

END DO

IF (DM.NE.ZERO) THEN

CD(1,1) = (ONE - DM)*C(1,1)

CD(1,2) = (ONE - DM)*C(1,2)

CD(2,1) = CD(1,2)

CD(2,2) = (ONE - DM)*C(2,2)

CD(1,3) = (ONE - DM)*C(1,3)

CD(2,3) = (ONE- DM)*C(2,3) CD(3,2) = CD(2,3)

CD(4,4) = (ONE - DM)*C(4,4) CD(5,5) = (ONE - DM)*C(5,5) CD(6,6) = (ONE - DM)*C(5,5) END IF

C Elastic derivative

DO I = 1, 6

DO J = 1, 6

DCDDM(I,J) = ZERO

END DO

END DO

C

C CALCULATE DC/DDM

C

DCDDM(1,1) = -C(1,1)

DCDDM(1,2) = -C(1,2)

DCDDM(2,1) = -C(2,1)

DCDDM(2,2) = -C(2,2)

DCDDM(2,3) = -C(2,3)

DCDDM(3,3) = -C(3,3)

DCDDM(3,1) = -C(3,1)

DCDDM(1,3) = -C(1,3)

DCDDM(4,4) = -C(4,4)

DCDDM(5,5) = -C(5,5)

DCDDM(6,6) = -C(6,6)

C UPDATE THE JACOBIAN

DO I = 1, NTENS

ATEMP1(I) = ZERO

DO J = 1, NTENS

ATEMP1(I) = ATEMP1(I) + DCDDM(I,J) * STRANT(J)

END DO

END DO

DDSDDE=0

DO I = 1, NTENS

DO J = 1, NTENS

DDSDDE(I,J)=CD(I,J)+(ATEMP1(I)*DDMDE(J))*DTIME/(DTI ME+ETA)

END DO

END DO

C Update stresses

DO I = 1, NTENS

STRESS(I)=ZERO

DO J = 1, NTENS

C IF(DM.LT.0.5) THEN

STRESS(I)=STRESS(I)+ CD(I,J) * STRANT(J) C ELSE

C STRESS(I)=STRESS(I)+ CD(I,J) * STRANT(J) * (1-DM)

C ENDIF

END DO

END DO

C Energy

DO I = 1, NDI

SSE = SSE + HALF * (STRESS(I) + OLD_STRESS(I)) * DSTRAN(I)

END DO

DO I = NDI+1, NTENS

SSE = SSE + (STRESS(I) + OLD_STRESS(I)) * DSTRAN(I)

END DO

STATEV(1)=DM

RETURN

END

相关主题