Télécharger flamb.eso

Retour à la liste

Numérotation des lignes :

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

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