C FAUSM3    SOURCE    CHAT      05/01/12    23:56:47     5004
      SUBROUTINE FAUSM3(NESP,
     &                  GAMG,ROG,PG,UNG,UTG,UVG,
     &                  GAMD,ROD,PD,UND,UTD,UVD,
     &                  YG,YD,FLU1,
     &                  CELLT)
C************************************************************************
C
C PROJET            :  CASTEM 2000
C
C NOM               :  FAUSM3 (3D)
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                      AUSM-PLUS de M.-S. Liou
C
C                      (voir:
C                       1)  BECCANTINI, PAILLERE,
C                           "Upwind Flux Splitting Schemes..."
C                           RAPPORT DMT 97//268
C                       2)  M.-S. LIOU "A sequel to AUSM: AUSM+"
C                           JCP, 129:364:382, 1996
C                      )
C
C LANGUAGE          :  FORTRAN 77
C
C AUTEUR            :  A. BECCANTINI DRN/DMT/SEMT/LTMF
C
C************************************************************************
C
C APPELES
C
C FAUSMP ------ FUAUSM
C
C
C************************************************************************
C
C**** Entrées:
C
C     NESP            =  nombre d'especes considérées dans les Equations
C                        d'Euler
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,
C     UVG, UVD        =  vitesses tangentielles
C
C     YG, YD          =  tables des fractiones massiques
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     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 30.10.2000
C
C************************************************************************
C
C N.B.: Toutes les variables sont DECLAREES
C
C
      IMPLICIT INTEGER(I-N)
      INTEGER NESP, I1
      REAL*8  GAMG,ROG,PG
     &       ,GAMD,ROD,PD
     &       ,GM1G,AG2,AG,UNG,UTG,UVG,MG,HTG
     &       ,GM1D,AD2,AD,UND,UTD,UVD,MD,HTD
     &       ,YG(*),YD(*),FLU1(*),CELLT
     &       ,ALPHA,BETA, MPLUS, MMINUS, PPLUS, PMINUS
     &       ,AMED, MMED, AMMED, MMEDP, MMEDM, PMED
      PARAMETER(ALPHA = 0.1875D0,BETA=0.125D0)
C
C
C**** YG, YD, FLU1, 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**** Etat "gauche"
C
C     AG  = vitesse du son
C     MG  = nombre de Mach normal
C     HTG = enthalpie totale
C
      GM1G = GAMG - 1.0D0
      AG2 = GAMG * PG/ ROG
      AG = SQRT(AG2)
      HTG = AG2 /GM1G + 0.5D0 * (UNG*UNG + UTG*UTG + UVG*UVG)
C
C**** Etat "droite"
C
C     AD  = vitesse du son
C     MD  = nombre de Mach normal
C     HTD = enthalpie totale
C
      GM1D = GAMD - 1.0D0
      AD2 = GAMD * PD/ ROD
      AD = SQRT(AD2)
      HTD = AD2 / GM1D + 0.5D0 * (UND*UND + UTD*UTD + UVD*UVD)
C
      AMED = 0.5D0 * (AG + AD)
C      AMED = SQRT(AG * AD)
      MG = UNG / AMED
      MD = UND / AMED
      CALL FUAUSM(ALPHA,BETA,MG,MD,MPLUS,MMINUS,PPLUS,PMINUS)
      MMED = MPLUS + MMINUS
      AMMED = ABS(MMED)
      MMEDP = 0.5D0 * (MMED + AMMED)
      MMEDM = 0.5D0 * (MMED - AMMED)
      PMED = PG * PPLUS + PD * PMINUS
C
      CELLT = (AMMED + 1) * AMED
C
C**** Le flux
C
      FLU1(1) = AMED * ( MMEDP * ROG  + MMEDM * ROD)
      FLU1(2) = AMED * ( MMEDP * ROG * UNG + MMEDM * ROD * UND) + PMED
      FLU1(3) = AMED * ( MMEDP * ROG * UTG + MMEDM * ROD * UTD )
      FLU1(4) = AMED * ( MMEDP * ROG * UVG + MMEDM * ROD * UVD )
      FLU1(5) = AMED * ( MMEDP * ROG * HTG + MMEDM * ROD * HTD )
      DO I1 = 1, NESP, 1
         FLU1(5+I1) = AMED * ( MMEDP * ROG * YG(I1)
     &                       + MMEDM * ROD * YD(I1))
      ENDDO
C
      RETURN
      END






