Télécharger flacr2.eso

Retour à la liste

Numérotation des lignes :

flacr2
  1. C FLACR2 SOURCE OF166741 24/12/13 21:15:51 12097
  2. SUBROUTINE FLACR2()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : FLACR2
  8. C
  9. C DESCRIPTION : CREBCOM: modele non-homogene
  10. C
  11. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  12. C
  13. C AUTEUR : A. BECCANTINI, DM2S/SFME/LTMF
  14. C
  15. C************************************************************************
  16. C
  17. C
  18. C************************************************************************
  19. C
  20. C HISTORIQUE (Anomalies et modifications éventuelles)
  21. C
  22. C HISTORIQUE :
  23. C
  24. C
  25. C************************************************************************
  26. C
  27. IMPLICIT INTEGER(I-N)
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC SMLMOTS
  32. POINTEUR MLMESP.MLMOTS
  33. -INC SMLREEL
  34. POINTEUR MLRECO.MLREEL, MLRMAS.MLREEL, MLRH0K.MLREEL
  35. C
  36. INTEGER JGN, JGM, JG
  37. C
  38. C**** Les variables
  39. C
  40. INTEGER IDOMA,IRET,MELEMC,MELEFE,IPGAS,IESP,NESP,NESP1
  41. & ,IRC,IYC,IYINIT,IYFINA,IVCAR,ICHRET,ICHRYN,IERR0,I1
  42. & ,IDX,MMODEL
  43.  
  44. REAL*8 RGAS, EPS1, DELTAT, EPSCSI
  45. PARAMETER(RGAS=8.31441D0)
  46. CHARACTER*8 TYPE
  47. CHARACTER*4 MOT1(1)
  48. C
  49. C**** Variables en ACCTAB
  50. C
  51. INTEGER IVALI, IRETI,IVALR, IRETR
  52. REAL*8 XVALI, XVALR
  53. LOGICAL LOGII, LOGIR
  54. CHARACTER*(8) CHARR,MTYPI,MTYPR
  55. C
  56. C**** Lecture de l'objet MODELE
  57. C
  58. ICOND = 1
  59. CALL QUETYP(TYPE,ICOND,IRET)
  60.  
  61. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  62. WRITE(6,*)' On attend un objet MMODEL'
  63. RETURN
  64. ENDIF
  65. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  66. IF(IERR.NE.0)GOTO 9999
  67. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  68. IF(IERR.NE.0)GOTO 9999
  69. C
  70. C**** CENTRE, et FACEL
  71. C
  72. CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  73. IF(IERR .NE. 0) GOTO 9999
  74. C
  75. CALL LEKTAB(IDOMA,'FACEL',MELEFE)
  76. IF(IERR .NE. 0) GOTO 9999
  77. C
  78. C**** La reaction chimique
  79. C Noms des especes qui interviennent
  80. C
  81. TYPE='LISTMOTS'
  82. CALL LIROBJ(TYPE,MLMESP,1,IRET)
  83. IF(IERR .NE. 0)GOTO 9999
  84. SEGACT MLMESP
  85. NESP=MLMESP.MOTS(/2)
  86. C
  87. C**** Les coeff. stoich.
  88. C Ils sont positifs pour les reactants
  89. C negatives pour les produits
  90. C
  91. TYPE='LISTREEL'
  92. CALL LIROBJ(TYPE,MLRECO,1,IRET)
  93. IF(IERR .NE. 0)GOTO 9999
  94. SEGACT MLRECO
  95. NESP1=MLRECO.PROG(/1)
  96. IF(NESP1 .NE. NESP)THEN
  97. MOTERR(1:40)='LMOT1 = ??? '
  98. WRITE(IOIMP,*) MOTERR
  99. MOTERR(1:40)='LREE1 = ??? '
  100. WRITE(IOIMP,*) MOTERR
  101. CALL ERREUR(21)
  102. GOTO 9999
  103. ENDIF
  104. C
  105. C**** La LISTREEL des poids molaires MLRMAS
  106. C des énergies de formation à 0K
  107. C MLRH0K
  108. C
  109. JG=NESP
  110. SEGINI MLRMAS
  111. SEGINI MLRH0K
  112. C
  113. C************************************************
  114. C**** La table des proprietés des gaz ***********
  115. C************************************************
  116. C
  117. TYPE='TABLE '
  118. CALL LIROBJ(TYPE,IPGAS,1,IRET)
  119. IF(IERR .NE. 0)GOTO 9999
  120. DO I1 = 1, NESP, 1
  121. MOT1(1) = MLMESP.MOTS(I1)
  122. C
  123. C******* CALL ACMF(...) ne marche pas parce que on a
  124. C des blanches dans nos composantes
  125. C
  126. MTYPI = 'MOT '
  127. MTYPR = ' '
  128. CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,MOT1(1), LOGII,IRETI,
  129. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  130. C
  131. C******* En IESP a la table IPGAS.MOT1(1)
  132. C
  133. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  134.  
  135. C
  136. C********** Message d'erreur standard
  137. C -301 0 %m1:40
  138. C
  139. MOTERR = ' '
  140. MOTERR(1:7) = 'TAB2 . '
  141. MOTERR(8:11) = MOT1(1)
  142. MOTERR(13:17) = '= ???'
  143. WRITE(IOIMP,*) MOTERR(1:40)
  144. C
  145. C********** Message d'erreur standard
  146. C 21 2
  147. C Données incompatibles
  148. C
  149. CALL ERREUR(21)
  150. GOTO 9999
  151. ENDIF
  152. C
  153. C******* R
  154. C
  155. MTYPI = 'MOT '
  156. MTYPR = ' '
  157. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'R' , LOGII,IRETI,
  158. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  159. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  160.  
  161. C
  162. C********** Message d'erreur standard
  163. C -301 0 %m1:40
  164. C
  165. MOTERR = ' '
  166. MOTERR(1:7) = 'TAB2 . '
  167. MOTERR(8:11) = MOT1(1)
  168. MOTERR(13:23) = ' . R = ??? '
  169. WRITE(IOIMP,*) MOTERR(1:40)
  170. C
  171. C********** Message d'erreur standard
  172. C 21 2
  173. C Données incompatibles
  174. C
  175. CALL ERREUR(21)
  176. GOTO 9999
  177. ENDIF
  178. MLRMAS.PROG(I1)=RGAS/XVALR
  179. C
  180. C******* H0K
  181. C
  182. MTYPI = 'MOT '
  183. MTYPR = ' '
  184. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  185. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  186. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  187.  
  188. C
  189. C********** Message d'erreur standard
  190. C -301 0 %m1:40
  191. C
  192. MOTERR = ' '
  193. MOTERR(1:7) = 'TAB2 . '
  194. MOTERR(8:11) = MOT1(1)
  195. MOTERR(13:25) = ' . H0K = ??? '
  196. WRITE(IOIMP,*) MOTERR(1:40)
  197. C
  198. C********** Message d'erreur standard
  199. C 21 2
  200. C Données incompatibles
  201. C
  202. CALL ERREUR(21)
  203. GOTO 9999
  204. ENDIF
  205. MLRH0K.PROG(I1)=XVALR
  206. ENDDO
  207. C
  208. C**** Les CHPOINT densité
  209. C
  210. CALL LIROBJ('CHPOINT',IRC,1,IRET)
  211. IF (IERR.NE.0) GOTO 9999
  212. C
  213. C**** Control du CHPOINT
  214. C IRC ordonné selon MLECEN
  215. C
  216. JGN=4
  217. JGM=1
  218. SEGINI MLMOT1
  219. MLMOT1.MOTS(1)='SCAL'
  220. CALL QUEPO1(IRC, MELEMC, MLMOT1)
  221. SEGSUP MLMOT1
  222. IF(IERR .NE. 0)THEN
  223. IERR0 = IERR
  224.  
  225. C
  226. C******* Message d'erreur standard
  227. C -301 0 %m1:40
  228. C
  229. MOTERR(1:40) = 'CHPO1 = ??? '
  230. WRITE(IOIMP,*) MOTERR
  231.  
  232. GOTO 9999
  233. ENDIF
  234. C
  235. C**** Les CHPOINTs des fractions massiques des especes
  236. C
  237. CALL LIROBJ('CHPOINT',IYC,1,IRET)
  238. IF (IERR.NE.0) GOTO 9999
  239. C
  240. C**** Control du CHPOINT
  241. C IYC ordonné selon MELEMC et MLMESP
  242. C
  243. CALL QUEPO1(IYC, MELEMC, MLMESP)
  244. C Attention: MLMESP desactivé en sortie de QUEPO1
  245. IF(IERR .NE. 0)THEN
  246. IERR0 = IERR
  247.  
  248. C
  249. C******* Message d'erreur standard
  250. C -301 0 %m1:40
  251. C
  252. MOTERR(1:40) = 'CHPO2 = ??? '
  253. WRITE(IOIMP,*) MOTERR
  254.  
  255. GOTO 9999
  256. ENDIF
  257. C
  258. C**** Les CHPOINTs des fractions massiques initiale et finale de
  259. C l'espece en MLMESP.MOTS(1)
  260. C
  261. CALL LIROBJ('CHPOINT',IYINIT,1,IRET)
  262. IF (IERR.NE.0) GOTO 9999
  263. C
  264. C**** Control du CHPOINT
  265. C
  266. SEGACT MLMESP
  267. JGN=4
  268. JGM=1
  269. SEGINI MLMOT1
  270. MLMOT1.MOTS(1)=MLMESP.MOTS(1)
  271. CALL QUEPO1(IYINIT, MELEMC, MLMOT1)
  272. IF(IERR .NE. 0)THEN
  273. IERR0 = IERR
  274.  
  275. C
  276. C******* Message d'erreur standard
  277. C -301 0 %m1:40
  278. C
  279. MOTERR(1:40) = 'CHPO3 = ??? '
  280. WRITE(IOIMP,*) MOTERR
  281.  
  282. GOTO 9999
  283. ENDIF
  284. C
  285. CALL LIROBJ('CHPOINT',IYFINA,1,IRET)
  286. IF (IERR.NE.0) GOTO 9999
  287. C
  288. C**** Control du CHPOINT
  289. C
  290. CALL QUEPO1(IYFINA, MELEMC, MLMOT1)
  291. SEGSUP MLMOT1
  292. IF(IERR .NE. 0)THEN
  293. IERR0 = IERR
  294.  
  295. C
  296. C******* Message d'erreur standard
  297. C -301 0 %m1:40
  298. C
  299. MOTERR(1:40) = 'CHPO4 = ??? '
  300. WRITE(IOIMP,*) MOTERR
  301.  
  302. GOTO 9999
  303. ENDIF
  304. C
  305. C**** Le CHPOINT de la vitesse caractéristique
  306. C
  307. CALL LIROBJ('CHPOINT',IVCAR,1,IRET)
  308. IF (IERR.NE.0) GOTO 9999
  309. C
  310. C**** Control du CHPOINT
  311. C
  312. JGN=4
  313. JGM=1
  314. SEGINI MLMOT1
  315. MLMOT1.MOTS(1)='SCAL'
  316. CALL QUEPO1(IVCAR, MELEMC, MLMOT1)
  317. SEGSUP MLMOT1
  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(1:40) = 'CHPO5 = ??? '
  326. WRITE(IOIMP,*) MOTERR
  327.  
  328. GOTO 9999
  329. ENDIF
  330. C
  331. C**** Le CHPOINT de la dimension de la maille
  332. C
  333. CALL LIROBJ('CHPOINT',IDX,1,IRET)
  334. IF (IERR.NE.0) GOTO 9999
  335. C
  336. C**** Control du CHPOINT
  337. C
  338. JGN=4
  339. JGM=1
  340. SEGINI MLMOT1
  341. MLMOT1.MOTS(1)='SCAL'
  342. CALL QUEPO1(IDX, MELEMC, MLMOT1)
  343. SEGSUP MLMOT1
  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(1:40) = 'CHPO6 = ??? '
  352. WRITE(IOIMP,*) MOTERR
  353.  
  354. GOTO 9999
  355. ENDIF
  356. C
  357. C**** EPS1
  358. C Critere original du model CREBCOM
  359. C
  360. CALL LIRREE(EPS1,1,IRET)
  361. IF(IERR.NE.0) GOTO 9999
  362. C
  363. C**** DELTAT
  364. C
  365. CALL LIRREE(DELTAT,1,IRET)
  366. IF(IERR.NE.0) GOTO 9999
  367. C
  368. C**** EPSCSI
  369. C Critere original du model CREBCOM
  370. C
  371. CALL LIRREE(EPSCSI,1,IRET)
  372. IF(IERR.NE.0) GOTO 9999
  373. C
  374. C**** Creation d'un CHPOINT contenat l'increment d'energie
  375. C
  376. JGN=4
  377. JGM=1
  378. SEGINI MLMOT1
  379. MLMOT1.MOTS(1)='SCAL'
  380. TYPE = ' '
  381. CALL KRCHP1(TYPE, MELEMC, ICHRET, MLMOT1)
  382. SEGSUP MLMOT1
  383. IF(IERR.NE.0) GOTO 9999
  384. C
  385. C**** Creation d'un CHPOINT contenant la variation des densité massiques
  386. C
  387. TYPE = ' '
  388. CALL KRCHP1(TYPE, MELEMC, ICHRYN, MLMESP)
  389. IF(IERR.NE.0) GOTO 9999
  390. SEGDES MLMESP
  391. C
  392. C**** Calcul
  393. C
  394. CALL FLACR3(EPSCSI,EPS1,DELTAT,MELEMC,MELEFE,IRC,IYC,IYINIT,IYFINA
  395. $ ,IVCAR,IDX,MLRMAS,MLRH0K,MLRECO,ICHRET,ICHRYN)
  396. IF(IERR.NE.0)GOTO 9999
  397. C
  398. SEGDES MLMESP
  399. SEGDES MLRECO
  400. SEGDES MLRECO
  401. SEGSUP MLRH0K
  402. SEGSUP MLRMAS
  403. C
  404. C**** Ecriture du resultat
  405. C
  406. CALL ECROBJ('CHPOINT ',ICHRYN)
  407. IF(IERR.NE.0)GOTO 9999
  408. CALL ECROBJ('CHPOINT ',ICHRET)
  409. IF(IERR.NE.0)GOTO 9999
  410. C
  411. 9999 RETURN
  412. END
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  

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