当前位置:文档之家› abaqus材料子程序

abaqus材料子程序

各向同性材料损伤本构模型SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,+ RPL,DDSDDT,DRPLDE,DRPLDT,+ STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, + NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, + CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)INCLUDE 'ABA_PARAM.INC'CHARACTER*80 CMNAMEDIMENSION 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 startC IF (NPROPS.LT.2) THENC WRITE(7,*) '** ERROR: UMAT REQUIRES *NPROPS=2'C STOPC END IFE11 =PROPS(1)V12 =PROPS(2)G12 =PROPS(1)/TWO/(ONE+PROPS(2))C Critical values of stressesXT=PROPS(3)XC=PROPS(4)XS=PROPS(5)GX=PROPS(6) !Fracture energy in matrixETA=0.001C Current strainDO I = 1, NTENSSTRANT(I) = STRAN(I) + DSTRAN(I)END DOC StiffnessDO I = 1, 6DO J = 1, 6C(I,J)=ZEROEND DOEND DOATEMP = (1+V12)*(1-TWO*V12)C(1,1) = E11*(1-V12)/ATEMPC(2,2) = E11*(1-V12)/ATEMPC(3,3) = E11*(1-V12)/ATEMPC(1,2) = E11*V12/ATEMPC(1,3) = E11*V12/ATEMPC(2,3) = E11*V12/ATEMPC(4,4) = G12C(5,5) = G12C(6,6) = G12DO I = 2, 6DO J = 1, I-1C(I,J) = C(J,I)END DOEND DOC Critical values of strainsXET=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 criterionA11 = STRANT(1)**TWO+STRANT(2)**TWO+STRANT(3)**TWOA12 = A11 / XET / XECA21 = STRANT(1)+STRANT(2)+STRANT(3)A22 = (XEC - XET) / XEC / XET * A21A31 = STRANT(4)**TWO+STRANT(5)**TWO+STRANT(6)**TWOA32 = A31 / XES**TWOA1= A12 + A22 + A32C B11 = STRANT(2)**TWOC B12 = B11 / XET / XECC B21 = STRANT(2)C B22 = (XEC - XET) / XEC / XET * B21C B31 = STRANT(5)**TWOC B32 = B31 / XES**TWOC B1= B12 + B22 + B32C C11 = STRANT(3)**TWOC C12 = C11 / XET / XECC C21 = STRANT(3)C C22 = (XEC - XET) / XEC / XET * C21C C31 = STRANT(6)**TWOC C32 = C31 / XES**TWOC C1= C12 + C22 + C32STATEV(2)=A1C STATEV(3)=B1C STATEV(4)=C1FMN = ZEROIF (A1.GT.ZERO) THENFMN =SQRT(A1)C IF (B1.GT.ONE) THENC FMN =FMN+SQRT(B1)C IF(C1.GT.ONE) THENC FMN =FMN+SQRT(C1)C END IFC END IFEND IFSTATEV(5)=FMNC write(*,*) FMNDM = ZERODDMDFMN = ZERODO I = 1, 6DFMNDE(I) = ZERODDMDE(I) = ZEROEND DOIF (FMN .GT. ONE) THENC CALCULATE DM, DDMDFMNC WRITE(6,*)FMNT1 = (C(1,1)-2*V12*C(1,2)) * XET**2 * CELENT / GXT2 = (ONE - FMN) * T1DM = ONE - EXP(T2)/FMNC WRITE(6,*)'T1 ',T1,' T2', T2, ' DM', DMC write(*,*) DMC CALCULATE THE DERIVATIVE OF DAMAGE VARIABLE WITH RESPECT TO FAILURE C RITERIONDDMDFMN = (ONE / FMN + T1) * (ONE - DM)C CALCULATE DFMNDEIF (DM .GT. DMOLD) THENDFMNDE(1) = HALF/FMN*(TWO*STRANT(1)+XEC-XET)/XET/XECDFMNDE(2) = HALF/FMN*(TWO*STRANT(2)+XEC-XET)/XET/XECDFMNDE(3) = HALF/FMN*(TWO*STRANT(3)+XEC-XET)/XET/XECDFMNDE(4) = ONE/FMN*TWO*STRANT(4)/XES**TWODFMNDE(5) = ONE/FMN*TWO*STRANT(5)/XES**TWODFMNDE(6) = ONE/FMN*TWO*STRANT(6)/XES**TWODO I = 1, 6DDMDE(I) = DFMNDE(I) * DDMDFMNEND DOEND IFEND IFDM = MAX (DM, DMOLD)C write(6,*) DMC SAVE THE OLD STRESS TO OLD_STRESSDO I = 1, NTENSOLD_STRESS(I) = STRESS(I)END DOC Effective stiffnessDO I = 1, 6DO J = 1, 6CD(I,J)=C(I,J)END DOEND DOIF (DM.NE.ZERO) THENCD(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(3,1) = CD(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 IFC Elastic derivativeDO I = 1, 6DO J = 1, 6DCDDM(I,J) = ZEROEND DOEND DOCC CALCULATE DC/DDMCDCDDM(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,2) = -C(3,2)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 JACOBIANDO I = 1, NTENSATEMP1(I) = ZERODO J = 1, NTENSATEMP1(I) = ATEMP1(I) + DCDDM(I,J) * STRANT(J)END DOEND DODDSDDE=0DO I = 1, NTENSDO J = 1, NTENSDDSDDE(I,J)=CD(I,J)+(ATEMP1(I)*DDMDE(J))*DTIME/(DTIME+ETA) END DOEND DOC Update stressesDO I = 1, NTENSSTRESS(I)=ZERODO J = 1, NTENSC IF(DM.LT.0.5) THENSTRESS(I)=STRESS(I)+ CD(I,J) * STRANT(J)C ELSEC STRESS(I)=STRESS(I)+ CD(I,J) * STRANT(J) * (1-DM)C ENDIFEND DOEND DOC EnergyDO I = 1, NDISSE = SSE + HALF * (STRESS(I) + OLD_STRESS(I)) * DSTRAN(I) END DODO I = NDI+1, NTENSSSE = SSE + (STRESS(I) + OLD_STRESS(I)) * DSTRAN(I) END DOSTATEV(1)=DMRETURNEND。

相关主题