froeb3
C FROEB3 SOURCE KLOCZKO 05/06/14 21:15:06 5111 C FROEB3 SOURCE BECC 02/06/18 21:15:55 4365 & GAMG,ROG,PG,UNG,UTG,UVG, & GAMD,ROD,PD,UND,UTD,UVD, & YG,YD,VINF,FLU, & CELLT) C C C PROJET : CASTEM 2000 C C NOM : FROEB3 C C DESCRIPTION : Formulation Volumes Finis pour les Equations C d'Euler Multi-Espèces relatives à un mélange C de gaz parfaits. C C Calcul du flux aux interfaces avec la méthode C de Roe-Turkel (cf. Thèse Cécile Viozat) adaptée C aux écoulements à faible nombre de Mach. C C LANGUAGE : FORTRAN 77 C C AUTEUR : T. KLOCZKO DM2S/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 UVG, UVD = vitesses tangentielles C C VINF = vitesse de cut-off C C**** Sorties: C C FLU = table du flux a l'interface dans le repère C (n,t), i.e. C (rho*un, rho*un*un + p, rho*un*ut, rho*un*uv, C rho*un*ht, 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 02.05.05 C C C C************************************************************************ C C N.B.: Toutes les variables sont DECLAREES C C C IMPLICIT NONE C C*** Déclaration des indices de boucles et du nombre d'espèces INTEGER NESP,I1,I2,I3 C C*** Déclaration des variables primitives REAL*8 ROG,PG,UNG,UTG,UVG,RETG,GAMG, & ROD,PD,UND,UTD,UVD,RETD,GAMD C C*** Déclaration des variables de cacul des incréments conservatifs REAL*8 XP(5) C C*** Déclaration des variables de l'état moyen de Roe REAL*8 SQROG,SQROD,ROM,ROS, & UNM,UTM,UVM, & HG,HD,HM, & CM,GAMM,GAM1 C C*** Déclaration de la condition de stabilité REAL*8 CELLT C C*** Délaration des variables de calcul du Mach de référence REAL*8 CG,CD,PHIM,VINF C C*** Déclaration des variables de calcul des valeurs propres REAL*8 VP(5),XU C C*** Déclaration des variables de calcul des matrices de passage REAL*8 R,S,TU,Q2, & MPI(5,5),MP(5,5) C C*** Déclaration des variables de calcul de la dissipation REAL*8 VDIS(5),DS(5) C C*** Déclaration des variables de calcul du flux numérique REAL*8 FC(5),FLU(*) C C*** Déclaration de la partie multiespèce REAL*8 YG(*),YD(*),FLUM C C C C*** DEBUT DES CALCULS *** C C C**** We include in the cut-off UNG,UND,UTG,UTD in order to C avoid low diffusivity in stagnation regions C VINF=MAX(VINF,((UNG**2+UTG**2+UVG**2)**0.5D0)) VINF=MAX(VINF,((UND**2+UTD**2+UVD**2)**0.5D0)) C C**** Calcul des Deltas XP C RETG = ((1.0D0 / (GAMG - 1.0D0)) * PG) & + (0.5D0*ROG*(UNG**2+UTG**2+UVG**2)) RETD = ((1.0D0 / (GAMD - 1.0D0)) * PD) & + (0.5D0*ROD*(UND**2+UTD**2+UVD**2)) C XP(1) = ROG - ROD XP(2) = (ROG * UNG) - (ROD * UND) XP(3) = (ROG * UTG) - (ROD * UTD) XP(4) = (ROG * UVG) - (ROD * UVD) XP(5) = RETG - RETD C C*** Calcul de l'état moyen de Roe C GAMM = SQRT(GAMG) * SQRT(GAMD) GAM1 = GAMM - 1.D0 C SQROG = SQRT(ROG) SQROD = SQRT(ROD) ROM = SQROG * SQROD ROS = SQROG + SQROD C UNM = ((SQROG * UNG) + (SQROD * UND)) / ROS UTM = ((SQROG * UTG) + (SQROD * UTD)) / ROS UVM = ((SQROG * UVG) + (SQROD * UVD)) / ROS C HG = (1.D0 / ROG) * (RETG + PG) HD = (1.D0 / ROD) * (RETD + PD) HM = ((SQROG * HG) + (SQROD * HD)) / ROS C CM = SQRT(GAM1 * (HM - 0.5D0 * (UNM**2 + UTM**2+UVM**2))) C C*** Calcul de la condition de stabilité C CELLT = 1.D0 / (CM + ABS(UNM)) C C*** Calcul du nombre de Mach de référence PHIM C CG = SQRT((GAMG * PG) / ROG) CD = SQRT((GAMD * PD) / ROD) IF(VINF.GE.MAX(CD,CG))THEN PHIM = 1.D0 ELSE PHIM = 0.5D0 * VINF * ((1.D0 / CG) + (1.D0 / CD)) ENDIF C C*** Calcul des valeurs propres C XU = ((1.D0 - PHIM**2) * UNM)**2 + 4.D0 * (PHIM * CM)**2 C VP(1) = UNM VP(2) = UNM VP(3) = UNM VP(4) = 0.5D0 * ((1.D0 + PHIM**2) * UNM + SQRT(XU)) VP(5) = 0.5D0 * ((1.D0 + PHIM**2) * UNM - SQRT(XU)) C C*** Calcul des matrices de passages C R = VP(4) - UNM * PHIM**2 S = VP(5) - UNM * PHIM**2 TU = 0.5D0 * (VP(5) - VP(4)) Q2 = 0.5D0 * (UNM**2 + UTM**2+UVM**2) C MPI(1,1) = 1.D0 - GAM1 * Q2 / (CM**2) MPI(1,2) = GAM1 * UNM / (CM**2) MPI(1,3) = GAM1 * UTM / (CM**2) MPI(1,4) = GAM1 * UVM / (CM**2) MPI(1,5) = -GAM1 / (CM**2) MPI(2,1) = UVM MPI(2,2) = 0.D0 MPI(2,3) = 0.D0 MPI(2,4) = -1.D0 MPI(2,5) = 0.D0 MPI(3,1) = UTM MPI(3,2) = 0.D0 MPI(3,3) = -1.D0 MPI(3,4) = 0.D0 MPI(3,5) = 0.D0 MPI(4,1) = (S * Q2 * GAM1 + UNM * (PHIM*CM)**2) / TU MPI(4,2) = -(S * UNM * GAM1 + (PHIM*CM)**2) / TU MPI(4,3) = -(S * UTM * GAM1) / TU MPI(4,4) = -(S * UVM * GAM1) / TU MPI(4,5) = S * GAM1 /TU MPI(5,1) = -(R * Q2 * GAM1 + UNM * (PHIM*CM)**2) / TU MPI(5,2) = (R * UNM * GAM1 + (PHIM*CM)**2) / TU MPI(5,3) = (R * UTM * GAM1) / TU MPI(5,4) = (R * UVM * GAM1) / TU MPI(5,5) = -R * GAM1 / TU C MP(1,1) = 1.D0 MP(1,2) = 0.D0 MP(1,3) = 0.D0 MP(1,4) = 0.5D0 / (PHIM*CM)**2 MP(1,5) = 0.5D0 / (PHIM*CM)**2 MP(2,1) = UNM MP(2,2) = 0.D0 MP(2,3) = 0.D0 MP(2,4) = 0.5D0 * (UNM + R) / (PHIM*CM)**2 MP(2,5) = 0.5D0 * (UNM + S) / (PHIM*CM)**2 MP(3,1) = UTM MP(3,2) = 0.D0 MP(3,3) = -1.D0 MP(3,4) = 0.5D0 * UTM / (PHIM*CM)**2 MP(3,5) = 0.5D0 * UTM / (PHIM*CM)**2 MP(4,1) = UVM MP(4,2) = -1.D0 MP(4,3) = 0.D0 MP(4,4) = 0.5D0 * UVM / (PHIM*CM)**2 MP(4,5) = 0.5D0 * UVM / (PHIM*CM)**2 MP(5,1) = Q2 MP(5,2) = -UVM MP(5,3) = -UTM MP(5,4) = 0.5D0 * (HM + R * UNM) / (PHIM*CM)**2 MP(5,5) = 0.5D0 * (HM + S * UNM) / (PHIM*CM)**2 C C*** Calcul de la dissipation C DO I1 = 1,5 VDIS(I1) = 0.5D0 * ABS(VP(I1)) ENDDO C DO I1 = 1,5 DS(I1) = 0.D0 DO I3 = 1,5 ENDDO ENDDO ENDDO C C*** Calcul du flux convectif C FC(1) = 0.5D0 * ((ROG * UNG) + (ROD * UND)) FC(2) = 0.5D0 * ((ROG * UNG * UNG + PG) + (ROD * UND * UND + PD)) FC(3) = 0.5D0 * ((ROG * UNG * UTG) + (ROD * UND * UTD)) FC(4) = 0.5D0 * ((ROG * UNG * UVG) + (ROD * UND * UVD)) FC(5) = 0.5D0 * ((UNG * (RETG + PG)) + (UND * (RETD + PD))) C C*** Calcul du flux numérique C DO I1 = 1,5 FLU(I1) = FC(I1) + DS(I1) ENDDO C C*** Partie multiespèce C FLUM = FLU(1) IF(FLUM .GT. 0)THEN DO I1 = 1, NESP, 1 FLU(5+I1)=FLUM * YG(I1) ENDDO ELSE DO I1 = 1, NESP, 1 FLU(5+I1)=FLUM * YD(I1) ENDDO ENDIF C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales