Télécharger flamb.eso

Retour à la liste

Numérotation des lignes :

flamb
  1. C FLAMB SOURCE OF166741 24/12/13 21:15:54 12097
  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**** Les Includes
  128.  
  129. -INC PPARAM
  130. -INC CCOPTIO
  131. -INC SMCHPOI
  132. POINTEUR TSEUIL.MPOVAL, TEMP.MPOVAL, RYH2.MPOVAL, RYO2.MPOVAL
  133. & , RYH2O.MPOVAL, NRYH2.MPOVAL, NRYO2.MPOVAL, NRYH2O.MPOVAL
  134. & , DE.MPOVAL
  135. -INC SMELEME
  136. C
  137. C**** Les variables
  138. C
  139. INTEGER ICOND, IRETOU, IERR0, ICEN, NCEN, NBCOMP, INDIC
  140. & , ITSEUI, IRYH2, IRYO2 , IRYH2O, ITEMP
  141. & , IDE, INH2, INO2, INH2O, N, NC
  142. REAL*8 A, B, C, TA, H0H2, H0O2, H0H2O, DT, VALER
  143. CHARACTER*(8) MESERR
  144. CHARACTER*(8) MTYPR
  145. CHARACTER*(LOCOMP) NOMTOT(1)
  146. LOGICAL LOGNEG
  147. C
  148. C**** Initialisation des parametres d'erreur
  149. C
  150. LOGNEG = .FALSE.
  151. MESERR = ' '
  152. VALER = 0.0D0
  153. C
  154. C**** Initialisation des NOMTOT(1) (noms des composantes)
  155. C
  156. NOMTOT(1) = ' '
  157. C
  158. C**** Lecture du CHPOINT CHPO1 (temperature de seuil)
  159. C
  160. ICOND = 1
  161. MTYPR = 'CHPOINT '
  162. CALL LIROBJ(MTYPR,ITSEUI,ICOND,IRETOU)
  163. IF(IERR .NE. 0)GOTO 9999
  164. C
  165. C**** On cherche le pointeur de son maillage et on l'impose sur les
  166. C autres CHPOINTs
  167. C En plus on controlle: NBCOMP = 1
  168. C MSOUPO.NOCOMP(1) = 'SCAL'
  169. C
  170. MCHPOI = ITSEUI
  171. SEGACT MCHPOI
  172. MSOUPO = MCHPOI.IPCHP(1)
  173. SEGACT MSOUPO
  174. NBCOMP = MSOUPO.NOCOMP(/2)
  175. IF(NBCOMP .NE. 1)THEN
  176. C
  177. C******** Message d'erreur standard
  178. C -301 0 %m1:40
  179. C
  180. MOTERR = 'CHPO1 = ??? '
  181. CALL ERREUR(-301)
  182. C
  183. C******** Message d'erreur standard
  184. C 699 2
  185. C routine %m1:8 : On voulait un %m9:16 à %i1 composantes au lieu
  186. C de %i2
  187. C
  188. MOTERR(1:8) = ' QUEPOI '
  189. MOTERR(9:16) = 'CHPOINT '
  190. INTERR(1) = 1
  191. INTERR(2) = NBCOMP
  192. CALL ERREUR(699)
  193. GOTO 9999
  194. ENDIF
  195. NOMTOT(1) = MSOUPO.NOCOMP(1)
  196. IF(NOMTOT(1) .NE. 'SCAL')THEN
  197. C
  198. C******** Message d'erreur standard
  199. C -301 0 %m1:40
  200. C
  201. MOTERR = 'CHPO1 = ??? '
  202. CALL ERREUR(-301)
  203. C
  204. C******** Message d'erreur standard
  205. C 197 2
  206. C Le mot %m1:4 n'est pas un nom de composante reconnu
  207. C
  208. MOTERR= NOMTOT(1)
  209. CALL ERREUR(197)
  210. GOTO 9999
  211. ENDIF
  212. ICEN = MSOUPO.IGEOC
  213. MELEME = ICEN
  214. SEGACT MELEME
  215. NCEN = MELEME.NUM(/2)
  216. SEGDES MELEME
  217. TSEUIL = MSOUPO.IPOVAL
  218. SEGDES MSOUPO
  219. SEGDES MCHPOI
  220. C
  221. C**** Lecture du FLOT1
  222. C
  223. ICOND = 1
  224. CALL LIRREE(A, ICOND, IRETOU)
  225. IF(IERR .NE. 0)GOTO 9999
  226. C
  227. C**** Lecture du FLOT2
  228. C
  229. ICOND = 1
  230. CALL LIRREE(B, ICOND, IRETOU)
  231. IF(IERR .NE. 0)GOTO 9999
  232. C
  233. C**** Lecture du FLOT3
  234. C
  235. ICOND = 1
  236. CALL LIRREE(C, ICOND, IRETOU)
  237. IF(IERR .NE. 0)GOTO 9999
  238. C
  239. C**** Lecture du FLOT4
  240. C
  241. ICOND = 1
  242. CALL LIRREE(TA, ICOND, IRETOU)
  243. IF(IERR .NE. 0)GOTO 9999
  244. C
  245. C**** Lecture du FLOT5
  246. C
  247. ICOND = 1
  248. CALL LIRREE(H0H2, ICOND, IRETOU)
  249. IF(IERR .NE. 0)GOTO 9999
  250. C
  251. C**** Lecture du FLOT6
  252. C
  253. ICOND = 1
  254. CALL LIRREE(H0O2, ICOND, IRETOU)
  255. IF(IERR .NE. 0)GOTO 9999
  256. C
  257. C**** Lecture du FLOT7
  258. C
  259. 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
  266. CALL LIRREE(DT, ICOND, IRETOU)
  267. IF(IERR .NE. 0)GOTO 9999
  268. C
  269. C**** Lecture du CHPOINT CHPO2
  270. C
  271. MTYPR = 'CHPOINT'
  272. CALL LIROBJ(MTYPR,IRYH2,ICOND,IRETOU)
  273. IF(IERR .NE. 0)GOTO 9999
  274. C
  275. C**** Control du CHPOINT
  276. C
  277. INDIC = 1
  278. NBCOMP = 1
  279. NOMTOT(1) = 'H2 '
  280. CALL QUEPOI(IRYH2, ICEN, INDIC, NBCOMP, NOMTOT)
  281. IF(IERR .NE. 0)THEN
  282. IERR0 = IERR
  283.  
  284. C
  285. C******** Message d'erreur standard
  286. C -301 0 %m1:40
  287. C
  288. MOTERR = 'CHPO2 = ??? '
  289. CALL ERREUR(-301)
  290.  
  291. GOTO 9999
  292. ENDIF
  293. C
  294. C**** Lecture du CHPOINT CHPO3
  295. C
  296. MTYPR = 'CHPOINT'
  297. CALL LIROBJ(MTYPR,IRYO2,ICOND,IRETOU)
  298. IF(IERR .NE. 0)GOTO 9999
  299. C
  300. C**** Control du CHPOINT
  301. C
  302. INDIC = 1
  303. NBCOMP = 1
  304. NOMTOT(1) = 'O2 '
  305. CALL QUEPOI(IRYO2, ICEN, INDIC, NBCOMP, NOMTOT)
  306. IF(IERR .NE. 0)THEN
  307. IERR0 = IERR
  308.  
  309. C
  310. C******** Message d'erreur standard
  311. C -301 0 %m1:40
  312. C
  313. MOTERR = 'CHPO3 = ??? '
  314. CALL ERREUR(-301)
  315.  
  316. GOTO 9999
  317. ENDIF
  318. C
  319. C**** Lecture du CHPOINT CHPO4
  320. C
  321. MTYPR = 'CHPOINT'
  322. CALL LIROBJ(MTYPR,IRYH2O,ICOND,IRETOU)
  323. IF(IERR .NE. 0)GOTO 9999
  324. C
  325. C**** Control du CHPOINT
  326. C
  327. INDIC = 1
  328. NBCOMP = 1
  329. NOMTOT(1) = 'H2O '
  330. CALL QUEPOI(IRYH2O, ICEN, INDIC, NBCOMP, NOMTOT)
  331. IF(IERR .NE. 0)THEN
  332. IERR0 = IERR
  333.  
  334. C
  335. C******** Message d'erreur standard
  336. C -301 0 %m1:40
  337. C
  338. MOTERR = 'CHPO4 = ??? '
  339. CALL ERREUR(-301)
  340.  
  341. GOTO 9999
  342. ENDIF
  343. C
  344. C**** Lecture du CHPOINT CHPO5
  345. C
  346. MTYPR = 'CHPOINT'
  347. CALL LIROBJ(MTYPR,ITEMP,ICOND,IRETOU)
  348. IF(IERR .NE. 0)GOTO 9999
  349. C
  350. C**** Control du CHPOINT
  351. C
  352. INDIC = 1
  353. NBCOMP = 1
  354. NOMTOT(1) = 'SCAL'
  355. CALL QUEPOI(ITEMP, ICEN, INDIC, NBCOMP, NOMTOT)
  356. IF(IERR .NE. 0)THEN
  357. IERR0 = IERR
  358.  
  359. C
  360. C******** Message d'erreur standard
  361. C -301 0 %m1:40
  362. C
  363. MOTERR = 'CHPO5 = ??? '
  364. CALL ERREUR(-301)
  365.  
  366. GOTO 9999
  367. ENDIF
  368. C
  369. C**** On defini les CHPOINTs de sortie et on active les MPOVALs
  370. C des CHPOINTs en entre
  371. C
  372. C DE
  373. C
  374. NC = 1
  375. N = NCEN
  376. SEGINI, DE
  377. C
  378. C DE initialise a 0.0D0
  379. C N.B.: MSOUPO, MCHPOI sont relatif a ITSEUI
  380. C
  381. SEGINI, MSOUP1 = MSOUPO
  382. MSOUP1.IPOVAL = DE
  383. SEGDES MSOUP1
  384. SEGINI, MCHPO1 = MCHPOI
  385. MCHPO1.IPCHP(1) = MSOUP1
  386. MCHPO1.MOCHDE(1:40) = ' '
  387. MCHPO1.MOCHDE(41:72) = ' '
  388. SEGDES MCHPO1
  389. IDE = MCHPO1
  390. C
  391. C NRYH2
  392. C
  393. MCHPOI = IRYH2
  394. SEGACT MCHPOI
  395. MSOUPO = MCHPOI.IPCHP(1)
  396. SEGACT MSOUPO
  397. RYH2 = MSOUPO.IPOVAL
  398. SEGINI, NRYH2 = RYH2
  399. SEGINI, MSOUP1 = MSOUPO
  400. MSOUP1.IPOVAL = NRYH2
  401. SEGDES MSOUP1
  402. SEGINI, MCHPO1 = MCHPOI
  403. MCHPO1.IPCHP(1) = MSOUP1
  404. MCHPO1.MOCHDE(1:40) = ' '
  405. MCHPO1.MOCHDE(41:72) = ' '
  406. SEGDES MCHPO1
  407. INH2 = MCHPO1
  408. C
  409. C NRYO2
  410. C
  411. MCHPOI = IRYO2
  412. SEGACT MCHPOI
  413. MSOUPO = MCHPOI.IPCHP(1)
  414. SEGACT MSOUPO
  415. RYO2 = MSOUPO.IPOVAL
  416. SEGINI, NRYO2 = RYO2
  417. SEGINI, MSOUP1 = MSOUPO
  418. MSOUP1.IPOVAL = NRYO2
  419. SEGDES MSOUP1
  420. SEGINI, MCHPO1 = MCHPOI
  421. MCHPO1.IPCHP(1) = MSOUP1
  422. MCHPO1.MOCHDE(1:40) = ' '
  423. MCHPO1.MOCHDE(41:72) = ' '
  424. SEGDES MCHPO1
  425. INO2 = MCHPO1
  426. C
  427. C NRYH2O
  428. C
  429. MCHPOI = IRYH2O
  430. SEGACT MCHPOI
  431. MSOUPO = MCHPOI.IPCHP(1)
  432. SEGACT MSOUPO
  433. RYH2O = MSOUPO.IPOVAL
  434. SEGINI, NRYH2O = RYH2O
  435. SEGINI, MSOUP1 = MSOUPO
  436. MSOUP1.IPOVAL = NRYH2O
  437. SEGDES MSOUP1
  438. SEGINI, MCHPO1 = MCHPOI
  439. MCHPO1.IPCHP(1) = MSOUP1
  440. MCHPO1.MOCHDE(1:40) = ' '
  441. MCHPO1.MOCHDE(41:72) = ' '
  442. SEGDES MCHPO1
  443. INH2O = MCHPO1
  444. C
  445. C TEMP
  446. C
  447. MCHPOI = ITEMP
  448. SEGACT MCHPOI
  449. MSOUPO = MCHPOI.IPCHP(1)
  450. SEGDES MCHPOI
  451. SEGACT MSOUPO
  452. TEMP = MSOUPO.IPOVAL
  453. SEGDES MSOUPO
  454. SEGACT TEMP
  455. C
  456. SEGACT RYH2, RYO2, RYH2O, TSEUIL
  457. C
  458. CALL FLAMB1(NCEN,DT,A,B,C,TA,TSEUIL.VPOCHA,H0H2,H0O2,H0H2O,
  459. & TEMP.VPOCHA, RYH2.VPOCHA, RYO2.VPOCHA, RYH2O.VPOCHA,
  460. & DE.VPOCHA, NRYH2.VPOCHA, NRYO2.VPOCHA, NRYH2O.VPOCHA,
  461. & LOGNEG, MESERR, VALER)
  462. C
  463. IF(LOGNEG)THEN
  464. C
  465. C******* Temperature ou densite' negative
  466. C
  467. C
  468. C******* Message d'erreur standard
  469. C 41 2
  470. C %m1:8 = %r1 inférieur à %r2
  471. C
  472. MOTERR(1:8) = MESERR(1:8)
  473. REAERR(1) = REAL(VALER)
  474. REAERR(2) = 0.0
  475. CALL ERREUR(41)
  476. GOTO 9999
  477. ENDIF
  478. C
  479. SEGDES, TSEUIL, TEMP, RYH2, RYO2, RYH2O, DE, NRYH2, NRYO2, NRYH2O
  480. C
  481. C**** Ecriture du CHPOINT contenant IDE (dernier), INH2O, INO2, INH2
  482. C
  483. CALL ECROBJ('CHPOINT',IDE)
  484. CALL ECROBJ('CHPOINT',INH2O)
  485. CALL ECROBJ('CHPOINT',INO2)
  486. CALL ECROBJ('CHPOINT',INH2)
  487. C
  488. 9999 CONTINUE
  489. C
  490. RETURN
  491. END
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  

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