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