frbm1
C FRBM1 SOURCE CHAT 05/01/13 00:08:12 5004 C C PROJET : CASTEM 2000 C C NOM : FRBM1 C C DESCRIPTION : Formulation Volumes Finis pour les Equations C d'Euler Monoespece relatives à un C gaz parfait. C C Calcul des valeurs propres de la matrice de C precondit. de Turkel et de sa matrice inverse C C LANGUAGE : FORTRAN 77 C C AUTEUR : A. BECCANTINI SFME/LTMF C C************************************************************************ C C APPELES : Subroutine appellée par FRUSBM, KONJR1 C C************************************************************************ C C**** Entrées: C C GAM = "gamma" du gaz (gauche et droite) C C RO = densités C C P = pression C C UN = vitesses normales C C UT = vitesses tangentielles C C VCO = vitesse de cut-off C C**** Sorties: C C AMAT = inverse de la matrice de prec de Turkel C C RLAMBD = Valeurs propres de la matrice de precond. C C************************************************************************ C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : Créé le 02.05.03 C C************************************************************************ C C N.B.: Toutes les variables sont DECLAREES C C IMPLICIT INTEGER(I-N) REAL*8 GAM,RO,P,UN,UT,VCO,AMAT(4,4),RLAMBD & ,GAM1,CSON2,Q2,H,M2,COEF,BET2 C c c GAM1=GAM-1.0D0 CSON2=GAM*P/RO Q2=(UN*UN+UT*UT) H=(0.5D0*Q2)+(CSON2/GAM1) M2=Q2/CSON2 C COEF=(VCO*VCO)/CSON2 IF(COEF.GT. 1.0D0) COEF=1.0D0 IF(M2 .GE. 1)THEN BET2=1.0D0 ELSEIF(M2 .LE. COEF)THEN BET2=COEF ELSE BET2=M2 ENDIF COEF=(1.0D0/BET2 - 1.0D0)*GAM1/CSON2 C AMAT(1,1)=1.0D0+(0.5D0*COEF*Q2) AMAT(1,2)=-1.0D0*COEF*UN AMAT(1,3)=-1.0D0*COEF*UT AMAT(1,4)=COEF C AMAT(2,1)=0.5D0*COEF*Q2*UN AMAT(2,2)=1.0D0-(COEF*UN**2) AMAT(2,3)=-1.0D0*COEF*UN*UT AMAT(2,4)=COEF*UN C AMAT(3,1)=0.5D0*COEF*Q2*UT AMAT(3,2)=-COEF*UN*UT AMAT(3,3)=1.0D0-COEF*UT**2 AMAT(3,4)=COEF*UT C AMAT(4,1)=0.5D0*COEF*Q2*H AMAT(4,2)=-1.0D0*COEF*UN*H AMAT(4,3)=-1.0D0*COEF*UT*H AMAT(4,4)=1.0D0+COEF*H C RLAMBD=((1 - BET2)*UN)**2 RLAMBD=RLAMBD + (4*BET2*CSON2) RLAMBD=RLAMBD**0.5D0 RLAMBD=RLAMBD+((1.0D0+BET2)*ABS(UN)) RLAMBD=0.5D0*RLAMBD C C**** Test: const coeff. (for tensorial reaons C the sign must be keep as in the former case) C SIGN(A,B) = A * SIGN(B) C C AMAT(1,1)=SIGN(11.7D0,AMAT(1,1)) C AMAT(2,1)=SIGN(1.7D1,AMAT(2,1)) C AMAT(3,1)=SIGN(2.7D0,AMAT(3,1)) C AMAT(4,1)=SIGN(3.7D0,AMAT(4,1)) CC C AMAT(1,2)=SIGN(11.17D0,AMAT(1,2)) C AMAT(2,2)=SIGN(2.17D0,AMAT(2,2)) C AMAT(3,2)=SIGN(101.7D0,AMAT(3,2)) C AMAT(4,2)=SIGN(11.97D0,AMAT(4,2)) CC C AMAT(1,3)=SIGN(1.79D0,AMAT(1,3)) C AMAT(2,3)=SIGN(2.79D0,AMAT(2,3)) C AMAT(3,3)=SIGN(3.79D0,AMAT(3,3)) C AMAT(4,3)=SIGN(4.87D0,AMAT(4,3)) CC C AMAT(1,4)=SIGN(91.7D0,AMAT(1,4)) C AMAT(2,4)=SIGN(71.7D0,AMAT(2,4)) C AMAT(3,4)=SIGN(81.7D0,AMAT(3,4)) C AMAT(4,4)=SIGN(51.7D0,AMAT(4,4)) CC C RLAMBD=SIGN(1.171D0,RLAMBD) C C**** Fin test C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales