- 积分
- 0
- 注册时间
- 2013-3-21
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2014-1-1 19:59:13
|
显示全部楼层
来自 辽宁沈阳
chenxm0298 发表于 2013-12-31 19:32
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,DTIME,
1 CMNAME,ORNAME,NFIELD,NSTA ...
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,DTIME,
1 CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
2 NDI,nshr,coord,jmac,jmtyp,matlayo,laccflg)
C
INCLUDE 'ABA_PARAM.INC'
C
IF (CMNAME(1:4) .EQ. 'MAT1') THEN
CALL SUBROUTINE USDFLD1(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,
1DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
2 NDI,nshr,coord,jmac,jmtyp,matlayo,laccflg)
ELSE IF( CMNAME(1:4) .EQ. 'MAT2' ) THEN
CALL SUBROUTINE USDFLD2(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,
1DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
2 NDI,nshr,coord,jmac,jmtyp,matlayo,laccflg)
END IF
SUBROUTINE USDFLD1(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,DTIME,
1 CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
2 NDI,nshr,coord,jmac,jmtyp,matlayo,laccflg)
C
INCLUDE 'ABA_PARAM.INC'
C
C STRENGTH PARAMETERS
PARAMETER(Xc=600,Xt=700,Yc=120,Yt=70,
$ S12=45)
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),coord(*),jmac(*),jmtyp(*)
C
C CALCULATE COEFFICIENT OF TSAI-WU
F1 = 1/Xt-1/Xc
F2 = 1/Yt-1/Yc
F11 = 1/(Xt*Xc)
F22 = 1/(Yt*Yc)
F66 = 1/S12**2
F12 = -0.5/(Xt*Xc*Yt*Yc)**0.5
C
C INITIALIZE FAILURE FLAGS FROM STATEV.
CR11 = STATEV(1)
CR22 = STATEV(2)
CR12 = STATEV(3)
C
C GET STRESSES FROM PREVIOUS INCREMENT
CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,jrcd,
$ jmac, jmtyp, matlayo, laccflg)
ST11 = ARRAY(1)
ST22 = ARRAY(2)
ST33 = ARRAY(3)
ST12 = ARRAY(4)
ST13 = ARRAY(5)
ST23 = ARRAY(6)
C
C TSAI-WU CRITERION
CR = F1*ST11 + F2*ST22 + F11*ST11**2 + F22*ST22**2 +
$ 2*F12*ST11*ST22 + F66*ST12**2
C
C FAILURE TYPE
IF (CR>=1) THEN
H1 = F1*ST11 + F11*ST11**2
H2 = F2*ST22 + F22*ST22**2
H6 = F66*ST12**2
IF (CR11<1) THEN
IF ((H1 .GE. H2).AND.(H1.GE.H6)) THEN
CR11=1
ELSE
CR11=0
ENDIF
ENDIF
IF (CR22<1) THEN
IF ((H2 .GE. H1).AND.(H2.GE.H6)) THEN
CR22=1
ELSE
CR22=0
ENDIF
ENDIF
IF (CR12<1) THEN
IF ((H6 .GE. H1).AND.(H6.GE.H2)) THEN
CR12=1
ELSE
CR12=0
ENDIF
ENDIF
ENDIF
C
C UPDATE STATEV
STATEV(1) = CR11
STATEV(2) = CR22
STATEV(3) = CR12
C
C UPDATE FIELD VARIABLES
IF (CR11>0) FIELD(1) = 1
IF (CR22>0) FIELD(2) = 1
IF (CR12>0) FIELD(3) = 1
RETURN
END
SUBROUTINE USDFLD2(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,TIME,DTIME,
1 CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
2 NDI,nshr,coord,jmac,jmtyp,matlayo,laccflg)
C
INCLUDE 'ABA_PARAM.INC'
C
C STRENGTH PARAMETERS
PARAMETER(Xc=400,Xt=600,Yc=120,Yt=70,
$ S12=45)
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),coord(*),jmac(*),jmtyp(*)
C
C CALCULATE COEFFICIENT OF TSAI-WU
F1 = 1/Xt-1/Xc
F2 = 1/Yt-1/Yc
F11 = 1/(Xt*Xc)
F22 = 1/(Yt*Yc)
F66 = 1/S12**2
F12 = -0.5/(Xt*Xc*Yt*Yc)**0.5
C
C INITIALIZE FAILURE FLAGS FROM STATEV.
CR11 = STATEV(1)
CR22 = STATEV(2)
CR12 = STATEV(3)
C
C GET STRESSES FROM PREVIOUS INCREMENT
CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,jrcd,
$ jmac, jmtyp, matlayo, laccflg)
ST11 = ARRAY(1)
ST22 = ARRAY(2)
ST33 = ARRAY(3)
ST12 = ARRAY(4)
ST13 = ARRAY(5)
ST23 = ARRAY(6)
C
C TSAI-WU CRITERION
CR = F1*ST11 + F2*ST22 + F11*ST11**2 + F22*ST22**2 +
$ 2*F12*ST11*ST22 + F66*ST12**2
C
C FAILURE TYPE
IF (CR>=1) THEN
H1 = F1*ST11 + F11*ST11**2
H2 = F2*ST22 + F22*ST22**2
H6 = F66*ST12**2
IF (CR11<1) THEN
IF ((H1 .GE. H2).AND.(H1.GE.H6)) THEN
CR11=1
ELSE
CR11=0
ENDIF
ENDIF
IF (CR22<1) THEN
IF ((H2 .GE. H1).AND.(H2.GE.H6)) THEN
CR22=1
ELSE
CR22=0
ENDIF
ENDIF
IF (CR12<1) THEN
IF ((H6 .GE. H1).AND.(H6.GE.H2)) THEN
CR12=1
ELSE
CR12=0
ENDIF
ENDIF
ENDIF
C
C UPDATE STATEV
STATEV(1) = CR11
STATEV(2) = CR22
STATEV(3) = CR12
C
C UPDATE FIELD VARIABLES
IF (CR11>0) FIELD(1) = 1
IF (CR22>0) FIELD(2) = 1
IF (CR12>0) FIELD(3) = 1
RETURN
END
大神,我试了你的方法,程序有问题,你看能不能帮忙修改下,不胜感激! |
|