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