1 : C FLAMB SOURCE CHAT 06/03/29 21:21:25 5360
2 : SUBROUTINE FLAMB()
3 : C************************************************************************
4 : C
5 : C PROJET : CASTEM 2000
6 : C
7 : C NOM : FLAMB
8 : C
9 : C DESCRIPTION : voir aussi FLAM
10 : C
11 : C Calcul des masses specifiques de H2, O2, H2O et de
12 : C l'energie libere dans le cas de combustion
13 : C governe' par une loi de type Arrhenius:
14 : C
15 : C 2 H2 + O2 -> 2 H2O
16 : C
17 : C w = A H(T - Ts) RH2^c RO2 * T^(-b) exp(-Ta/T)
18 : C
19 : C ou
20 : C
21 : C w = taux de reaction MOLAIRE pour la reaction
22 : C chimie, qui est suppose' etre elementaire
23 : C
24 : C H(T - Ts) est la fontion d'Heavyside
25 : C
26 : C N.B. L'energie thermique de chaque epsece est
27 : C definie par
28 : C
29 : C e = \int_{0}^T cv(y) dy
30 : C
31 : C Toutes les grandeurs sont exprimees en unites S.I.
32 : C
33 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
34 : C
35 : C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
36 : C
37 : C************************************************************************
38 : C
39 : C APPELES (E/S) : LIROBJ, ERREUR, LIRREE, QUEPOI, ECROBJ
40 : C
41 : C APPELES (Calcul) : FLAMB1
42 : C
43 : C************************************************************************
44 : C
45 : C
46 : C PHRASE D'APPEL (GIBIANE) :
47 : C
48 : C RCHPO1 RCHPO2 RCHPO3 RCHPO4 = 'FLAM' MCLE1 CHPO1 FLOT1 FLOT2 FLOT3
49 : C FLOT4 FLOT5 FLOT6 FLOT7 FLOT8
50 : C CHPO2 CHPO3 CHPO4 CHPO5 ;
51 : C
52 : C ENTREES :
53 : C
54 : C MCLE1 : 'ARRHENIU' : mot clé
55 : C
56 : C CHPO1 : CHPOINT contenant la temperature de seuil (en K;
57 : C une composante, 'SCAL').
58 : C
59 : C FLOT1 : FLOTTANT contenant la constant A (en unite S.I.)
60 : C
61 : C FLOT2 : FLOTTANT contenant la constant b
62 : C
63 : C FLOT3 : FLOTTANT contenant la constant c
64 : C
65 : C FLOT4 : FLOTTANT contenant la "temperature" d'activation
66 : C (en K)
67 : C
68 : C FLOT5 : FLOTTANT contenant l'enthalpie de H2
69 : C a 0K (en J/kg)
70 : C
71 : C FLOT6 : FLOTTANT contenant l'enthalpie de O2
72 : C a 0K (en J/kg)
73 : C
74 : C FLOT7 : FLOTTANT contenant l'enthalpie de H2O
75 : C a 0K (en J/kg)
76 : C
77 : C FLOT8 : FLOTTANT contenant l'interval temporelle de
78 : C reaction (en s)
79 : C
80 : C CHPO2 : CHPOINT contenant la masse volumique de
81 : C l'hydrogene (en Kg/m^3; une composante, 'H2 ').
82 : C
83 : C CHPO3 : CHPOINT contenant la masse volumique de
84 : C l'oxygene (en Kg/m^3; une composante, 'O2 ').
85 : C
86 : C CHPO4 : CHPOINT contenant la masse volumique de
87 : C l'eau (en Kg/m^3; une composante, 'H2O ').
88 : C
89 : C CHPO5 : CHPOINT contenant la temperature (en K; une
90 : C composante, 'SCAL').
91 : C
92 : C SORTIES :
93 : C
94 : C
95 : C RCHPO1 : CHPOINT contenant la masse volumique de
96 : C l'hydrogene apres la reaction (en Kg/m^3;
97 : C une composante, 'H2 ').
98 : C
99 : C RCHPO2 : CHPOINT contenant la masse volumique de
100 : C l'oxygene apres la reaction (en Kg/m^3;
101 : C une composante, 'O2 ').
102 : C
103 : C RCHPO3 : CHPOINT contenant la masse volumique de
104 : C l'eau apres la reaction (en Kg/m^3;
105 : C une composante, 'H2O ').
106 : C
107 : C RCHPO4 : CHPOINT contenant la chaleur libere' (en J/m^3;
108 : C une composante, 'SCAL').
109 : C
110 : C N.B.:-tous les CHPOINTs sont non-partitonees et
111 : C ils ont le meme support geometrique;
112 : C en sortie tous les CHPOINTs ont le support
113 : C geometrique du CHPO1
114 : C
115 : C************************************************************************
116 : C
117 : C HISTORIQUE (Anomalies et modifications éventuelles)
118 : C
119 : C HISTORIQUE : Créée le 25.2.99
120 : C
121 : C
122 : C************************************************************************
123 : C
124 : C
125 : C**** Variables de COOPTIO
126 : C
127 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
128 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
129 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
130 : C & ,IECHO, IIMPI, IOSPI
131 : C & ,IDIM
132 : C & ,MCOORD
133 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
134 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
135 : C & ,NORINC,NORVAL,NORIND,NORVAD
136 : C & ,NUCROU, IPSAUV
137 : C
138 : C**** Les variables
139 : C
140 : IMPLICIT INTEGER(I-N)
141 : INTEGER ICOND, IRETOU, IERR0, ICEN, NCEN, NBCOMP, INDIC
142 : & , ITSEUI, IRYH2, IRYO2 , IRYH2O, ITEMP
143 : & , IDE, INH2, INO2, INH2O, N, NC
144 : REAL*8 A, B, C, TA, H0H2, H0O2, H0H2O, DT, VALER
145 : CHARACTER*(8) MESERR
146 : CHARACTER*(8) MTYPR
147 : CHARACTER*(4) NOMTOT(1)
148 : LOGICAL LOGNEG
149 :
150 : C
151 : C**** Les Includes
152 : C
153 : -INC CCOPTIO
154 : -INC SMCHPOI
155 : POINTEUR TSEUIL.MPOVAL, TEMP.MPOVAL, RYH2.MPOVAL, RYO2.MPOVAL
156 : & , RYH2O.MPOVAL, NRYH2.MPOVAL, NRYO2.MPOVAL, NRYH2O.MPOVAL
157 : & , DE.MPOVAL
158 : -INC SMELEME
159 : C
160 : C**** Initialisation des parametres d'erreur
161 : C
162 : LOGNEG = .FALSE.
163 : MESERR = ' '
164 : VALER = 0.0D0
165 : C
166 : C**** Initialisation des NOMTOT(1) (noms des composantes)
167 : C
168 : NOMTOT(1) = ' '
169 : C
170 : C**** Lecture du CHPOINT CHPO1 (temperature de seuil)
171 : C
172 : ICOND = 1
173 : MTYPR = 'CHPOINT '
173 : CALL LIROBJ(MTYPR,ITSEUI,ICOND,IRETOU)
174 : IF(IERR .NE. 0)GOTO 9999
175 : C
176 : C**** On cherche le pointeur de son maillage et on l'impose sur les
177 : C autres CHPOINTs
178 : C En plus on controlle: NBCOMP = 1
179 : C MSOUPO.NOCOMP(1) = 'SCAL'
180 : C
181 : MCHPOI = ITSEUI
182 : SEGACT MCHPOI
183 : MSOUPO = MCHPOI.IPCHP(1)
184 : SEGACT MSOUPO
185 : NBCOMP = MSOUPO.NOCOMP(/2)
186 : IF(NBCOMP .NE. 1)THEN
187 : C
188 : C******** Message d'erreur standard
189 : C -301 0 %m1:40
190 : C
191 : MOTERR = 'CHPO1 = ??? '
191 : CALL ERREUR(-301)
192 : C
193 : C******** Message d'erreur standard
194 : C 699 2
195 : C routine %m1:8 : On voulait un %m9:16 à %i1 composantes au lieu
196 : C de %i2
197 : C
198 : MOTERR(1:8) = ' QUEPOI '
199 : MOTERR(9:16) = 'CHPOINT '
200 : INTERR(1) = 1
201 : INTERR(2) = NBCOMP
201 : CALL ERREUR(699)
202 : GOTO 9999
203 : ENDIF
204 : NOMTOT(1) = MSOUPO.NOCOMP(1)
205 : IF(NOMTOT(1) .NE. 'SCAL')THEN
206 : C
207 : C******** Message d'erreur standard
208 : C -301 0 %m1:40
209 : C
210 : MOTERR = 'CHPO1 = ??? '
210 : CALL ERREUR(-301)
211 : C
212 : C******** Message d'erreur standard
213 : C 197 2
214 : C Le mot %m1:4 n'est pas un nom de composante reconnu
215 : C
216 : MOTERR(1:4) = NOMTOT(1)
216 : CALL ERREUR(197)
217 : GOTO 9999
218 : ENDIF
219 : ICEN = MSOUPO.IGEOC
220 : MELEME = ICEN
221 : SEGACT MELEME
222 : NCEN = MELEME.NUM(/2)
223 : SEGDES MELEME
224 : TSEUIL = MSOUPO.IPOVAL
225 : SEGDES MSOUPO
226 : SEGDES MCHPOI
227 : C
228 : C**** Lecture du FLOT1
229 : C
230 : ICOND = 1
230 : CALL LIRREE(A, ICOND, IRETOU)
231 : IF(IERR .NE. 0)GOTO 9999
232 : C
233 : C**** Lecture du FLOT2
234 : C
235 : ICOND = 1
235 : CALL LIRREE(B, ICOND, IRETOU)
236 : IF(IERR .NE. 0)GOTO 9999
237 : C
238 : C**** Lecture du FLOT3
239 : C
240 : ICOND = 1
240 : CALL LIRREE(C, ICOND, IRETOU)
241 : IF(IERR .NE. 0)GOTO 9999
242 : C
243 : C**** Lecture du FLOT4
244 : C
245 : ICOND = 1
245 : CALL LIRREE(TA, ICOND, IRETOU)
246 : IF(IERR .NE. 0)GOTO 9999
247 : C
248 : C**** Lecture du FLOT5
249 : C
250 : ICOND = 1
250 : CALL LIRREE(H0H2, ICOND, IRETOU)
251 : IF(IERR .NE. 0)GOTO 9999
252 : C
253 : C**** Lecture du FLOT6
254 : C
255 : ICOND = 1
255 : CALL LIRREE(H0O2, ICOND, IRETOU)
256 : IF(IERR .NE. 0)GOTO 9999
257 : C
258 : C**** Lecture du FLOT7
259 : C
260 : ICOND = 1
260 : CALL LIRREE(H0H2O, ICOND, IRETOU)
261 : IF(IERR .NE. 0)GOTO 9999
262 : C
263 : C**** Lecture du FLOT8
264 : C
265 : ICOND = 1
265 : CALL LIRREE(DT, ICOND, IRETOU)
266 : IF(IERR .NE. 0)GOTO 9999
267 : C
268 : C**** Lecture du CHPOINT CHPO2
269 : C
270 : MTYPR = 'CHPOINT'
270 : CALL LIROBJ(MTYPR,IRYH2,ICOND,IRETOU)
271 : IF(IERR .NE. 0)GOTO 9999
272 : C
273 : C**** Control du CHPOINT
274 : C
275 : INDIC = 1
276 : NBCOMP = 1
277 : NOMTOT(1) = 'H2 '
277 : CALL QUEPOI(IRYH2, ICEN, INDIC, NBCOMP, NOMTOT)
278 : IF(IERR .NE. 0)THEN
279 : IERR0 = IERR
280 :
281 : C
282 : C******** Message d'erreur standard
283 : C -301 0 %m1:40
284 : C
285 : MOTERR = 'CHPO2 = ??? '
285 : CALL ERREUR(-301)
286 :
287 : GOTO 9999
288 : ENDIF
289 : C
290 : C**** Lecture du CHPOINT CHPO3
291 : C
292 : MTYPR = 'CHPOINT'
292 : CALL LIROBJ(MTYPR,IRYO2,ICOND,IRETOU)
293 : IF(IERR .NE. 0)GOTO 9999
294 : C
295 : C**** Control du CHPOINT
296 : C
297 : INDIC = 1
298 : NBCOMP = 1
299 : NOMTOT(1) = 'O2 '
299 : CALL QUEPOI(IRYO2, ICEN, INDIC, NBCOMP, NOMTOT)
300 : IF(IERR .NE. 0)THEN
301 : IERR0 = IERR
302 :
303 : C
304 : C******** Message d'erreur standard
305 : C -301 0 %m1:40
306 : C
307 : MOTERR = 'CHPO3 = ??? '
307 : CALL ERREUR(-301)
308 :
309 : GOTO 9999
310 : ENDIF
311 : C
312 : C**** Lecture du CHPOINT CHPO4
313 : C
314 : MTYPR = 'CHPOINT'
314 : CALL LIROBJ(MTYPR,IRYH2O,ICOND,IRETOU)
315 : IF(IERR .NE. 0)GOTO 9999
316 : C
317 : C**** Control du CHPOINT
318 : C
319 : INDIC = 1
320 : NBCOMP = 1
321 : NOMTOT(1) = 'H2O '
321 : CALL QUEPOI(IRYH2O, ICEN, INDIC, NBCOMP, NOMTOT)
322 : IF(IERR .NE. 0)THEN
323 : IERR0 = IERR
324 :
325 : C
326 : C******** Message d'erreur standard
327 : C -301 0 %m1:40
328 : C
329 : MOTERR = 'CHPO4 = ??? '
329 : CALL ERREUR(-301)
330 :
331 : GOTO 9999
332 : ENDIF
333 : C
334 : C**** Lecture du CHPOINT CHPO5
335 : C
336 : MTYPR = 'CHPOINT'
336 : CALL LIROBJ(MTYPR,ITEMP,ICOND,IRETOU)
337 : IF(IERR .NE. 0)GOTO 9999
338 : C
339 : C**** Control du CHPOINT
340 : C
341 : INDIC = 1
342 : NBCOMP = 1
343 : NOMTOT(1) = 'SCAL'
343 : CALL QUEPOI(ITEMP, ICEN, INDIC, NBCOMP, NOMTOT)
344 : IF(IERR .NE. 0)THEN
345 : IERR0 = IERR
346 :
347 : C
348 : C******** Message d'erreur standard
349 : C -301 0 %m1:40
350 : C
351 : MOTERR = 'CHPO5 = ??? '
351 : CALL ERREUR(-301)
352 :
353 : GOTO 9999
354 : ENDIF
355 : C
356 : C**** On defini les CHPOINTs de sortie et on active les MPOVALs
357 : C des CHPOINTs en entre
358 : C
359 : C DE
360 : C
361 : NC = 1
362 : N = NCEN
363 : SEGINI, DE
364 : C
365 : C DE initialise a 0.0D0
366 : C N.B.: MSOUPO, MCHPOI sont relatif a ITSEUI
367 : C
368 : SEGINI, MSOUP1 = MSOUPO
369 : MSOUP1.IPOVAL = DE
370 : SEGDES MSOUP1
371 : SEGINI, MCHPO1 = MCHPOI
372 : MCHPO1.IPCHP(1) = MSOUP1
373 : MCHPO1.MOCHDE(1:40) = ' '
374 : MCHPO1.MOCHDE(41:72) = ' '
375 : SEGDES MCHPO1
376 : IDE = MCHPO1
377 : C
378 : C NRYH2
379 : C
380 : MCHPOI = IRYH2
381 : SEGACT MCHPOI
382 : MSOUPO = MCHPOI.IPCHP(1)
383 : SEGACT MSOUPO
384 : RYH2 = MSOUPO.IPOVAL
385 : SEGINI, NRYH2 = RYH2
386 : SEGINI, MSOUP1 = MSOUPO
387 : MSOUP1.IPOVAL = NRYH2
388 : SEGDES MSOUP1
389 : SEGINI, MCHPO1 = MCHPOI
390 : MCHPO1.IPCHP(1) = MSOUP1
391 : MCHPO1.MOCHDE(1:40) = ' '
392 : MCHPO1.MOCHDE(41:72) = ' '
393 : SEGDES MCHPO1
394 : INH2 = MCHPO1
395 : C
396 : C NRYO2
397 : C
398 : MCHPOI = IRYO2
399 : SEGACT MCHPOI
400 : MSOUPO = MCHPOI.IPCHP(1)
401 : SEGACT MSOUPO
402 : RYO2 = MSOUPO.IPOVAL
403 : SEGINI, NRYO2 = RYO2
404 : SEGINI, MSOUP1 = MSOUPO
405 : MSOUP1.IPOVAL = NRYO2
406 : SEGDES MSOUP1
407 : SEGINI, MCHPO1 = MCHPOI
408 : MCHPO1.IPCHP(1) = MSOUP1
409 : MCHPO1.MOCHDE(1:40) = ' '
410 : MCHPO1.MOCHDE(41:72) = ' '
411 : SEGDES MCHPO1
412 : INO2 = MCHPO1
413 : C
414 : C NRYH2O
415 : C
416 : MCHPOI = IRYH2O
417 : SEGACT MCHPOI
418 : MSOUPO = MCHPOI.IPCHP(1)
419 : SEGACT MSOUPO
420 : RYH2O = MSOUPO.IPOVAL
421 : SEGINI, NRYH2O = RYH2O
422 : SEGINI, MSOUP1 = MSOUPO
423 : MSOUP1.IPOVAL = NRYH2O
424 : SEGDES MSOUP1
425 : SEGINI, MCHPO1 = MCHPOI
426 : MCHPO1.IPCHP(1) = MSOUP1
427 : MCHPO1.MOCHDE(1:40) = ' '
428 : MCHPO1.MOCHDE(41:72) = ' '
429 : SEGDES MCHPO1
430 : INH2O = MCHPO1
431 : C
432 : C TEMP
433 : C
434 : MCHPOI = ITEMP
435 : SEGACT MCHPOI
436 : MSOUPO = MCHPOI.IPCHP(1)
437 : SEGDES MCHPOI
438 : SEGACT MSOUPO
439 : TEMP = MSOUPO.IPOVAL
440 : SEGDES MSOUPO
441 : SEGACT TEMP
442 : C
443 : SEGACT RYH2, RYO2, RYH2O, TSEUIL
444 : C
444 : CALL FLAMB1(NCEN,DT,A,B,C,TA,TSEUIL.VPOCHA,H0H2,H0O2,H0H2O,
445 : & TEMP.VPOCHA, RYH2.VPOCHA, RYO2.VPOCHA, RYH2O.VPOCHA,
446 : & DE.VPOCHA, NRYH2.VPOCHA, NRYO2.VPOCHA, NRYH2O.VPOCHA,
447 : & LOGNEG, MESERR, VALER)
448 : C
449 : IF(LOGNEG)THEN
450 : C
451 : C******* Temperature ou densite' negative
452 : C
453 : C
454 : C******* Message d'erreur standard
455 : C 41 2
456 : C %m1:8 = %r1 inférieur à %r2
457 : C
458 : MOTERR(1:8) = MESERR(1:8)
459 : REAERR(1) = REAL(VALER)
460 : REAERR(2) = 0.0
460 : CALL ERREUR(41)
461 : GOTO 9999
462 : ENDIF
463 : C
464 : SEGDES, TSEUIL, TEMP, RYH2, RYO2, RYH2O, DE, NRYH2, NRYO2, NRYH2O
465 : C
466 : C**** Ecriture du CHPOINT contenant IDE (dernier), INH2O, INO2, INH2
467 : C
467 : CALL ECROBJ('CHPOINT',IDE)
467 : CALL ECROBJ('CHPOINT',INH2O)
467 : CALL ECROBJ('CHPOINT',INO2)
467 : CALL ECROBJ('CHPOINT',INH2)
468 : C
469 : 9999 CONTINUE
470 : C
471 : RETURN
472 : END
473 :
474 :
475 :
476 :
477 :
478 :
479 :
480 :
481 :
482 :
© Cast3M 2003 - All rights reserved.
Disclaimer