Spring63
Mechanical
- Sep 11, 2019
- 2
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!