C TRITE2    SOURCE    CHAT      05/01/13    03:47:54     5004
C
C=======================================================================
C
      SUBROUTINE TRITE2(ilent1,NTEMP,T0,ITINF,ITSUP)
C
C=======================================================================
C
C     Calcul de transformations de phases
C     appelee par CRPHA4 / cas du CHAUFFAGE
C
C     recherche dans un tableau l'indice des donnees materiau correspondant
C     a la temperature T0
C
C     ntemp    indice max
C     itinf    indice correspondant ou precedant T0
C     itsup    indice suivant T0
C
C     utilisation d'une solution initiale
C     et recherche finale par bissection
C     (Numerical Recipes in Fortran p 110)
C MARTINEZ  07/07/1998
C=======================================================================
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C
-INC SMLENTI
-INC SMLREEL
C
C
C
      mlent1 = ilent1
      segact mlent1
      mlenti = mlent1.lect(1)
      segact mlenti

      INC=1
      IF (ITINF.LT.1.OR.ITINF.GT.NTEMP) THEN
         ITINF=0
         ITSUP=NTEMP+1
         GOTO 3
      ENDIF
C
      mlreel = lect(itinf)
      segact mlreel
      IF (prog(1).EQ.T0) THEN
         ITSUP=ITINF+1
         segdes mlent1,mlenti
         RETURN
      ENDIF
C
      mlreel = lect(itinf)
      segact mlreel
      IF (prog(1).GT.T0) THEN
 1       ITSUP=ITINF+INC
        mlreel = lect(itsup)
        segact mlreel
         IF (ITSUP.GE.NTEMP) THEN
            ITSUP=NTEMP
         ELSE IF (prog(1).GT.T0) THEN
            ITINF=ITSUP
            INC=INC+INC
            GOTO 1
         ENDIF
C
      ELSE
         ITSUP=ITINF
 2       ITINF=ITSUP-INC
        mlreel = lect(itinf)
        segact mlreel
         IF (ITINF.LE.1) THEN
            ITINF=1
         ELSE IF (prog(1).LT.T0) THEN
            ITSUP=ITINF
            INC=INC+INC
            GOTO 2
         ENDIF
      ENDIF
C
 3    NDIT=ITSUP-ITINF
      IF (NDIT.LE.1) THEN
         segdes mlent1,mlenti
         RETURN
      ENDIF
      ITM=(ITINF+ITSUP)/2
        mlreel = lect(itm)
        segact mlreel
      IF (prog(1).GE.T0) THEN
         ITINF=ITM
      ELSE
         ITSUP=ITM
      ENDIF
      GOTO 3
      END


