关于Abaqus中USDFLD子程序中的状态变量? 50

浏览:1782 回答:3

在显示子程序VUSDFLD中,新旧状态变量分别用stateNew和stateold表示,那隐式子程序USDFLD中的新旧状态变量分别用什么表示?帮助文档里面只给了一个STATEV,求大神指导!

邀请回答 我来回答

全部回答

(2)
默认 最新
蓝牙

 STATEV 代表前一步的旧变量 和这一个载荷步的信变量


下面是复合材料Tsai-wu的一个例子,你看看就知道了

      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

C STRENGTH PARAMETERS

      PARAMETER(Xc=1188e6,Xt=1696e6,Yc=202e6,Yt=71.4e6,

     $    Zc=202e6,Zt=71.4e6,S12=95.2e6,S13=95.2e6,S23=95.2e6)

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 CALCULATE COEFFICIENT OF TSAI-WU

      F1 = 1/Xt-1/Xc

      F2 = 1/Yt-1/Yc

      F3 = 1/Zt-1/Zc

      F11 = 1/(Xt*Xc)

      F22 = 1/(Yt*Yc)

      F33 = 1/(Zt*Zc)

      F44 = 1/S23**2

      F55 = 1/S13**2

      F66 = 1/S12**2

      F12 = -0.5/(Xt*Xc*Yt*Yc)**0.5

      F23 = -0.5/(Yt*Yc*Zt*Zc)**0.5

      F31 = -0.5/(Zt*Zc*Xt*Xc)**0.5

C

C INITIALIZE FAILURE FLAGS FROM STATEV. 

      CR11 = STATEV(1)

      CR22 = STATEV(2)

      CR33 = STATEV(3)

      CR12 = STATEV(4) 

      CR13 = STATEV(5)

      CR23 = STATEV(6)            

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 + F3*ST33 + F11*ST11**2 + F22*ST22**2 +

     $      F33*ST33**2 + 2*F12*ST11*ST22 + 2*F23*ST22*ST33 + 

     $      2*F31*ST33*ST11 + F44*ST23**2 + F55*ST13**2 + F66*ST12**2

C

C FAILURE TYPE

      IF (CR>=1) THEN

          IF (CR11<1) THEN

              IF (ST11>=Xt .or. ST11<=-Xc) THEN

                  CR11=1

              ELSE

                  CR11=0

              ENDIF

           ENDIF

           IF (CR22<1) THEN

              IF (ST22>=Yt .or. ST22<=-Yc) THEN

                  CR22=1

              ELSE

                  CR22=0

              ENDIF

           ENDIF

           IF (CR33<1) THEN

              IF (ST33>=Zt .or. ST33<=-Zc) THEN

                  CR33=1

              ELSE

                  CR33=0

              ENDIF

           ENDIF

           IF (CR12<1) THEN

              IF (ABS(ST12)>=S12) THEN

                  CR12=1

              ELSE

                  CR12=0

              ENDIF

           ENDIF

           IF (CR13<1) THEN

              IF (ABS(ST13)>=S13) THEN

                  CR13=1

              ELSE

                  CR13=0

              ENDIF

           ENDIF

           IF (CR23<1) THEN

              IF (ABS(ST23)>=S23) THEN

                  CR23=1

              ELSE

                  CR23=0  

              ENDIF

           ENDIF

      ENDIF      

C

C     UPDATE STATEV            

      STATEV(1) = CR11 

      STATEV(2) = CR22

      STATEV(3) = CR33

      STATEV(4) = CR12

      STATEV(5) = CR13

      STATEV(6) = CR23      

C

C     UPDATE FIELD VARIABLES       

      IF (CR11>0) FIELD(1) = 1

      IF (CR22>0) FIELD(2) = 1

      IF (CR33>0) FIELD(3) = 1

      IF (CR12>0) FIELD(4) = 1

      IF (CR13>0) FIELD(5) = 1

      IF (CR23>0) FIELD(6) = 1

      

      RETURN

      END


2017年11月28日
已采纳 评论 1 点赞 1
君雨

个人感觉可以新定义一组变量,将其与statev进行关联,所起作用类似于VUSDFLD中的

2022年5月17日
评论 点赞

没解决?试试专家一对一服务

换一批