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