Hi all,

Iam trying to incorporate maximum stress criterion by writing a VUMAT code. I have written it for an isotropic material. But the results do not show any deletion of elements in the output(.odb) file. Iam attaching the code along with my results. Kindy help me in this regard.

subroutine vumat(

C Read only -

1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

2 stepTime, totalTime, dt, cmname, coordMp, charLength,

3 props, density, strainInc, relSpinInc,

4 tempOld, stretchOld, defgradOld, fieldOld,

5 stressOld, stateOld, enerInternOld, enerInelasOld,

6 tempNew, stretchNew, defgradNew, fieldNew,

C Write only -

7 stressNew, stateNew, enerInternNew, enerInelasNew)

Clo

include 'vaba_param.inc'

C

dimension props(nprops), density(nblock), coordMp(nblock,*),

1 charLength(nblock), strainInc(nblock,ndir+nshr),

2 relSpinInc(nblock,nshr), tempOld(nblock),

3 stretchOld(nblock,ndir+nshr),

4 defgradOld(nblock,ndir+nshr+nshr),

5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),

6 stateOld(nblock,nstatev), enerInternOld(nblock),

7 enerInelasOld(nblock), tempNew(nblock),

8 stretchNew(nblock,ndir+nshr),

9 defgradNew(nblock,ndir+nshr+nshr),

1 fieldNew(nblock,nfieldv),

2 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev),

3 enerInternNew(nblock), enerInelasNew(nblock)

character*80 cmname

integer i, j, k,dmg,ldmg

*inputs

real*8 e, nu, mu, alamda,xtt

e = props(1) ! Young's modulus

nu = props(2) ! poisson's ratio

xtt = props(3) !maximum stress

*lame's parameters

mu = e/(2.d0*(1.d0 + nu))

alamda = e*nu/((1.d0 + nu) * (1.d0 - 2.d0*nu))

*stress evaluation at each material point

DO i=1,nblock

dsInc = sum(strainInc(i,1:3)) !Strain increment

DO j=1,ndir

stressNew(i, j)=stressOld(i, j) + alamda*dsInc+2.d0*mu*strainInc(i,j)

dmg = (stressNew(i,j))/xtt

stateNew(i,1) = dmg

IF(stateNew(i,1).ge. 1)THEN

*update the state variable

stateNew(i,1) = 0

ENDIF

ENDDO

ENDDO

*Maximum stress criterion

DO k=1,nshr

stressNew(i,ndir+k) = stressOld(i,ndir+k)+2.d0*mu*strainInc(i,ndir+k)

ldmg = (stressNew(i,ndir+k))/xtt

stateNew(i,2) = ldmg

IF(stateNew(i,2) .ge.1)THEN

stateNew(i,2)=0

ENDIF

ENDDO

return

end

Similar questions and discussions