TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1)) HSELF=PROP(1)*TERM2**2
ELSE
C----- Bassani's hardening law CFIXA
TERM1=(PROP(1)-PROP(4))*GMSLTL(ISELF)/(PROP(2)-PROP(3)) CFIXB
TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1)) F=(PROP(1)-PROP(4))*TERM2**2+PROP(4)
ID=0 G=1.
DO I=1,NSET
IF (I.EQ.ISET) THEN GAMMA0=PROP(5) FAB=PROP(7) ELSE
GAMMA0=PROP(6) FAB=PROP(8) END IF
DO J=1,NSLIP(I) ID=ID+1
IF (ID.NE.ISELF) THEN CFIXA G=G+FAB*TANH(GMSLTL(ID)/GAMMA0) CFIXB END IF
END DO END DO
HSELF=F*G
END IF
RETURN END
C-----------------------------------
C----- Use single precision on cray CFIXA
REAL*8 FUNCTION HLATNT(GAMMA,GMSLTL,GAMTOL,NSLPTL,NSET, 2 NSLIP,PROP,CHECK,ISELF,ISET,LATENT) CFIXB
C----- User-supplied latent-hardening function
C----- Use single precision on cray C
IMPLICIT REAL*8 (A-H,O-Z) CFIXA
DIMENSION GAMMA(NSLPTL), NSLIP(NSET), PROP(16), 2 GMSLTL(NSLPTL) CFIXB
ILOWER=0
IUPPER=NSLIP(1) IF (ISET.GT.1) THEN DO K=2,ISET
ILOWER=ILOWER+NSLIP(K-1) IUPPER=IUPPER+NSLIP(K) END DO END IF
IF (LATENT.GT.ILOWER.AND.LATENT.LE.IUPPER) THEN Q=PROP(9) ELSE
Q=PROP(10) END IF
IF (CHECK.EQ.0.) THEN
C----- HYPER SECANT hardening law by Asaro, Pierce et al
TERM1=PROP(1)*GAMTOL/(PROP(2)-PROP(3)) TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1)) HLATNT=PROP(1)*TERM2**2*Q
ELSE
C----- Bassani's hardening law CFIXA
TERM1=(PROP(1)-PROP(4))*GMSLTL(ISELF)/(PROP(2)-PROP(3))
CFIXB
TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1)) F=(PROP(1)-PROP(4))*TERM2**2+PROP(4)
ID=0 G=1.
DO I=1,NSET
IF (I.EQ.ISET) THEN GAMMA0=PROP(5) FAB=PROP(7) ELSE
GAMMA0=PROP(6) FAB=PROP(8) END IF
DO J=1,NSLIP(I) ID=ID+1
IF (ID.NE.ISELF) THEN CFIXA G=G+FAB*TANH(GMSLTL(ID)/GAMMA0) CFIXB END IF
END DO END DO
HLATNT=F*G*Q
END IF
RETURN END
C----------------------------------------------------------------------
CFIXA
SUBROUTINE ITERATION (GAMMA, TAUSLP, GSLIP, GMSLTL, GAMTOL, 2 NSLPTL, NSET, NSLIP, ND, PROP, DGAMOD, 3 DHDGDG) CFIXB
C----- This subroutine generates arrays for the Newton-Rhapson C iteration method.
C----- Users who want to use their own self- and latent-hardening law
C may change the function subprograms DHSELF (self hardening) and C DHLATN (latent hardening). The parameters characterizing these C hardening laws are passed into DHSELF and DHLATN through array C PROP.
C----- Function subprograms: C
C DHSELF -- User-supplied function of the derivative of self- C hardening moduli C
C DHLATN -- User-supplied function of the derivative of latent- C hardening moduli
C----- Variables: C
C GAMMA -- shear strain in all slip systems at the start of time C step (INPUT)
C TAUSLP -- resolved shear stress in all slip systems (INPUT) C GSLIP -- current strength (INPUT)
CFIX GMSLTL -- total cumulative shear strains on each individual slip system CFIX (INPUT)
C GAMTOL -- total cumulative shear strains over all slip systems C (INPUT)
C NSLPTL -- total number of slip systems in all the sets (INPUT) C NSET -- number of sets of slip systems (INPUT) C NSLIP -- number of slip systems in each set (INPUT)
C ND -- leading dimension of arrays defined in subroutine UMAT C (INPUT) C
C PROP -- material constants characterizing the self- and latent- C hardening law (INPUT) C
C For the HYPER SECANT hardening law
C PROP(1,i) -- initial hardening modulus H0 in the ith C set of slip systems
C PROP(2,i) -- saturation stress TAUs in the ith set of C slip systems
C PROP(3,i) -- initial critical resolved shear stress C TAU0 in the ith set of slip systems C PROP(9,i) -- ratio of latent to self-hardening Q in the C ith set of slip systems