C
C     Isotropic hardening for UHARDRTS.inp
C
      SUBROUTINE UHARD(SYIELD,HARD,EQPLAS,EQPLASRT,TIME,DTIME,TEMP,
     $     DTEMP,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,
     $     CMNAME,NSTATV,STATEV,NUMFIELDV,
     $     PREDEF,DPREDEF,NUMPROPS,PROPS)
C     
      INCLUDE 'ABA_PARAM.INC'
C     
      CHARACTER*80 CMNAME
C
      DIMENSION HARD(3),STATEV(NSTATV),TIME(*),
     $          PREDEF(NUMFIELDV),DPREDEF(*),PROPS(*)
      PARAMETER (ASMALL=1.0D-15)
C     
      SIG0  = 0.0D0
      DS0DE = 0.0D0
      IF (EQPLAS.LE.PROPS(2)) THEN
         SIG0 = PROPS(1)
      ELSE IF (EQPLAS.LE.PROPS(4)) THEN
         SIG0 = PROPS(1) + (PROPS(3)-PROPS(1)) *
     $        (EQPLAS - PROPS(2)) / (PROPS(4) - PROPS(2))
         DS0DE = (PROPS(3)-PROPS(1)) / (PROPS(4) - PROPS(2))
      ELSE IF (EQPLAS.LE.PROPS(6)) THEN
         SIG0 = PROPS(3) + (PROPS(5)-PROPS(3)) *
     $        (EQPLAS - PROPS(4)) / (PROPS(6) - PROPS(4))
         DS0DE = (PROPS(5)-PROPS(3)) / (PROPS(6) - PROPS(4))
      ELSE
         SIG0 = PROPS(5)
      ENDIF
C
      DLOW    = PROPS( 9)
      ANLOW   = PROPS(10)
      TEMPLOW = PROPS(11)
      DHI     = PROPS(12)
      ANHI    = PROPS(13)
      TEMPHI  = PROPS(14)
      CTEMP   = TEMP + DTEMP
      IF (CTEMP.LE.TEMPLOW) THEN
         D  = DLOW
         AN = ANLOW
      ELSE IF (CTEMP.LE.TEMPHI) THEN
         D = DLOW + (DHI-DLOW) *
     $        (CTEMP-TEMPLOW) / (TEMPHI-TEMPLOW)
         AN = ANLOW + (ANHI-ANLOW) *
     $        (CTEMP-TEMPLOW) / (TEMPHI-TEMPLOW)
      ELSE
         D  = DHI
         AN = ANHI
      END IF
C
      R     = 1.0D0 
      DRDER = 0.0D0
      IF (EQPLASRT.GT.ASMALL) THEN
         R = R + (EQPLASRT/D)**(1.0D0/AN)
         DRDER = (EQPLASRT/D)**((1.0D0/AN)-1.0D0) / (D * AN)
      ELSE
         DRDER = (ASMALL/D)**((1.0D0/AN)-1.0D0) / (D * AN)
      END IF
      SYIELD = SIG0 * R
C
      HARD(1) = DS0DE * R
      HARD(2) = SIG0 * DRDER
C
      RETURN
      END