fhllcl
C FHLLCL SOURCE BECC 10/05/05 21:15:09 6674
& GAMG,ROG,PG,UNG,UTG,
& GAMD,ROD,PD,UND,UTD,
& YG,YD,VINF0,FLU1,
& CELLT)
C
C************************************************************************
C
C PROJET : CASTEM 2000
C
C NOM : FHLLCL
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 de HLLC (avec gamma = const)
C +Low Mach preconditioning
C
C Voir: * Batten et al. SIAM J. Sci. Comp.
C Vol. 18 pp 1553-6, 1997
C * Batten et al. JCP, 1997
C Vol. 137 pp 38--
C * Luo et al., AIIA Journal, 2005
C Vol. 43, 6, pp 1160--
C
C N.B.: SPLIT DE FRACTIONS MASSIQUES ET UNT A LA
C LARROUTUROU
C
C LANGUAGE : FORTRAN 77
C
C AUTEUR : A. BECCANTINI DRN/DMT/SEMT/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 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 (temps/longueur)
C
C************************************************************************
C
C HISTORIQUE (Anomalies et modifications éventuelles)
C
C HISTORIQUE : Créé le 11.09.2000
C
C************************************************************************
C
C N.B.: Toutes les variables sont DECLAREES
C
C It exactly captures:
C
C Stationary shocks (test for instance
C
C GAMG=1.4D0
C GAMD=1.4D0
C ROG=1.0D0
C ROD=4.5584471D0
C PG=1.0D5
C PD=0.18279373D7
C UNG=0.14877919D4
C UND=0.32638130D3
C UTG=0.0D0
C UTD=0.0D0
C ) and stationary contacts
C
IMPLICIT INTEGER(I-N)
INTEGER NESP
& , IESP
REAL*8 GAMG,ROG,PG,UNG,UTG
& ,GAMD,ROD,PD,UND,UTD
& ,YG(*),YD(*),FLU1(*),CELLT,VINF0
& ,HALF
PARAMETER (HALF=0.5D0)
REAL*8 USGGM1,USGDM1,HTG,HTD,REING,REIND,SQRG,SQRD,USOSQR
& ,HTAVE,UNAVE,REIAVE,USGAVE,GAMAVE,ROAVE,PAVE,ASONAV
& ,ASONG,ASOND
& ,VINF,PHIG,PHID,PHIAV,XU,SG,SGS,SD,SDS
& ,SM,PSTAR,RETG,RETD,OMEGA
& ,ROGS,RUNGS,RETGS,RODS,RUNDS,RETDS
C
USGGM1=1.0D0/(GAMG-1.0D0)
USGDM1=1.0D0/(GAMD-1.0D0)
C
C Evaluation of the Roe average state to compute the non-linear wave
C speeds (According to Shuye, JCP 142, pag. 217--, 1998
C
REING=PG*USGGM1
REIND=PD*USGDM1
HTG=(HALF*UNG*UNG)+(GAMG*REING/ROG)
HTD=(HALF*UND*UND)+(GAMD*REIND/ROD)
SQRG=ROG**0.5D0
SQRD=ROD**0.5D0
USOSQR=1.0D0/(SQRG+SQRD)
HTAVE=((SQRG*HTG)+(SQRD*HTD))*USOSQR
UNAVE=((SQRG*UNG)+(SQRD*UND))*USOSQR
USGAVE=((SQRG*USGGM1)+(SQRD*USGDM1))*USOSQR
GAMAVE=(1.0D0/USGAVE)+1.0D0
REIAVE=((SQRG*REING)+(SQRD*REIND))*USOSQR
C
ROAVE=REIAVE*GAMAVE/(HTAVE-(HALF*UNAVE*UNAVE))
C
C
C**** Evaluation of the speed of the Genuinely-Non-Linear Waves
C for the Preconditioned System
C
ASONG=(GAMG*PG/ROG)**0.5D0
ASOND=(GAMD*PD/ROD)**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(VINF0,((UNG*UNG+UTG*UTG)**0.5D0))
VINF=MAX(VINF0,((UND*UND+UTD*UTD)**0.5D0))
C
C*** Calcul des nombres de Mach de référence
C PHIG, PHID, PHIAV
C
IF(VINF.GE.ASONG)THEN
PHIG = 1.D0
ELSE
PHIG = VINF/ASONG
ENDIF
IF(VINF.GE.ASOND)THEN
PHID = 1.D0
ELSE
PHID = VINF/ASOND
ENDIF
IF(VINF.GE.ASONAV)THEN
PHIAV = 1.D0
ELSE
PHIAV = VINF/ASONAV
ENDIF
C
C*** Calcul des valeurs propres
C
XU = (((1.D0 - PHIG**2) * UNG)**2) + (4.D0 * ((PHIG * ASONG)**2))
SG= ((1.D0 + (PHIG**2)) * UNG) - (XU**0.5D0)
SG= SG*HALF
C write(*,*) SG,(UNG-ASONG)
C
XU = (((1.D0 - PHIAV**2) * UNAVE)**2) +
& (4.D0 * ((PHIAV * ASONAV)**2))
SGS= ((1.D0 + (PHIAV**2)) * UNAVE) - (XU**0.5D0)
SGS= SGS*HALF
C write(*,*) SGS,(UNAVE-ASONAV)
C
SG=MIN(SG,SGS)
C
SDS= ((1.D0 + (PHIAV**2)) * UNAVE) + (XU**0.5D0)
SDS= SDS*HALF
C write(*,*) SDS,(UNAVE+ASONAV)
C
XU = (((1.D0 - PHID**2) * UND)**2) + (4.D0 * ((PHID * ASOND)**2))
SD= ((1.D0 + (PHID**2)) * UND) + (XU**0.5D0)
SD= SD*HALF
C write(*,*) SD,(UND+ASOND)
C
SD=MAX(SD,SDS)
C
C**** Speed of the contact discontinuity
C
SM=ROD*UND*(SD-UND)-ROG*UNG*(SG-UNG)+PG-PD
SM=SM/((ROD*(SD-UND))-(ROG*(SG-UNG)))
C
C**** Interfacial pressure
C
PSTAR=ROG*(UNG-SG)*(UNG-SM)+PG
RETG=(USGGM1*PG)+(HALF*ROG*((UNG*UNG)+(UTG*UTG)))
RETD=(USGDM1*PD)+(HALF*ROD*((UND*UND)+(UTD*UTD)))
C
IF(SG .GT. 0)THEN
FLU1(1)=ROG*UNG
FLU1(2)=ROG*UNG*UNG+PG
FLU1(4)=UNG*(RETG+PG)
ELSEIF(SM .GT. 0)THEN
OMEGA=1.0D0/(SG-SM)
ROGS=ROG*(SG-UNG)
ROGS=ROGS*OMEGA
RUNGS=((SG-UNG)*(ROG*UNG))+(PSTAR - PG)
RUNGS=RUNGS*OMEGA
RETGS=((SG-UNG)*RETG)+(PSTAR*SM)-(PG*UNG)
RETGS=RETGS*OMEGA
C
FLU1(1)=ROGS*SM
FLU1(2)=RUNGS*SM+PSTAR
FLU1(4)=(RETGS+PSTAR)*SM
C
ELSEIF(SD .GT. 0)THEN
OMEGA=1.0D0/(SD-SM)
RODS=ROD*(SD-UND)
RODS=RODS*OMEGA
RUNDS=((SD-UND)*(ROD*UND))+(PSTAR - PD)
RUNDS=RUNDS*OMEGA
RETDS=((SD-UND)*RETD)+(PSTAR*SM)-(PD*UND)
RETDS=RETDS*OMEGA
C
FLU1(1)=RODS*SM
FLU1(2)=RUNDS*SM+PSTAR
FLU1(4)=(RETDS+PSTAR)*SM
ELSE
FLU1(1)=ROD*UND
FLU1(2)=ROD*UND*UND+PD
FLU1(4)=UND*(RETD+PD)
ENDIF
C
FLU1(3)=(FLU1(1)*(UTG+UTD))+(ABS(FLU1(1))*(UTG-UTD))
FLU1(3)=HALF*FLU1(3)
C
DO IESP=1,NESP,1
FLU1(4+IESP)=(FLU1(1)*(YG(IESP)+YD(IESP)))+
& (ABS(FLU1(1))*(YG(IESP)-YD(IESP)))
FLU1(4+IESP)=HALF*FLU1(4+IESP)
ENDDO
C
CELLT=1.0D0/(MAX(SG,SD))
C
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales