C FVLHTE    SOURCE    CHAT      05/01/13    00:14:00     5004
      SUBROUTINE FVLHTE(NESP,NSCA,
     &                  GAMG,ROG,PG,UNG,UTG,ETHERG,
     &                  GAMD,ROD,PD,UND,UTD,ETHERD,
     &                  YG,YD,SCAG,SCAD,FLU1,FLU2,
     &                  CELLT)
C************************************************************************
C
C PROJET            :  CASTEM 2000
C
C NOM               :  FVLHTE
C
C DESCRIPTION       :  Formulation Volumes Finis  pour les Equations
C                      d'Euler Multi-Especes relatives à un melange
C                      de gaz ideals.
C
C                      Calcul du flux aux interfaces avec la methode
C                      "Flux Vector Splitting" de van Leer - Hanel.
C
C                      (voir:
C                       1)  BECCANTINI, PAILLERE,
C                           "Upwind Flux Splitting Schemes..."
C                           RAPPORT DMT 97//268
C                       2)  B. VAN LEER
C                           "Flux Vector Splittings for the 1990's"
C                           1990. Invited Lecture, NASA Lewis Research
C                           Center
C                       3)  B. VAN LEER
C                           "Flux Vector Splitting for the Euler
C                            Equations"
C                            Report ICASE No. 82-30, 1982  )
C
C LANGUAGE          :  FORTRAN 77
C
C AUTEUR            :  A. BECCANTINI DRN/DMT/SEMT/TTMF
C
C************************************************************************
C
C APPELES
C
C FVLHTE ------ FSPVLH
C    |
C     --------- FSMVLH
C
C
C************************************************************************
C
C**** Entrées:
C
C     NESP            =  nombre d'especes considérées dans les Equations
C                        d'Euler
C
C     NSCA            =  nombre de scalaires passifs a transporter
C
C     GAMG, GAMD      =  les "gamma" du gaz (gauche et droite)
C
C     ROG, ROD        =  les densités
C
C     PG, PD          =  les pressions
C
C     UNG, UND        =  vitesses normales
C
C     UTG, UTD        =  vitesses tangentielles
C
C     ETHERG, ETHERD  =  les energies
C
C     YG, YD          =  tables des fractiones massiques
C
C     SCAG, SCAD      =  tables des scalaires passifs
C
C**** Sorties:
C
C     FLU1            =  table du flux a l'interface dans le repaire
C                        (n,t), i.e.
C                        (rho*un, rho*un*un + p, rho*un*ut, rho*un*ht,
C                         rho*un*y1, ...)
C
C     FLU2            =  table de travail, utilisé ici mais definie
C                        avant
C
C     CELLT           =  condition de stabilité, i.e.
C
C                        dT/diamax < cellt
C
C************************************************************************
C
C HISTORIQUE (Anomalies et modifications éventuelles)
C
C HISTORIQUE :  Créé le 6.1.98
C
C               21.02.00 transport de scalaires passifs
C
C************************************************************************
C
C N.B.: Toutes les variables sont DECLAREES
C
C
      IMPLICIT INTEGER(I-N)
      INTEGER NESP, I1, NSCA
      REAL*8  GAMG,ROG,PG
     &       ,GAMD,ROD,PD
     &       ,AG2,AG,UNG,UTG,MG,ETHERG,HTG
     &       ,AD2,AD,UND,UTD,MD,ETHERD,HTD
     &       ,CELLT,CELLT0,AMG,AMD,PSRO,ECIN
     &       ,YG(*),YD(*),FLU1(*),FLU2(*),SCAG(*),SCAD(*)
C
C
C**** YG, YD, FLU1, FLU2 déjà definis avant
C
C     Dans le cas Euler monoespece, on doit
C     avoir  :
C     YG(1) = YD(1) = 0.0D0
C
C
C**** Onde de "gauche" a "droite"
C
C     AG  = vitesse du son
C     MG  = nombre de Mach normal
C     HTG = enthalpie totale
C
      PSRO = PG / ROG
      ECIN = 0.5D0 * ((UNG * UNG) + (UTG * UTG))
      HTG = ETHERG + PSRO + ECIN
      AG2 = GAMG * PSRO
      AG = SQRT(AG2)
      MG = UNG / AG
      AMG = ABS(MG)
      CELLT = (2.0D0*GAMG + (AMG*(3.0D0-GAMG)))/(GAMG+3.0D0)
     &        /((AMG+1.0D0)*AG)
C
      CALL FSPVLH(NESP,NSCA,GAMG,ROG,MG,AG,UTG,HTG,YG,SCAG,FLU1)
C
C**** Onde de "droite" a "gauche".
C
C     AD  = vitesse du son
C     MD  = nombre de Mach normal
C     HTD = enthalpie totale
C
      PSRO = PD / ROD
      ECIN = 0.5D0 * ((UND * UND) + (UTD * UTD))
      HTD = ETHERD + PSRO + ECIN
      AD2 = GAMD * PSRO
      AD = SQRT(AD2)
      MD = UND / AD
      AMD = ABS(MD)
      CELLT0 = (2.0D0*GAMD + (AMD*(3.0D0-GAMD)))/(GAMD+3.0D0)
     &        /((AMD+1.0D0)*AD)
      CELLT = MIN(CELLT,CELLT0)
C
      CALL FSMVLH(NESP,NSCA,GAMD,ROD,MD,AD,UTD,HTD,YD,SCAD,FLU2)
C
C
      DO I1 = 1, (NSCA+NESP+4)
         FLU1(I1) = FLU1(I1) + FLU2(I1)
      ENDDO
C
C
      RETURN
      END






