Download fluri2.eso

Back to the list

   1 : C FLURI2    SOURCE    CHAT      05/01/13    00:04:50     5004           
   2 : C FLURIE    SOURCE    BECC      97/12/23    22:14:53     3017           
   3 :       SUBROUTINE FLURI2(NESP,
   4 :      &                  GAMG,ROG,PG,UNG,UTG,UVG,
   5 :      &                  GAMD,ROD,PD,UND,UTD,UVD,
   6 :      &                  YG,YD,FLUX,
   7 :      &                  CELLT,
   8 :      &                  LOGNC,LOGAN,MESERR)
   9 : C
  10 : C************************************************************************
  11 : C
  12 : C PROJET            :  CASTEM 2000
  13 : C
  14 : C NOM               :  FLURIE
  15 : C
  16 : C DESCRIPTION       :  Formulation Volumes Finis  pour les Equations 
  17 : C                      d'Euler Multi-Especes relatives à un melange 
  18 : C                      de gaz ideals.
  19 : C
  20 : C                      Calcul du flux aux interfaces avec la mèthode
  21 : C                      de Godunov (Solveur de Riemann exact).
  22 : C
  23 : C                      Parametrisation de Smoller
  24 : C      
  25 : C                      (voir:
  26 : C                       1) J. SMOLLER, "Shock Waves and Reaction 
  27 : C                          Diffusion Equations", Springer Verlag, 1983;
  28 : C
  29 : C                       2) Beccantini, Paillere,
  30 : C                           "Upwind Flux Splitting Schemes..."
  31 : C                           RAPPORT DMT 97//268
  32 : C                       )      
  33 : C
  34 : C LANGAGE           :  FORTRAN 77 
  35 : C      
  36 : C AUTEUR            :  A. BECCANTINI  DRN/DMT/SEMT/TTMF  
  37 : C
  38 : C************************************************************************
  39 : C
  40 : C APPELES
  41 : C
  42 : C FLURIE
  43 : C   |   
  44 : C   |
  45 : C    ---- RIECOM ---- RACC ---- WNVXC ---- VLH1
  46 : C           |
  47 : C           |
  48 : C            -------- VLH1
  49 : C           |
  50 : C           |
  51 : C            -------- VLF1
  52 : C           |
  53 : C           |      
  54 : C            -------- VLF3
  55 : C      
  56 : C************************************************************************
  57 : C
  58 : C**** Entrées:
  59 : C
  60 : C     NESP            =  nombre d'especes considérées dans les Equations
  61 : C                        d'Euler
  62 : C
  63 : C     GAMG, GAMD      =  les "gamma" du gaz (gauche et droite)
  64 : C
  65 : C     ROG, ROD        =  les densités 
  66 : C
  67 : C     PG, PD          =  les pressions
  68 : C
  69 : C     UNG, UND        =  vitesses normales
  70 : C
  71 : C     UTG, UTD        =  vitesses tangentielles
  72 : C
  73 : C     UVG, UVD        =  vitesses tangentielles
  74 : C
  75 : C     YG, YD          =  tables des fractiones massiques
  76 : C
  77 : C**** Sorties:
  78 : C
  79 : C     FLUX            =  table du flux a l'interface, i.e.
  80 : C                        (rho*un, rho*un*un + p, rho*un*ut, rho*un*ht,
  81 : C                         rho*un*y1, ...)
  82 : C
  83 : C     CELLT           =  condition de stabilité, i.e.
  84 : C
  85 : C                        dT/diamax < cellt
  86 : C
  87 : C     LOGNC           =  si .TRUE. -> no convergence
  88 : C
  89 : C     LOGAN           =  si .TRUE. -> une anomalie a été detectée
  90 : C
  91 : C     MESERR          =  message d'erreur
  92 : C
  93 : C      
  94 : C************************************************************************
  95 : C
  96 : C HISTORIQUE (Anomalies et modifications éventuelles)
  97 : C
  98 : C HISTORIQUE :  Créé le 7.1.98 
  99 : C
 100 : C************************************************************************
 101 : C
 102 : C N.B.: Toutes les variables sont DECLAREES
 103 : C                          
 104 :       IMPLICIT INTEGER(I-N)
 105 :       INTEGER NESP, NMAX, NMAX0,  I1
 106 :       REAL*8  ZERO, ZERO0, EPSI, EPSI0
 107 :      &      ,GAMG,ROG,PG,UNG,UTG,UVG
 108 :      &      ,GAMD,ROD,PD,UND,UTD,UVD
 109 :      &      ,VGRIL
 110 :      &      ,ROR,UNR,UTR,UVR,ROETR,PR
 111 :      &      ,VREL, FLUM, RHTR
 112 :      &      ,CELLT, AR, GAMR
 113 :      &      ,YG(*),YD(*),FLUX(*)
 114 : C
 115 :       CHARACTER*(40) MESERR
 116 :       LOGICAL LOGNC, LOGAN, LOGETD, LOGLAR
 117 :       PARAMETER(NMAX=1000,ZERO = 1.0D-14,EPSI=1D-12)
 118 : C
 119 : C**** ZERO = tolérance d'egalite pour REAL*8
 120 : C      
 121 : C     NMAX = nombre max d'itérations in racc.eso
 122 : C            pour calculer l'etats d'intersection
 123 : C            invariants de Riemann - conditions de
 124 : C            Rankine-Hugoniot. 
 125 : C                     
 126 : C     EPSI = erreur tolérée in  racc.eso
 127 : C
 128 : C
 129 : C**** Initialisation de LOGNC, LOGAN,MESERR ne doit pas etre faite ici,
 130 : C     mais avant, i.e.
 131 : C
 132 : C      LOGNC = .FALSE.
 133 : C      LOGAN = .FALSE.
 134 : C      MESERR(1:40) = '                                        '
 135 : C      
 136 : C
 137 : C**** Les fractions massiques
 138 : C
 139 : C     YG, YD déjà definis 
 140 : C      
 141 : C**** Le flux à l'interfaces sont dans le repaire (n,t)
 142 : C
 143 : C      
 144 : C
 145 : C**** VGRIL = pour ALE
 146 : C
 147 :       VGRIL = 0.0D0
 148 : C
 149 : C**** On protege le "PARAMETER"
 150 : C      
 151 :       NMAX0 = NMAX
 152 :       ZERO0 = ZERO
 153 :       EPSI0 = EPSI
 154 : C
 155 : C**** Calcul de l'etat a l'interface
 156 : C
 156 :       CALL RIECO2(NMAX0,EPSI0,ZERO0,
 157 :      &            VGRIL,
 158 :      &            GAMG,ROG,PG,UNG,UTG,UVG,
 159 :      &            GAMD,ROD,PD,UND,UTD,UVD,
 160 :      &            ROR,UNR,UTR,UVR,ROETR,PR,GAMR,LOGETD,
 161 :      &            LOGAN,LOGNC,MESERR)
 162 : C
 163 : C**** Valeurs à l' interface (x/t=VGRIL)
 164 : C
 165 : C     ROR    = rho
 166 : C     UNR =  = un
 167 : C     UTR =  = ut      
 168 : C     ROETR  = rho*et
 169 : C     PR     = p      
 170 : C     LOGETD = .FALSE. -> on est à gauche de la discontinuité de contact.
 171 : C              .TRUE.  -> on est à droite de la discontinuité de contact. 
 172 : C
 173 :       IF(LOGNC .OR. LOGAN) GOTO 9999
 174 : C
 175 : C**** Les flux      
 176 : C
 177 :       VREL = UNR - VGRIL
 178 :       FLUM = ROR * VREL 
 179 :       RHTR = ROETR + PR
 180 :       FLUX(1) = FLUM
 181 :       FLUX(2) = FLUM * UNR + PR
 182 :       FLUX(3) = FLUM * UTR
 183 :       FLUX(4) = FLUM * UVR
 184 :       FLUX(5) = VREL * RHTR
 185 : C
 186 : C**** TEST
 187 : C
 188 : C     On peut demontrer que le sign de la vitesse
 189 : C     sur la discontinuité de contact est le meme
 190 : C     que le sign de ROR*(UNR-VGRIL) 
 191 : C     (voir Larrouturou,
 192 : C     J. Comp. Phys., 95, 1991)
 193 : C
 194 : C     Par contre, si ROR = 0, ceci n'est plus vrai,
 195 : C     mais dans ce cas RHO*U*Y = 0
 196 : C
 197 : C
 198 : C     FLUM < 0 -> On est à droite
 199 : C
 200 :       LOGLAR = FLUM .LT. 0.0D0      
 201 :       IF((ABS(FLUM) .GT. 1.0D-8) .AND. (LOGLAR .NEQV. LOGETD))  THEN
 202 :          MESERR = 'RIEMANN, flurie.eso (Larrouturou)       '
 203 :          LOGAN = .TRUE.
 204 :          GOTO 9999
 205 :       ENDIF
 206 : C
 207 : C**** Fin test
 208 : C
 209 : C           
 210 :       IF(NESP .GT. 0)THEN
 211 :          IF(LOGETD)THEN
 212 :             DO I1 = 1, NESP
 213 :                FLUX(I1+5) = FLUM * YD(I1)
 214 :             ENDDO
 215 :          ELSE
 216 :             DO I1 = 1, NESP
 217 :                FLUX(I1+5) = FLUM * YG(I1)
 218 :             ENDDO
 219 :          ENDIF
 220 :       ENDIF
 221 : C
 222 : C**** CFL
 223 : C
 224 :       AR = SQRT (GAMR * PR / ROR)
 225 :       CELLT = 1.0D0 / (ABS(VREL)+AR)
 226 : C     
 227 :  9999 CONTINUE
 228 : C      
 229 :       RETURN
 230 :       END
 231 : 
 232 : 
 233 :  
 234 :  

© Cast3M 2003 - All rights reserved.
Disclaimer