Télécharger flamb.eso

Retour à la liste

Numérotation des lignes :

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

© Cast3M 2003 - Tous droits réservés.
Mentions légales