C                          **************
                           PROGRAM PRINCI
C                          **************
C
C-----------------------------------------------------------------------
C
C                       PROGRAMME PRINCIPAL DE
C
C               TTTTT EEEEE L     EEEEE M   M  AA  CCCCC
C                 T   E     L     E     MM MM A  A C
C                 T   EEE   L     EEE   M M M AAAA C
C                 T   E     L     E     M   M A  A C
C                 T   EEEEE LLLLL EEEEE M   M A  A CCCCC
C
C-----------------------------------------------------------------------
C
C     NOTE:
C
C     PRINCI NE SERT QU'A DIMENSIONNER LES TABLEAUX A ET IA DANS
C     LESQUELS SERONT STOCKES TOUS LES TABLEAUX DE REELS ET D'ENTIERS
C     DU PROGRAMME TELEMAC: EN FONCTION DU NOMBRE DE POINTS N DU
C     MAILLAGE (N=IM*JM) , UTILISER LES FORMULES SUIVANTES POUR UNE
C     PREMIERE EXECUTION.
C
C     IDIMA = 110*N    ,   IDIMIA = 11*N
C
C  1 PROCESSEUR
C      PARAMETER ( IDIMA=3000000 , IDIMIA=280000)
C  2 PROCESSEURS
C      PARAMETER ( IDIMA=993000 , IDIMIA=73600)
C  4 PROCESSEURS
      PARAMETER ( IDIMA=3000000 , IDIMIA=280000)
C
      DOUBLE PRECISION A(IDIMA)
      INTEGER IA(IDIMIA),LNG,LU
      COMMON/INFO/LNG,LU
      SAVE A,IA
      LNG=1
      LU=6
C
C     APRES UNE EXECUTION LA DIMENSION EXACTE DE A ET IA EST
C     DONNEE DANS LE DEBUT DU LISTING.
C
C-----------------------------------------------------------------------
C     NOMBRE DE TABLEAUX PRIVES NECESSAIRES DANS TELEMAC
      NPRIV=1
C
      CALL HOMERE(A,IDIMA,IA,IDIMIA,NPRIV)
      PRINT 10
10    FORMAT(1X,////,1X,'FIN NORMALE DU PROGRAMME',/////)
C
C-----------------------------------------------------------------------
C
      STOP
      END

C                       ***************************
                        DOUBLE PRECISION FUNCTION Q
C                       ***************************
C
C
     *( T , I , DEBIT , H , NPOIN )
C
C***********************************************************************
C  TELEMAC 2D VERSION 4.0    17/08/94    J-M HERVOUET (LNH) 30 87 80 18
C
C***********************************************************************
C
C FONCTION  : DONNE LA VALEUR DU DEBIT POUR TOUTES LES ENTREES A DEBIT
C             IMPOSE.
C
C-----------------------------------------------------------------------
C                             ARGUMENTS
C .________________.____.______________________________________________.
C |      NOM       |MODE|                   ROLE                       |
C |________________|____|______________________________________________|
C |   T            | -->| TEMPS AUQUEL ON DONNE LE DEBIT               |
C |   I            | -->| RANG DE LA FRONTIERE A DEBIT IMPOSE          |
C |                |    | (1 S'IL N'Y EN A QU'UNE)                     |
C |   DEBIT        | -->| TABLEAU DES DEBITS IMPOSES.                  |
C |                |    | (LU DANS LE FICHIER DES PARAMETRES)          |
C |   HAUTEUR D'EAU| -->| TABLEAU DES HAUTEURS D'EAU.                  |
C |   NPOIN        | -->| NOMBRE DE POINTS DU TABLEAU DES HAUTEURS     |
C |________________|____|______________________________________________|
C MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
C
C-----------------------------------------------------------------------
C
C  APPELE PAR : BORD
C
C***********************************************************************
C
      IMPLICIT NONE
      INTEGER LNG,LU
      COMMON/INFO/LNG,LU
C
      INTEGER I,NPOIN
C
      DOUBLE PRECISION T , DEBIT(*) , H(NPOIN)
C
      INTRINSIC MIN
C
C-----------------------------------------------------------------------
C
if (I.eq.1) then

          DEBIT(I) = 400 * H(66) * H(66) *sqrt (H(66))

      elseif (I.eq.2) then

        if (T.LE.20000) then
         DEBIT(I) = 10.
        elseif ( (T.GT.20000).AND.(T.LE.38000) ) then
         DEBIT(I) = 0.055 * (T-20000) + 10.
        elseif ( (T.GT.38000).AND.(T.LE.74000) ) then
         DEBIT(I) = - 0.0275 * (T-38000) + 1000.
        elseif  (T.GT.74000) then
         DEBIT(I) = 10.
        endif

      elseif (I.eq.3) then

         if (T.LE.20000) then
         DEBIT(I) = 10.
        elseif ( (T.GT.20000).AND.(T.LE.38000) ) then
         DEBIT(I) = 0.138333 * (T-20000) + 10.
        elseif ( (T.GT.38000).AND.(T.LE.74000) ) then
         DEBIT(I) = - 0.0691665 * (T-38000) + 1000.
        elseif  (T.GT.74000) then
         DEBIT(I) = 10.
        endif

      endif

      Q = DEBIT(I)

      RETURN
      END