## vumat implementation "Problem during compilation"

## vumat implementation "Problem during compilation"

(OP)

Hi There,

I am having a problem with inputting my Vumat into Abaqus explicit.

I have already implemented many subroutines into Abaqus and got results. However, my recent vumat gives this error :"problem during compilation"

my vumat is just simple neo-hookean model.

I appreciate if someone helps me with that. the code is written here:

subroutine vumat(

C Read only (unmodifiable)variables -

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 (modifiable) variables -

7 stressNew, stateNew, enerInternNew, enerInelasNew )

C

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),

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

9 fieldNew(nblock,nfieldv),

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

2 enerInternNew(nblock), enerInelasNew(nblock),

C

character*80 cmname

C

parameter( zero = 0.D0, one = 1.D0, two = 2.D0, three = 3.D0,

1 third = one/three, half = 0.5D0, twoThirds = two/three,

2 threeHalfs = 1.5D0 )

C

C elastic constants

C

c10 = props(1)

d1 = props(2)

shrMod = two*c10

blkMod = two/d1

C

C

do k = 1,nblock

C

C calculate left cauchy-green tensor in terms of stretch tensor

C and jacobian

bxx =stretchNew(k,1) * stretchNew(k,1)

1 + stretchNew(k,4) * stretchNew(k,4)

byy =stretchNew(k,4) * stretchNew(k,4)

1 + stretchNew(k,2) * stretchNew(k,2)

bzz =stretchNew(k,3) * stretchNew(k,3)

bxy =stretchNew(k,1) * stretchNew(k,4)

1 + stretchNew(k,4) * stretchNew(k,2)

bxz = zero

byz = zero

detu=stretchNew(k,3)*(stretchNew(k,1)*stretchNew(k,2)

1 - stretchNew(k,4)*stretchNew(k,4))

C

if ( nshr .gt. 1 ) then

bxx =bxx + stretchNew(k,6) * stretchNew(k,6)

byy =byy + stretchNew(k,5) * stretchNew(k,5)

bzz =bzz + stretchNew(k,6) * stretchNew(k,6)

1 + stretchNew(k,5) * stretchNew(k,5)

bxy =bxy + stretchNew(k,6) * stretchNew(k,6)

1 + stretchNew(k,4) * stretchNew(k,2)

bxz = stretchNew(k,1) * stretchNew(k,6)

1 + stretchNew(k,4) * stretchNew(k,5)

+ stretchNew(k,6) * stretchNew(k,3)

byz = stretchNew(k,4) * stretchNew(k,6)

1 + stretchNew(k,2) * stretchNew(k,5)

2 + stretchNew(k,5) * stretchNew(k,3)

detu = detu + stretchNew(k,6) *

1 ( stretchNew(k,4) * stretchNew(k,5)

2 - stretchNew(k 6) * stretchNew(k,2) )

3 - stretchNew(k,5) * ( stretchNew(k,1) * stretchNew(k,5)

4 - stretchNew(k,6) * stretchNew(k,4) )

end if

xpow = exp ( - log(detu) * two_thirds )

bxx = bxx * xpow

byy = byy * xpow

bzz = bzz * xpow

bxy = bxy * xpow

bxz = bxz * xpow

byz = byz * xpow

C BI1 ( first invariant of BIJ )

C

bi1 = bxx + byy + bzz

C

C BDIJ ( deviatoric part of BIJ )

C

bdxx = bxx - third * bi1

bdyy = byy - third * bi1

bdyy = byy - third * bi1

bdzz = bzz - third * bi1

bdxy = bxy

bdxz = bxz

bdyz = byz

C

duDi1 = half * shrMod

duDi3 = blkMod * ( detu - one )

C

C Calculate Cauchy (true) stresses

C

detuInv = one / detu

factor = two * duDi1 * detuInv

C

stressNew(k,1) = factor * bdxx + duDi3

stressNew(k,2) = factor * bdyy + duDi3

stressNew(k 3) = factor * bdzz + duDi3

stressNew(k,3) = factor * bdzz + duDi3

stressNew(k,4) = factor * bdxy

if ( nshr .gt. 1 ) then

stressNew(k,5) = factor * bdyz

stressNew(k,6) = factor * bdxz

