      subroutine uinter(stress,ddsddr,amki,amski,flux,ddfddt,ddsddt,
     1     ddfddr,statev,sed,sfd,spd,svd,scd,pnewdt,rdisp,drdisp,
     2     temp,dtemp,predef,dpred,time,dtime,freqr,ciname,slname,
     3     msname,props,coords,aLocalDir,drot,area,chrLngth,node,ndir,
     4     nstatv,npred,nprops,mcrd,kstep,kinc,kit,linper,lOpenClose,
     5     lState,lSdi,lPrint)
c 
      include 'aba_param.inc'
c 
      dimension stress(ndir),ddsddr(ndir,ndir),flux(2),ddfddt(2,2),
     $     ddsddt(ndir,2),ddfddr(2,ndir),statev(nstatv),rdisp(ndir),
     $     drdisp(ndir),temp(2),dtemp(2),predef(2,npred),dpred(2,npred),
     $     time(2),props(nprops),coords(mcrd),aLocalDir(3,3),
     $     drot(2,2),amki(ndir,ndir),amski(ndir,ndir)
      character*80 ciname,slname,msname
      parameter(toler = 1.D-12, zero=0.d0, one=1.d0, two=2.d0,
     $     half = one/two)
c 
c             User defined interfacial constitutive behavior.
c
c
c Local variables
      dp = zero
c Material properties
c
      ekbar = props(1) ! Modulus in the normal direction
c
      if ( rdisp(1) .ge. toler) then
c
        lOpenClose = 1
c     Compute P_(t+dt) and T_crit
c        
        dp = ekbar*drdisp(1)
        stress(1) = stress(1) + dp
        ddsddr(1,1) = ekbar

      else

        lOpenClose = 0
c 
      end if
c
c   The local directions are stored in statev just for
c   the purpose of providing basic verification of user-defined
c   state variables with UINTER.
      statev(1) = aLocalDir(1,1)
      statev(2) = aLocalDir(2,1)
      statev(3) = aLocalDir(3,1)
      statev(4) = aLocalDir(1,2)
      statev(5) = aLocalDir(2,2)
      statev(6) = aLocalDir(3,2)
c     
      statev(7) = coords(1)
      statev(8) = coords(2)
c
      return
      end

