VUMAT for elasticity using 3D Shell elements

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VUMAT for elasticity using 3D Shell elements

SamSam
This post has NOT been accepted by the mailing list yet.
Dear users,

I'm trying for a long time to code a vumat for a simple elastic material to be used for shell elements. I got several times, this kind of error message:
"Bad Material definition in element number 3 instance PART-1-1: zero or negative initial dilatational modulus caused by bad material data. Please check your material input and any initial conditions if necessary." I tried using an abaqus material (without vumat) with same material properties and it works. Any help please.

The coded Vumat is written as follows:



      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_sp.inc'
          character*80 cmname
 
c Variable declaration
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),defGradOld(nblock, ndir+nshr+nshr),
     5  fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
     6  stateOld(nblock,nstatev), enerInternOld(nblock),
     7  enerInelasOld(nblock), tempNew(nblock),enerInelasNew(nblock),
     8  stretchNew(nblock,ndir+nshr),defgradNew(nblock,ndir+nshr+nshr),
     9  fieldNew(nblock,nfieldv),stressNew(nblock,ndir+nshr),
     1  enerInternNew(nblock), stateNew(nblock,nstatev)
c
      REAL NU,EMOD,BULK,LAMDA,TRACE,TWOMU
!---------------------------------------------------------------------
! local variables
!---------------------------------------------------------------------
     
      integer zero, one, two, three, i      
      parameter(zero=0.d0,one=1.d0,two=2.d0,three=3.d0)
!*******************************************************************************
!********************************************************************************
                EMOD   =PROPS(1)
                NU     =PROPS(2)
*****************************************************************
! Elastic properties of the material
!*****************************************************************
                 TWOMU = EMOD / ( one + NU )
             BULK   =EMOD/(one-two*NU)/three           ! module de Bulk
             LAMDA  =NU*EMOD/(one+NU)/(one-two*NU)    ! coefficient de lamé
!*****************************            
           STRAININC(km, 3)=-LAMDA*(STRAININC(km,1)+STRAININC(km,2))/
     1            (LAMDA+TWOMU)
                 TRACE = STRAININC (km, 1) + STRAININC (km, 2) + STRAININC(km,3)
                 STRESSNEW(km, 1)=STRESSOLD(km, 1) + LAMDA*TRACE+TWOMU*STRAININC(km,1)
                 STRESSNEW(km, 2)=STRESSOLD(km, 2) + LAMDA*TRACE+TWOMU*STRAININC(km,2)
ccc STRESSNEW(km, 3)=STRESSOLD(km, 3) + LAMDA*TRACE+TWOMU*STRAININC(km,3)
                 STRESSNEW(km, 4)=STRESSOLD(km, 4) + TWOMU*STRAININC(km, 4)
                 write(*,*) STRESSNEW(km,1),STRESSNEW(km,2),STRESSNEW(km,3),
     1      STRESSNEW(km,4)
  100 continue ! vumat loop

      return
      end