1 : C FRBM1 SOURCE CHAT 05/01/13 00:08:12 5004 2 : SUBROUTINE FRBM1(VCO,RO,UN,UT,P,GAM,AMAT,RLAMBD) 3 : C 4 : C PROJET : CASTEM 2000 5 : C 6 : C NOM : FRBM1 7 : C 8 : C DESCRIPTION : Formulation Volumes Finis pour les Equations 9 : C d'Euler Monoespece relatives à un 10 : C gaz parfait. 11 : C 12 : C Calcul des valeurs propres de la matrice de 13 : C precondit. de Turkel et de sa matrice inverse 14 : C 15 : C LANGUAGE : FORTRAN 77 16 : C 17 : C AUTEUR : A. BECCANTINI SFME/LTMF 18 : C 19 : C************************************************************************ 20 : C 21 : C APPELES : Subroutine appellée par FRUSBM, KONJR1 22 : C 23 : C************************************************************************ 24 : C 25 : C**** Entrées: 26 : C 27 : C GAM = "gamma" du gaz (gauche et droite) 28 : C 29 : C RO = densités 30 : C 31 : C P = pression 32 : C 33 : C UN = vitesses normales 34 : C 35 : C UT = vitesses tangentielles 36 : C 37 : C VCO = vitesse de cut-off 38 : C 39 : C**** Sorties: 40 : C 41 : C AMAT = inverse de la matrice de prec de Turkel 42 : C 43 : C RLAMBD = Valeurs propres de la matrice de precond. 44 : C 45 : C************************************************************************ 46 : C 47 : C HISTORIQUE (Anomalies et modifications éventuelles) 48 : C 49 : C HISTORIQUE : Créé le 02.05.03 50 : C 51 : C************************************************************************ 52 : C 53 : C N.B.: Toutes les variables sont DECLAREES 54 : C 55 : C 56 : IMPLICIT INTEGER(I-N) 57 : REAL*8 GAM,RO,P,UN,UT,VCO,AMAT(4,4),RLAMBD 58 : & ,GAM1,CSON2,Q2,H,M2,COEF,BET2 59 : C 60 : c 61 : c 62 : GAM1=GAM-1.0D0 63 : CSON2=GAM*P/RO 64 : Q2=(UN*UN+UT*UT) 65 : H=(0.5D0*Q2)+(CSON2/GAM1) 66 : M2=Q2/CSON2 67 : C 68 : COEF=(VCO*VCO)/CSON2 69 : IF(COEF.GT. 1.0D0) COEF=1.0D0 70 : IF(M2 .GE. 1)THEN 71 : BET2=1.0D0 72 : ELSEIF(M2 .LE. COEF)THEN 73 : BET2=COEF 74 : ELSE 75 : BET2=M2 76 : ENDIF 77 : 78 : COEF=(1.0D0/BET2 - 1.0D0)*GAM1/CSON2 79 : C 80 : AMAT(1,1)=1.0D0+(0.5D0*COEF*Q2) 81 : AMAT(1,2)=-1.0D0*COEF*UN 82 : AMAT(1,3)=-1.0D0*COEF*UT 83 : AMAT(1,4)=COEF 84 : C 85 : AMAT(2,1)=0.5D0*COEF*Q2*UN 86 : AMAT(2,2)=1.0D0-(COEF*UN**2) 87 : AMAT(2,3)=-1.0D0*COEF*UN*UT 88 : AMAT(2,4)=COEF*UN 89 : C 90 : AMAT(3,1)=0.5D0*COEF*Q2*UT 91 : AMAT(3,2)=-COEF*UN*UT 92 : AMAT(3,3)=1.0D0-COEF*UT**2 93 : AMAT(3,4)=COEF*UT 94 : C 95 : AMAT(4,1)=0.5D0*COEF*Q2*H 96 : AMAT(4,2)=-1.0D0*COEF*UN*H 97 : AMAT(4,3)=-1.0D0*COEF*UT*H 98 : AMAT(4,4)=1.0D0+COEF*H 99 : C 100 : RLAMBD=((1 - BET2)*UN)**2 101 : RLAMBD=RLAMBD + (4*BET2*CSON2) 102 : RLAMBD=RLAMBD**0.5D0 103 : RLAMBD=RLAMBD+((1.0D0+BET2)*ABS(UN)) 104 : RLAMBD=0.5D0*RLAMBD 105 : C 106 : C**** Test: const coeff. (for tensorial reaons 107 : C the sign must be keep as in the former case) 108 : C SIGN(A,B) = A * SIGN(B) 109 : C 110 : C AMAT(1,1)=SIGN(11.7D0,AMAT(1,1)) 111 : C AMAT(2,1)=SIGN(1.7D1,AMAT(2,1)) 112 : C AMAT(3,1)=SIGN(2.7D0,AMAT(3,1)) 113 : C AMAT(4,1)=SIGN(3.7D0,AMAT(4,1)) 114 : CC 115 : C AMAT(1,2)=SIGN(11.17D0,AMAT(1,2)) 116 : C AMAT(2,2)=SIGN(2.17D0,AMAT(2,2)) 117 : C AMAT(3,2)=SIGN(101.7D0,AMAT(3,2)) 118 : C AMAT(4,2)=SIGN(11.97D0,AMAT(4,2)) 119 : CC 120 : C AMAT(1,3)=SIGN(1.79D0,AMAT(1,3)) 121 : C AMAT(2,3)=SIGN(2.79D0,AMAT(2,3)) 122 : C AMAT(3,3)=SIGN(3.79D0,AMAT(3,3)) 123 : C AMAT(4,3)=SIGN(4.87D0,AMAT(4,3)) 124 : CC 125 : C AMAT(1,4)=SIGN(91.7D0,AMAT(1,4)) 126 : C AMAT(2,4)=SIGN(71.7D0,AMAT(2,4)) 127 : C AMAT(3,4)=SIGN(81.7D0,AMAT(3,4)) 128 : C AMAT(4,4)=SIGN(51.7D0,AMAT(4,4)) 129 : CC 130 : C RLAMBD=SIGN(1.171D0,RLAMBD) 131 : C 132 : C**** Fin test 133 : C 134 : RETURN 135 : END 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 :
© Cast3M 2003 - All rights reserved.
Disclaimer