1 : C RACCOL SOURCE CHAT 05/01/13 02:44:05 5004
2 : SUBROUTINE RACCOL(PVAL,UVAL,NORDP1,
3 : & RG,ACVTOG,RD,ACVTOD,
4 : & ROG,TG,ETHEG,UG,RTG,GAMG,CG,
5 : & ROD,TD,ETHED,UD,RTD,GAMD,CD,
6 : & ROGS,PGS,TGS,ETHEGS,UGS,DGS,GAMGS,
7 : & RODS,PDS,TDS,ETHEDS,UDS,DDS,GAMDS,
8 : & LOGNC)
9 : C
10 : C************************************************************************
11 : C
12 : C PROJET : CASTEM 2000
13 : C
14 : C NOM : RACCOL
15 : C
16 : C DESCRIPTION : voir aussi FCOLTE
17 : C
18 : C Calcul de l'intersection des conditions de
19 : C Rankine-Hugoniot
20 : C
21 : C LANGAGE : FORTRAN 77
22 : C
23 : C AUTEUR : A. BECCANTINI DRN/DMT/SEMT/LTMF
24 : C
25 : C************************************************************************
26 : C
27 : C APPELES : FUNCOL, GRACOL
28 : C
29 : C************************************************************************
30 : C
31 : C**** Entrées:
32 : C
33 : C PVAL,UVAL = pression, vitesse, de reference
34 : C
35 : C NORDP1 = degree des polynoms cv + 1
36 : C
37 : C RG, RD = R du gaz a gauche et a droite
38 : C
39 : C ACVTOG, ACVTOD = les sommes des coefficients des cv;
40 : C ACVTOT(j) = \sum_{i=1,nesp} Y_i*ACV_{i,j}
41 : C j = 1 , NORDP1
42 : C
43 : C ROG, ROD = les densités
44 : C
45 : C TG, TD = les temperatures
46 : C
47 : C ETHERG, ETHERD = les energies thermiques
48 : C
49 : C UG, UD = vitesses normales
50 : C
51 : C RTG, RTD = RG * TG = PG / ROG, ...
52 : C
53 : C GAMG, GAMD = les "gamma" du gaz (gauche et droite)
54 : C
55 : C CG, CD = les vitesse du son
56 : C
57 : C**** Sorties:
58 : C
59 : C Les etats intermediares, i.e.:
60 : C
61 : C ROGS,PGS,TGS,ETHEGS,UGS,DGS,GAMGS = densite, pression,
62 : C temperature, energie termique, vitesse normale de
63 : C l'etat GS (Gauche Star), vitesse du choc gauche et gamma
64 : C
65 : C RODS,PDS,TDS,ETHEDS,UDS,DDS,GAMDS = densite, pression,
66 : C temperature, energie termique, vitesse normale de
67 : C l'etat DS (Droite Star), vitesse du choc droite et gamma
68 : C
69 : C LOGNC = si .TRUE. Newton ne converge pas
70 : C
71 : C************************************************************************
72 : C
73 : C HISTORIQUE (Anomalies et modifications éventuelles)
74 : C
75 : C HISTORIQUE : Créé le 08.02.00
76 : C
77 : C************************************************************************
78 : C
79 : C N.B.: Toutes les variables sont DECLAREES
80 : C
81 : C
82 : IMPLICIT INTEGER(I-N)
83 : INTEGER NORDP1,IMAX,ITER,IZERMA,IZER
84 : REAL*8 ZERO,PVAL,UVAL
85 : & ,RG,ACVTOG(*),RD,ACVTOD(*)
86 : & ,ROG,TG,RTG,ETHEG,UG,GAMG,CG
87 : & ,ROD,TD,RTD,ETHED,UD,UD1,GAMD,CD
88 : & ,ROGS,PGS,TGS,ETHEGS,UGS
89 : & ,RODS,PDS,TDS,ETHEDS,UDS
90 : & ,RTGS,CVGS,DELSGS,UMXSOG,UPXSOG
91 : & ,RC1G,AEQ1G,XSOLG,DUDTGS,DPDTGS
92 : & ,RTDS,CVDS,DELSDS,UMXSOD,UPXSOD
93 : & ,RC1D,AEQ1D,XSOLD,DUDTDS,DPDTDS
94 : & ,DETJ,TGS1,TDS1,DGS,DDS,GAMGS,GAMDS
95 : & ,TGZERO,TDZERO
96 : LOGICAL LOEQGS,LOEQDS,LOGNC,LOGDO
97 : C
98 : PARAMETER(ZERO=1.0D-6,IMAX=20,IZERMA=6)
99 : C
100 : TGZERO = TG
101 : TDZERO = TD
102 : LOGNC = .FALSE.
103 : ITER = 0
104 : IZER= 0
105 : UD1 = -1.0D0 * UD
106 : TGS = TG
107 : TDS = TD
108 : C
109 : C**** Calcul de l'etat UG*
110 : C
110 : CALL FUNCOL(NORDP1,RG,ACVTOG,ROG,TG,RTG,ETHEG,UG,GAMG,CG,
111 : & TGS,RTGS,CVGS,ROGS,PGS,ETHEGS,UGS,
112 : & DELSGS,UMXSOG,UPXSOG,
113 : & RC1G,AEQ1G,XSOLG,
114 : & LOEQGS,DUDTGS,DPDTGS)
115 : C
116 : C**** Calcul de l'etat UD*
117 : C
117 : CALL FUNCOL(NORDP1,RD,ACVTOD,ROD,TD,RTD,ETHED,UD1,GAMD,CD,
118 : & TDS,RTDS,CVDS,RODS,PDS,ETHEDS,UDS,
119 : & DELSDS,UMXSOD,UPXSOD,
120 : & RC1D,AEQ1D,XSOLD,
121 : & LOEQDS,DUDTDS,DPDTDS)
122 : C
123 : C***** Convergence
124 : C
125 : LOGDO = (ABS(PGS - PDS)) .GT. (ZERO * PVAL) .OR.
126 : & (ABS(UGS + UDS)) .GT. (ZERO * UVAL)
127 : C
128 : DO WHILE(LOGDO)
129 : ITER = ITER + 1
130 : IF((IZER .GT. IZERMA) .OR. (ITER .GT. IMAX))THEN
131 : LOGDO = .FALSE.
132 : LOGNC = .TRUE.
133 : ELSE
134 : C
135 : C********* Calcul de TGS1, TDS1
136 : C
137 : IF(.NOT. LOEQGS)
137 : & CALL GRACOL(RG,RTG,CVGS,AEQ1G,DELSGS,
138 : & XSOLG,PGS,TGS,
139 : & RC1G,UG,UGS,UPXSOG,UMXSOG,
140 : & DUDTGS,DPDTGS)
141 : IF(.NOT. LOEQDS)THEN
141 : CALL GRACOL(RD,RTD,CVDS,AEQ1D,DELSDS,
142 : & XSOLD,PDS,TDS,
143 : & RC1D,UD1,UDS,UPXSOD,UMXSOD,
144 : & DUDTDS,DPDTDS)
145 : ENDIF
146 : C
147 : C********** Calcul de TGS1, TDS1
148 : C
149 : DETJ = (DPDTDS * DUDTGS) + (DPDTGS * DUDTDS)
150 : TGS1 = (DUDTDS * (PDS - PGS)) - (DPDTDS * (UDS + UGS))
151 : TGS1 = (TGS1 / DETJ) + TGS
152 : TDS1 = (DUDTGS * (PGS - PDS)) - (DPDTGS * (UDS + UGS))
153 : TDS1 = (TDS1 / DETJ) + TDS
154 : IF(TGS1 .LE. 0.0D0) THEN
155 : IZER = IZER + 1
156 : TGS = 1.0D-4 * TGZERO
157 : TGZERO = TGS
158 : ELSE
159 : TGS = TGS1
160 : ENDIF
161 : IF(TDS1 .LE. 0.0D0)THEN
162 : IZER = IZER + 1
163 : TDS = 1.0D-4 * TDZERO
164 : TDZERO = TDS
165 : ELSE
166 : TDS = TDS1
167 : ENDIF
168 : C
169 : C
170 : C**** Calcul de l'etat UG*
171 : C
171 : CALL FUNCOL(NORDP1,RG,ACVTOG,ROG,TG,RTG,ETHEG,UG,GAMG,CG,
172 : & TGS,RTGS,CVGS,ROGS,PGS,ETHEGS,UGS,
173 : & DELSGS,UMXSOG,UPXSOG,
174 : & RC1G,AEQ1G,XSOLG,
175 : & LOEQGS,DUDTGS,DPDTGS)
176 : C
177 : C**** Calcul de l'etat UD*
178 : C
178 : CALL FUNCOL(NORDP1,RD,ACVTOD,ROD,TD,RTD,ETHED,UD1,GAMD,CD,
179 : & TDS,RTDS,CVDS,RODS,PDS,ETHEDS,UDS,
180 : & DELSDS,UMXSOD,UPXSOD,
181 : & RC1D,AEQ1D,XSOLD,
182 : & LOEQDS,DUDTDS,DPDTDS)
183 : C
184 : C***** Convergence
185 : C
186 : LOGDO = (ABS(PGS - PDS)) .GT. (ZERO * PVAL) .OR.
187 : & (ABS(UGS + UDS)) .GT. (ZERO * UVAL)
188 : ENDIF
189 : ENDDO
190 : UDS = -1.0D0 * UDS
191 : IF(LOEQGS)THEN
192 : DGS = UG - CG
193 : ELSE
194 : DGS = UG - SQRT(RC1G/UMXSOG/UPXSOG)
195 : ENDIF
196 : IF(LOEQDS)THEN
197 : DDS = UD + CD
198 : ELSE
199 : DDS = UD + SQRT(RC1D/UMXSOD/UPXSOD)
200 : ENDIF
201 : GAMGS = (CVGS+RG)/CVGS
202 : GAMDS = (CVDS+RD)/CVDS
203 : RETURN
204 : END
205 :
206 :
207 :
208 :
209 :
210 :
© Cast3M 2003 - All rights reserved.
Disclaimer