end if

C

end do

C

return

end

Thanks!

I am having a problem with inputting my Vumat into Abaqus explicit.

I have already implemented many subroutines into Abaqus and got results. However, my recent vumat gives this error :"problem during compilation"

my vumat is just simple neo-hookean model.

I appreciate if someone helps me with that. the code is written here:

subroutine vumat(

C Read only (unmodifiable)variables -

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 (modifiable) variables -

7 stressNew, stateNew, enerInternNew, enerInelasNew )

C

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),

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

9 fieldNew(nblock,nfieldv),

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

2 enerInternNew(nblock), enerInelasNew(nblock),

C

character*80 cmname

C

parameter( zero = 0.D0, one = 1.D0, two = 2.D0, three = 3.D0,

1 third = one/three, half = 0.5D0, twoThirds = two/three,

2 threeHalfs = 1.5D0 )

C

C elastic constants

C

c10 = props(1)

d1 = props(2)

shrMod = two*c10

blkMod = two/d1

C

C

do k = 1,nblock

C

C calculate left cauchy-green tensor in terms of stretch tensor

C and jacobian

bxx =stretchNew(k,1) * stretchNew(k,1)

1 + stretchNew(k,4) * stretchNew(k,4)

byy =stretchNew(k,4) * stretchNew(k,4)

1 + stretchNew(k,2) * stretchNew(k,2)

bzz =stretchNew(k,3) * stretchNew(k,3)

bxy =stretchNew(k,1) * stretchNew(k,4)

1 + stretchNew(k,4) * stretchNew(k,2)

bxz = zero

byz = zero

detu=stretchNew(k,3)*(stretchNew(k,1)*stretchNew(k,2)

1 - stretchNew(k,4)*stretchNew(k,4))

C

if ( nshr .gt. 1 ) then

bxx =bxx + stretchNew(k,6) * stretchNew(k,6)

byy =byy + stretchNew(k,5) * stretchNew(k,5)

bzz =bzz + stretchNew(k,6) * stretchNew(k,6)

1 + stretchNew(k,5) * stretchNew(k,5)

bxy =bxy + stretchNew(k,6) * stretchNew(k,6)

1 + stretchNew(k,4) * stretchNew(k,2)

bxz = stretchNew(k,1) * stretchNew(k,6)

1 + stretchNew(k,4) * stretchNew(k,5)

+ stretchNew(k,6) * stretchNew(k,3)

byz = stretchNew(k,4) * stretchNew(k,6)

1 + stretchNew(k,2) * stretchNew(k,5)

2 + stretchNew(k,5) * stretchNew(k,3)

detu = detu + stretchNew(k,6) *

1 ( stretchNew(k,4) * stretchNew(k,5)

2 - stretchNew(k 6) * stretchNew(k,2) )

3 - stretchNew(k,5) * ( stretchNew(k,1) * stretchNew(k,5)

4 - stretchNew(k,6) * stretchNew(k,4) )

end if

xpow = exp ( - log(detu) * two_thirds )

bxx = bxx * xpow

byy = byy * xpow

bzz = bzz * xpow

bxy = bxy * xpow

bxz = bxz * xpow

byz = byz * xpow

C BI1 ( first invariant of BIJ )

C

bi1 = bxx + byy + bzz

C

C BDIJ ( deviatoric part of BIJ )

C

bdxx = bxx - third * bi1

bdyy = byy - third * bi1

bdyy = byy - third * bi1

bdzz = bzz - third * bi1

bdxy = bxy

bdxz = bxz

bdyz = byz

C

duDi1 = half * shrMod

duDi3 = blkMod * ( detu - one )

C

C Calculate Cauchy (true) stresses

C

detuInv = one / detu

factor = two * duDi1 * detuInv

C

stressNew(k,1) = factor * bdxx + duDi3

stressNew(k,2) = factor * bdyy + duDi3

stressNew(k 3) = factor * bdzz + duDi3

stressNew(k,3) = factor * bdzz + duDi3

stressNew(k,4) = factor * bdxy

if ( nshr .gt. 1 ) then

stressNew(k,5) = factor * bdyz

stressNew(k,6) = factor * bdxz

end if

C

end do

C

return

end

Thanks!