Télécharger flama.eso

Retour à la liste

Numérotation des lignes :

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

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