Dr. Bergstrom and other experts,
I programmed a VUMAT of neo-hooke model in ABAQUS, according to the example in ABAQUS example problems manual 1.1.14 (UMAT). I used the same constitutive law and formulation, but in the single elament testing phase, it failed due to not agreeing with ABAQUS built-in neo-hooke model with same parameters on S11, S12 etc. distributions while having rotation on the element. Uniaxial tension is fine, through. I post the subroutine code below, if you can give me any lights on it, that will be greatly appreciated. The code is exactly a VUMAT version of the subroutine in ABAQUS example problems manual 1.1.14 bootseal_umat.f.
Thanks a lot.
Jun
===========
subroutine vumat (
C Read only -
* nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
* stepTime, totalTime, dt, cmname, coordMp, charLength,
* props, density, strainInc, relSpinInc,
* tempOld, stretchOld, defgradOld, fieldOld,
* stressOld, stateOld, enerInternOld, enerInelasOld,
* tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
* stressNew, stateNew, enerInternNew, enerInelasNew )
C
include vaba_param.inc
C
dimension coordMp(nblock,*), charLength(nblock), props(nprops),
1 density(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)
C
dimension devia(nblock,ndir+nshr),
1 BBar(nblock,4), defgradNewBar(nblock,5), intv(2)
C
character*80 cmname
parameter (zero = 0.d0, one = 1.d0, two = 2.d0, three = 3.d0,
* four = 4.d0)
C
intv(1) = ndir
intv(2) = nshr
C
C if (ndir .ne. 3 .or. nshr .ne. 1) then
C call xplb_abqerr(1,Subroutine VUMAT is implemented //
C * only for plane strain and axisymmetric cases //
C * (ndir=3 and nshr=1),0,zero, )
C call xplb_abqerr(-2,Subroutine VUMAT has been called //
C * with ndir=%I and nshr=%I,intv,zero, )
C call xplb_exit
C end if
C
C10 = props(1)
D1 = props(2)
C C10=1.11619E6 D1=4.48E-8
C
ak=two/D1
twomu=four*C10
amu=two*C10
alamda=(three*ak-twomu)/three
C
C if stepTime equals zero, assume pure elastic material and use initial elastic modulus
C
if(stepTime .EQ. zero) then
do k=1,nblock
trace1 = strainInc(k,1) + strainInc(k,2) + strainInc(k,3)
stressNew(k,1) = stressOld(k,1)
* + twomu * strainInc(k,1) + alamda * trace1
stressNew(k,2) = stressOld(k,2)
* + twomu * strainInc(k,2) + alamda * trace1
stressNew(k,3) = stressOld(k,3)
* + twomu * strainInc(k,3) + alamda * trace1
stressNew(k,4) = stressOld(k,4)
* + twomu * strainInc(k,4)
C write(6,*) totalTime,stressNew(k,1),
C 1 stressNew(k,2),stressNew(k,3),stressNew(k,4)
end do
else
C
C JACOBIAN AND DISTORTION TENSOR (F is non-symmetric)
C
do k=1,nblock
det=defgradNew(k, 1)*defgradNew(k, 2)*defgradNew(k, 3) -
1 defgradNew(k, 3)*defgradNew(k, 4)*defgradNew(k, 5)
scale=det**(-ONE/THREE)
defgradNewBar(k, 1)=defgradNew(k, 1)*scale
defgradNewBar(k, 2)=defgradNew(k, 2)*scale
defgradNewBar(k, 3)=defgradNew(k, 3)*scale
defgradNewBar(k, 4)=defgradNew(k, 4)*scale
defgradNewBar(k, 5)=defgradNew(k, 5)*scale
C
C CALCULATE LEFT CAUCHY-GREEN TENSOR (B is symmetric)
C
BBar(k,1)=defgradNewBar(k, 1)**two+defgradNewBar(k, 4)**two
BBar(k,2)=defgradNewBar(k, 2)**two+defgradNewBar(k, 5)**two
BBar(k,3)=defgradNewBar(k, 3)**two
BBar(k,4)=defgradNewBar(k, 1)*defgradNewBar(k, 5) +
1 defgradNewBar(k, 2)*defgradNewBar(k, 4)
C
C CALCULATE STRESS tensor
C
TRBBar=BBar(k,1)+BBar(k,2)+BBar(k,3)
EG=two*C10/det
PR=TWO/D1*(det-one)
stressNew(k,1)=EG*(BBar(k,1)-TRBBar/Three) + PR
stressNew(k,2)=EG*(BBar(k,2)-TRBBar/Three) + PR
stressNew(k,3)=EG*(BBar(k,3)-TRBBar/Three) + PR
stressNew(k,4)=EG* BBar(k,4)
C
write(6,*) totalTime,stressNew(k,1),
1 stressNew(k,2),stressNew(k,3),stressNew(k,4)
end do
end if
return
end