abaqus材料子程序.docx
《abaqus材料子程序.docx》由会员分享,可在线阅读,更多相关《abaqus材料子程序.docx(9页珍藏版)》请在冰豆网上搜索。
abaqus材料子程序
abaqus材料子程序
各向同性材料损伤本构模型
SUBROUTINEUMAT(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*80CMNAME
DIMENSIONSTRESS(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)
DIMENSIONSTRANT(6),TSTRANT(4),PT
(1)
DIMENSIONOLD_STRESS(6)
DIMENSIONDOLD_STRESS(6),D_STRESS(6)
DIMENSIONC(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)
Cstart
CIF(NPROPS.LT.2)THEN
CWRITE(7,*)'**ERROR:
UMATREQUIRES*NPROPS=2'
CSTOP
CENDIF
E11=PROPS
(1)
V12=PROPS
(2)
G12=PROPS
(1)/TWO/(ONE+PROPS
(2))
CCriticalvaluesofstresses
XT=PROPS(3)
XC=PROPS(4)
XS=PROPS(5)
GX=PROPS(6)!
Fractureenergyinmatrix
ETA=0.001
CCurrentstrain
DOI=1,NTENS
STRANT(I)=STRAN(I)+DSTRAN(I)
ENDDO
CStiffness
DOI=1,6
DOJ=1,6
C(I,J)=ZERO
ENDDO
ENDDO
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
DOI=2,6
DOJ=1,I-1
C(I,J)=C(J,I)
ENDDO
ENDDO
CCriticalvaluesofstrains
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)
CStraininitiationcriterion
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
CB11=STRANT
(2)**TWO
CB12=B11/XET/XEC
CB21=STRANT
(2)
CB22=(XEC-XET)/XEC/XET*B21
CB31=STRANT(5)**TWO
CB32=B31/XES**TWO
CB1=B12+B22+B32
CC11=STRANT(3)**TWO
CC12=C11/XET/XEC
CC21=STRANT(3)
CC22=(XEC-XET)/XEC/XET*C21
CC31=STRANT(6)**TWO
CC32=C31/XES**TWO
CC1=C12+C22+C32
STATEV
(2)=A1
CSTATEV(3)=B1
CSTATEV(4)=C1
FMN=ZERO
IF(A1.GT.ZERO)THEN
FMN=SQRT(A1)
CIF(B1.GT.ONE)THEN
CFMN=FMN+SQRT(B1)
CIF(C1.GT.ONE)THEN
CFMN=FMN+SQRT(C1)
CENDIF
CENDIF
ENDIF
STATEV(5)=FMN
Cwrite(*,*)FMN
DM=ZERO
DDMDFMN=ZERO
DOI=1,6
DFMNDE(I)=ZERO
DDMDE(I)=ZERO
ENDDO
IF(FMN.GT.ONE)THEN
CCALCULATEDM,DDMDFMN
CWRITE(6,*)FMN
T1=(C(1,1)-2*V12*C(1,2))*XET**2*CELENT/GX
T2=(ONE-FMN)*T1
DM=ONE-EXP(T2)/FMN
CWRITE(6,*)'T1',T1,'T2',T2,'DM',DM
Cwrite(*,*)DM
CCALCULATETHEDERIVATIVEOFDAMAGEVARIABLEWITHRESPECTTOFAILURE
CRITERION
DDMDFMN=(ONE/FMN+T1)*(ONE-DM)
CCALCULATEDFMNDE
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
DOI=1,6
DDMDE(I)=DFMNDE(I)*DDMDFMN
ENDDO
ENDIF
ENDIF
DM=MAX(DM,DMOLD)
Cwrite(6,*)DM
CSAVETHEOLDSTRESSTOOLD_STRESS
DOI=1,NTENS
OLD_STRESS(I)=STRESS(I)
ENDDO
CEffectivestiffness
DOI=1,6
DOJ=1,6
CD(I,J)=C(I,J)
ENDDO
ENDDO
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(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)
ENDIF
CElasticderivative
DOI=1,6
DOJ=1,6
DCDDM(I,J)=ZERO
ENDDO
ENDDO
C
CCALCULATEDC/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,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)
CUPDATETHEJACOBIAN
DOI=1,NTENS
ATEMP1(I)=ZERO
DOJ=1,NTENS
ATEMP1(I)=ATEMP1(I)+DCDDM(I,J)*STRANT(J)
ENDDO
ENDDO
DDSDDE=0
DOI=1,NTENS
DOJ=1,NTENS
DDSDDE(I,J)=CD(I,J)+(ATEMP1(I)*DDMDE(J))*DTIME/(DTIME+ETA)
ENDDO
ENDDO
CUpdatestresses
DOI=1,NTENS
STRESS(I)=ZERO
DOJ=1,NTENS
CIF(DM.LT.0.5)THEN
STRESS(I)=STRESS(I)+CD(I,J)*STRANT(J)
CELSE
CSTRESS(I)=STRESS(I)+CD(I,J)*STRANT(J)*(1-DM)
CENDIF
ENDDO
ENDDO
CEnergy
DOI=1,NDI
SSE=SSE+HALF*(STRESS(I)+OLD_STRESS(I))*DSTRAN(I)
ENDDO
DOI=NDI+1,NTENS
SSE=SSE+(STRESS(I)+OLD_STRESS(I))*DSTRAN(I)
ENDDO
STATEV
(1)=DM
RETURN
END