C FRUSAN SOURCE CHAT 05/01/13 00:09:15 5004 SUBROUTINE FRUSAN(NESP, & GAMG,ROG,PG,UNG,UTG, & GAMD,ROD,PD,UND,UTD, & YG,YD,FLU, & CELLT) C C C PROJET : CASTEM 2000 C C NOM : FRUSAN C C DESCRIPTION : Formulation Volumes Finis pour les Equations C d'Euler Multi-Especes relatives à un melange C de gaz parfaits. C C Calcul du flux aux interfaces avec la methode C de Rusanov C C LANGUAGE : FORTRAN 77 C C AUTEUR : A. BECCANTINI SFME/LTMF C C************************************************************************ C C APPELES : 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 = vitesses tangentielles C C**** Sorties: C C FLU = 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 08.02.00 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 REAL*8 GAMG,ROG,PG,UNG,UTG & ,GAMD,ROD,PD,UND,UTD & ,YG(*),YD(*) & ,FLU(*),CELLT, FLUM & ,CSON, SIGMA, RETG, RETD C CSON = (0.5D0 * (GAMG + GAMD)) * ((PG + PD) / (ROG + ROD)) SIGMA = 0.5D0*(ABS(UNG) + ABS(UND)) + (CSON ** 0.5D0) CELLT=1.0D0/SIGMA C FLU(1) = 0.5D0 * ((ROG * UNG) + (ROD * UND) + & (SIGMA *(ROG - ROD))) FLU(2) = 0.5D0 * ((ROG * UNG * UNG) + (ROD * UND * UND) + & (PG + PD) + (SIGMA * ((ROG * UNG ) - (ROD * UND)))) FLU(3) = 0.5D0 * ((ROG * UNG * UTG) + (ROD * UND * UTD) + & (SIGMA * ((ROG * UTG ) - (ROD * UTD)))) RETG = ((1.0D0 / (GAMG - 1.0D0)) * PG ) + & (0.5D0 * ROG * ((UNG * UNG) + (UTG * UTG))) RETD = ((1.0D0 / (GAMD - 1.0D0)) * PD ) + & (0.5D0 * ROD * ((UND * UND) + (UTD * UTD))) FLU(4) = 0.5D0 * ((UNG * (RETG + PG)) + (UND * (RETD + PD)) + & (SIGMA * (RETG - RETD))) C FLUM = FLU(1) IF(FLUM .GT. 0)THEN DO I1 = 1, NESP, 1 FLU(4+I1)=FLUM * YG(I1) ENDDO ELSE DO I1 = 1, NESP, 1 FLU(4+I1)=FLUM * YD(I1) ENDDO ENDIF C RETURN END