求助:Umat计算结果有误

ymzzymzz
ymzzymzz 2006-05-10 字数 2388

我算了一个单元单拉的实验,平面问题,单元CPS8R,Umat定义材料达到2E9时DDSDDE和应力都是0,通过一唯statev传递。我觉得应该先有应力,在变为0。但是算得结果发现应力一直都是0。我是新手,请大牛赐教,多谢。

Umat程序

*USER SUBROUTINES

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,NSTATEV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)

C

INCLUDE 'ABA_PARAM.INC'

C

CHARACTER*8 CMNAME

DIMENSION STRESS(NTENS),STATEV(NSTATEV),

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)

C

PARAMETER (Plastic1=2.0E9,ONE=1.0E0,

&    TWO=2.0E0, P=0.0)

E1=2.0E11

PMiu1=0.3E0           !parameter of Miu

G1=E1/(TWO*(ONE+PMiu1))

DO I=1,NTENS

DO J=1,NTENS

DDSDDE(I,J)=0.0E0

ENDDO

ENDDO

DDSDDE(1,1)=TWO*G1/(ONE-PMiu1)

DDSDDE(2,2)=TWO*G1/(ONE-PMiu1)

DDSDDE(4,4)=G1

DDSDDE(1,2)=TWO*G1*PMiu1/(ONE-PMiu1)

DDSDDE(2,1)=DDSDDE(1,2)

If (max(abs(STRESS(1)),abs(STRESS(2)),

&       abs(STRESS(4))).GT.(2.0E9)) Then

DDSDDE(1,1)=TWO*G1/(ONE-PMiu1)*p

DDSDDE(2,2)=TWO*G1/(ONE-PMiu1)*p

DDSDDE(4,4)=G1*p

DDSDDE(1,2)=TWO*G1*PMiu1/(ONE-PMiu1)*p

DDSDDE(2,1)=DDSDDE(1,2)

DO I=1,NTENS

DO J=1,NTENS

STRESS(I)=0.0E0

ENDDO

ENDDO

STATEV(NSTATEV)=100.0E0

Else If(ABS(STATEV(NSTATEV)-100.0E0).LT.(1E0)) Then

DDSDDE(1,1)=TWO*G1/(ONE-PMiu1)*p

DDSDDE(2,2)=TWO*G1/(ONE-PMiu1)*p

DDSDDE(4,4)=G1*p

DDSDDE(1,2)=TWO*G1*PMiu1/(ONE-PMiu1)*p

DDSDDE(2,1)=DDSDDE(1,2)*p

DO I=1,NTENS

DO J=1,NTENS

STRESS(I)=0.0D0

ENDDO

ENDDO

STATEV(NSTATEV)=100.0E0

Else

STATEV(NSTATEV)=0.0E0

DO I=1,NTENS

DO J=1,NTENS

STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)

ENDDO

ENDDO

Endif

RETURN

END

FEA 有限元天地