umat 平面应力
浏览:163300 回答:1
谁能够帮我看看这个程序为什么不能准确地计算平面应力情况
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),STRE(NTENS),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
DIMENSION y(NTENS),sig(NTENS),str(NTENS)
double precision Dsig,eqstrain,CONST1, CONST2, CONST3
double precision yy,vv,trace,mu
parameter(zero=0.d0,one=1.d0,two=2.d0,three=3.d0,third=1.d0/3.d0,
1 half=0.5d0,twoThirds=2.d0/3.d0,threeHalfs=1.5d0)
conl=sqrt(twoThirds)
c
c c1表示C1,c2表示C2,m表示m,a表示a,k,c3,c4,alpha,moliang表示E,bosongbi表示u,T表示温度Templature
C
YOUNG=PROPS(1)
POISS=PROPS(2)
c
c Lame's constants
c
CONST1=YOUNG/(1.0D0-POISS**2)
CONST2=YOUNG*POISS/(1.0D0-POISS**2)
CONST3=YOUNG/(2.0D0*(1.0D0+POISS))
c
c
DDSDDE(1,1)=CONST1
DDSDDE(1,2)=CONST2
DDSDDE(1,3)=0.0D0
DDSDDE(1,4)=0.0D0
DDSDDE(2,1)=CONST2
DDSDDE(2,2)=CONST1
DDSDDE(2,3)=0.0D0
DDSDDE(2,4)=0.0D0
DDSDDE(3,1)=0.0D0
DDSDDE(3,2)=0.0D0
DDSDDE(3,3)=0.0D0
DDSDDE(3,4)=0.0D0
DDSDDE(4,1)=0.0D0
DDSDDE(4,2)=0.0D0
DDSDDE(4,3)=0.0D0
DDSDDE(4,4)=CONST3
c
c---------------------------------------------------
y(1)=DSTRAN(1)
y(2)=DSTRAN(2)
y(4)=DSTRAN(4)
trace=y(1)+y(2)
y(3)=-CONST3*trace
c---------------------------------------------------------------
c--------------------------------------------------------------
c----------------------------------------------------------------
DO I=1,4
DO J=1,4
STRESS(I)=STRESS(I)+DDSDDE(I,J)*y(J) !计算试应力
END DO
END DO
DO K=1,4
STRAN(K)=STRAN(K)+y(K)
ENDDO
RETURN
END
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),STRE(NTENS),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
DIMENSION y(NTENS),sig(NTENS),str(NTENS)
double precision Dsig,eqstrain,CONST1, CONST2, CONST3
double precision yy,vv,trace,mu
parameter(zero=0.d0,one=1.d0,two=2.d0,three=3.d0,third=1.d0/3.d0,
1 half=0.5d0,twoThirds=2.d0/3.d0,threeHalfs=1.5d0)
conl=sqrt(twoThirds)
c
c c1表示C1,c2表示C2,m表示m,a表示a,k,c3,c4,alpha,moliang表示E,bosongbi表示u,T表示温度Templature
C
YOUNG=PROPS(1)
POISS=PROPS(2)
c
c Lame's constants
c
CONST1=YOUNG/(1.0D0-POISS**2)
CONST2=YOUNG*POISS/(1.0D0-POISS**2)
CONST3=YOUNG/(2.0D0*(1.0D0+POISS))
c
c
DDSDDE(1,1)=CONST1
DDSDDE(1,2)=CONST2
DDSDDE(1,3)=0.0D0
DDSDDE(1,4)=0.0D0
DDSDDE(2,1)=CONST2
DDSDDE(2,2)=CONST1
DDSDDE(2,3)=0.0D0
DDSDDE(2,4)=0.0D0
DDSDDE(3,1)=0.0D0
DDSDDE(3,2)=0.0D0
DDSDDE(3,3)=0.0D0
DDSDDE(3,4)=0.0D0
DDSDDE(4,1)=0.0D0
DDSDDE(4,2)=0.0D0
DDSDDE(4,3)=0.0D0
DDSDDE(4,4)=CONST3
c
c---------------------------------------------------
y(1)=DSTRAN(1)
y(2)=DSTRAN(2)
y(4)=DSTRAN(4)
trace=y(1)+y(2)
y(3)=-CONST3*trace
c---------------------------------------------------------------
c--------------------------------------------------------------
c----------------------------------------------------------------
DO I=1,4
DO J=1,4
STRESS(I)=STRESS(I)+DDSDDE(I,J)*y(J) !计算试应力
END DO
END DO
DO K=1,4
STRAN(K)=STRAN(K)+y(K)
ENDDO
RETURN
END