User login

Navigation

You are here

Can anyone help me check my VUMAT code for Neo-Hookean material?

Hi,

I am new to writing VUMAT. I tested my Neo-Hookean hyperelastic material and the build-in Abaqus material on single element model but got quite different results. Can anyone take a look at my code and let me know if there is anything wrong?

The code was based on a previous example of Jorgen's VUMAT_NH, but I used a different constitutive model to match the build-in abaqus material.

Any comments would be greatly appreciated!

 

-------------------------------------------------------------

       subroutine vumat(nblock, ndi, nshr, nstatev, nfieldv, nprops,

     .     lanneal, stepTime, totTime, dt, cmname, coordMp,

     .     charLen, props, density, Dstrain, rSpinInc, temp0,

     .     U0, F0, field0, stressVec0, state0,

     .     intEne0, inelaEn0, temp1, U1,

     .     F1, field1, stressVec1, state1, intEne1, inelaEn1)

      implicit none

      integer nblock, ndi, nshr, nstatev, nfieldv, nprops, lanneal

      real stepTime, totTime, dt

      character*80 cmname

      real coordMp(nblock,*)

      integer charLen

      real props(nprops), density(nblock),

     .     Dstrain(nblock,ndi+nshr), rSpinInc(nblock,nshr),

     .     temp0(nblock), U0(nblock,ndi+nshr),

     .     F0(nblock,ndi+nshr+nshr), field0(nblock,nfieldv),

     .     stressVec0(nblock,ndi+nshr), state0(nblock,nstatev),

     .     intEne0(nblock), inelaEn0(nblock), temp1(nblock),

     .     U1(nblock,ndi+nshr), F1(nblock,ndi+nshr+nshr),

     .     field1(nblock,nfieldv), stressVec1(nblock,ndi+nshr),

     .     state1(nblock,nstatev), intEne1(nblock), inelaEn1(nblock)

C

C     local variables

      real F(3,3), B(3,3), J, t1, t2, t3, C10, D1

      integer i

C

      C10 = props(1)

      D1  = props(2)

C

C     loop through all blocks

      do i = 1, nblock

C        setup F (upper diagonal part)

         F(1,1) = U1(i,1)

         F(2,2) = U1(i,2)

         F(3,3) = U1(i,3)

         F(1,2) = U1(i,4)

         if (nshr .eq. 1) then

            F(2,3) = 0.0

            F(1,3) = 0.0

         else

            F(2,3) = U1(i,5)

            F(1,3) = U1(i,6)

         end if

C

C        calculate J

         t1 = F(1,1) * (F(2,2)*F(3,3) - F(2,3)**2)

         t2 = F(1,2) * (F(2,3)*F(1,3) - F(1,2)*F(3,3))

         t3 = F(1,3) * (F(1,2)*F(2,3) - F(2,2)*F(1,3))

         J = t1 + t2 + t3

         t1 = J**(-2.0/3.0)

C

C        Bstar = J^(-2/3) F Ft   (upper diagonal part)

         B(1,1) = t1*(F(1,1)**2 + F(1,2)**2 + F(1,3)**2)

         B(2,2) = t1*(F(1,2)**2 + F(2,2)**2 + F(2,3)**2)

         B(3,3) = t1*(F(1,3)**2 + F(2,3)**2 + F(3,3)**2)

         B(1,2) = t1*(F(1,1)*F(1,2)+F(1,2)*F(2,2)+F(1,3)*F(2,3))

         B(2,3) = t1*(F(1,2)*F(1,3)+F(2,2)*F(2,3)+F(2,3)*F(3,3))

         B(1,3) = t1*(F(1,1)*F(1,3)+F(1,2)*F(2,3)+F(1,3)*F(3,3))

C

C        Stress = 2/J*C10* Dev(Bbar) + 2/D1*(J-1)*Eye

         t1 = (B(1,1) + B(2,2) + B(3,3)) / 3.0

         t2 = 2.0 * C10 / J

         t3 = 2.0 * (J-1) / D1

         StressVec1(i,1) = t2 * (B(1,1) - t1) + t3

         StressVec1(i,2) = t2 * (B(2,2) - t1) + t3

         StressVec1(i,3) = t2 * (B(3,3) - t1) + t3

         StressVec1(i,4) = t2 * B(1,2)

         if (nshr .eq. 3) then

            StressVec1(i,5) = t2 * B(2,3)

            StressVec1(i,6) = t2 * B(1,3)

         end if

C

      end do

      return

      end

 

Subscribe to Comments for "Can anyone help me check my VUMAT code for Neo-Hookean material?"

Recent comments

More comments

Syndicate

Subscribe to Syndicate