C
C  User subroutine to define a user material

      subroutine umat(stress,statev,ddsdde,sse,spd,scd,rpl,ddsddt,
     1  drplde,drpldt,stran,dstran,time,dtime,temp,
     2  dtemp,predef,dpred,materl,ndi,nshr,ntens,nstatv,props,
     3  nprops,coords,drot,pnewdt,celent,
     4  dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)
c
      include 'aba_param.inc'
c
      dimension stress(ntens),statev(nstatv),ddsdde(ntens,ntens,2),
     1          ddsddt(ntens),drplde(ntens),stran(ntens),dstran(ntens),
     2          predef(*),dpred(*),props(nprops),coords(3),drot(3,3),
     3          time(2),dfgrd0(3,3),dfgrd1(3,3)
      character*80 materl
      parameter (zero=0.d0,one=1.d0,two=2.d0,half=0.5d0,third=1.d0/3.d0)
c
      soile   = props(1)
      soilnu  = props(2)
c
      gInf=half*soile/(one+soilnu)
      akInf=third*soile/(one-two*soilnu)
      gr=(one-props(4))*gInf
      gi=props(3)*gInf
      akr= akInf
      aki= zero
c
      do kshr=1,nshr
         ddsdde(ndi+kshr,ndi+kshr,1)=gr
         ddsdde(ndi+kshr,ndi+kshr,2)=gi
      end do
c
      alambdar=akr-two*third*gr
      alambdai=aki-two*third*gi
      do k1=1,ndi
        do k2=1,k1
          ddsdde(k1,k2,1)=alambdar
          ddsdde(k2,k1,1)=alambdar
          ddsdde(k1,k2,2)=alambdai
          ddsdde(k2,k1,2)=alambdai
        end do
        ddsdde(k1,k1,1)=ddsdde(k1,k1,1)+two*gr
        ddsdde(k1,k1,2)=ddsdde(k1,k1,2)+two*gi
      end do
c
      return
      end


