frusb3
C FRUSB3 SOURCE KLOCZKO 05/06/14 21:15:14 5111 C FRUSB3 SOURCE CHAT 05/01/13 00:09:18 5004 & GAMG,ROG,PG,UNG,UTG,UVG, & GAMD,ROD,PD,UND,UTD,UVD, & YG,YD,VINF,FLU, & CELLT) C C PROJET : CASTEM 2000 C C NOM : FRUSB3 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 preconditionée 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 repaire C (n,t), i.e. C (rho*un, rho*un*un + p, rho*un*ut, rho*un*ut, 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 IMPLICIT INTEGER(I-N) INTEGER NESP,I1,I2 REAL*8 GAMG,ROG,PG,UNG,UTG,UVG,HG,RETG,CG & ,GAMD,ROD,PD,UND,UTD,UVD,HD,RETD,CD & ,YG(*),YD(*),VINF & ,FLU(*),CELLT, FLUM & ,UNF,UTF,UVF,ROF,PF,GAMF,HF,VPMAX,PHIM & ,AMAT(5,5),XP(5),FC(5),DS(5) & ,GAM1,XU,CF,Q2,COEF C C**** Etat moyen C UNF = 0.5D0 * (UNG + UND) UTF = 0.5D0 * (UTG + UTD) UVF = 0.5D0 * (UVG + UVD) ROF = 0.5D0 * (ROG + ROD) PF = 0.5D0 * (PG + PD) GAMF = 0.5D0 * (GAMG + GAMD) GAM1 = GAMF - 1.D0 CF = (GAMF * PF / ROF)**0.5D0 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 de la condition de stabilité C CELLT = 1.0D0 / (CF + ABS(UNF)) C C**** DELTA 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 HG = (1.D0 / ROG) * (RETG + PG) HD = (1.D0 / ROD) * (RETD + PD) HF = 0.5D0 * (HG + HD) 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 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) * UNF)**2 + 4.D0 * (PHIM * CF)**2 C VPMAX = 0.5D0 * ((1.D0 + PHIM**2) * ABS(UNF) + SQRT(XU)) C C C*** Calcul de la matrice de préconditionnement C Q2 = 0.5D0 * (UNF**2 + UTF**2 + UVF**2) COEF = (1.0D0 / PHIM**2 - 1.0D0) * GAM1 / CF**2 C AMAT(1,1) = COEF * 1.D0 * Q2 + 1.D0 AMAT(1,2) = COEF * 1.D0 * (-UNF) AMAT(1,3) = COEF * 1.D0 * (-UTF) AMAT(1,4) = COEF * 1.D0 * (-UVF) AMAT(1,5) = COEF * 1.D0 * 1.D0 C AMAT(2,1) = COEF * UNF * Q2 AMAT(2,2) = COEF * UNF * (-UNF) + 1.D0 AMAT(2,3) = COEF * UNF * (-UTF) AMAT(2,4) = COEF * UNF * (-UVF) AMAT(2,5) = COEF * UNF * 1.D0 C AMAT(3,1) = COEF * UTF * Q2 AMAT(3,2) = COEF * UTF * (-UNF) AMAT(3,3) = COEF * UTF * (-UTF) + 1.D0 AMAT(3,4) = COEF * UTF * (-UVF) AMAT(3,5) = COEF * UTF * 1.D0 C AMAT(4,1) = COEF * UVF * Q2 AMAT(4,2) = COEF * UVF * (-UNF) AMAT(4,3) = COEF * UVF * (-UTF) AMAT(4,4) = COEF * UVF * (-UVF) + 1.D0 AMAT(4,5) = COEF * UVF * 1.D0 C AMAT(5,1) = COEF * HF * Q2 AMAT(5,2) = COEF * HF * (-UNF) AMAT(5,3) = COEF * HF * (-UTF) AMAT(5,4) = COEF * HF * (-UVF) AMAT(5,5) = COEF * HF * 1.D0 + 1.D0 C C*** Calcul de la dissipation C DO I1 = 1,5 DS(I1) = 0.D0 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 multi-espèces 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