Télécharger flacr3.eso

Retour à la liste

Numérotation des lignes :

  1. C FLACR3 SOURCE BECC 05/06/09 21:15:07 5106
  2. SUBROUTINE FLACR3(EPSCSI,EPSI,DELTAT,MCEN,MFACEL,IRC,IYC,IYINIT,
  3. & IYFINA,IVCAR,IDX,MLRMAS,MLRH0K,MLRECO,ICHRET,ICHRY)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : FLACR3
  9. C
  10. C DESCRIPTION : CREBCOM: modele non-homogene
  11. C voir FLACR2
  12. C
  13. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  14. C
  15. C AUTEUR : A. BECCANTINI, DM2S/SFME/LTMF
  16. C
  17. C************************************************************************
  18. C
  19. C INPUTS
  20. C
  21. C EPSCSI : (REAL*8), parametre pour controler si CSI=DY/(YF - YI)
  22. C \in(0,1). Si CSI<EPSCSI ou CSI>1+EPSCSI un message de
  23. C warnin est donné.
  24. C
  25. C EPSI : parametre du critère CREBCOM (REAL*8)
  26. C
  27. C DELTAT : pas de temps (REAL*8)
  28. C
  29. C MCEN : pointeur du MELEME contenant les centres des ELTs
  30. C
  31. C MFACEL : pointeur du MELEME contenant la correspondence
  32. C CENTRE-FACE-CENTRE
  33. C
  34. C IRC : pointeur du CHPOINT contenant la masse volumique.
  35. C
  36. C IYC : pointeur du CHPOINT contenant les fractions massiques
  37. C
  38. C IYINIT : pointeur du CHPOINT contenant la fraction massique initiale
  39. C de la premiere composante de IYC;
  40. C
  41. C IYFINA : pointeur du CHPOINT contenant la fraction massique finale de
  42. C la premiere composante de IYC ;
  43. C
  44. C IVCAR : pointeur du CHPOINT contenant la vitesse caractéristique de
  45. C la flamme
  46. C
  47. C IDX : pointeur du CHPOINT contenant la diemnsion de la maille
  48. C
  49. C MLRMAS : pointeur du LISTREEL contenant les masses molaires
  50. C
  51. C MLRH0K : pointeur du LISTREEL contenant les energies des formation à
  52. C 0K
  53. C
  54. C MLRCOE : pointeur du LISTREEL contenant les coeff. stoch. de la
  55. C reaction chimique
  56. C
  57. C OUTPUTS :
  58. C
  59. C ICHRET : pointeur de l'increment de l'energie totale par unité de
  60. C volume
  61. C
  62. C ICHRY : pointeur de l'increment des densités massiques
  63. C
  64. C************************************************************************
  65. C
  66. C HISTORIQUE (Anomalies et modifications éventuelles)
  67. C
  68. C HISTORIQUE :
  69. C
  70. C
  71. C************************************************************************
  72. C
  73. IMPLICIT INTEGER(I-N)
  74. -INC CCOPTIO
  75. -INC SMLREEL
  76. POINTEUR MLRECO.MLREEL, MLRMAS.MLREEL, MLRH0K.MLREEL
  77. -INC SMELEME
  78. POINTEUR MELCEN.MELEME, MELEFL.MELEME
  79. -INC SMCHPOI
  80. INTEGER N, NC
  81. POINTEUR MPOVRO.MPOVAL, MPOVAY.MPOVAL,MPOVYI.MPOVAL,
  82. & MPOVYF.MPOVAL, MPOVC.MPOVAL, MPODRE.MPOVAL, MPODRY.MPOVAL,
  83. & MPOCSI.MPOVAL,MPOCRI.MPOVAL,MPOVDX.MPOVAL
  84. -INC SMLENTI
  85. POINTEUR MLECEN.MLENTI
  86. C
  87. C
  88. C**** Variables de COOPTIO
  89. C
  90. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  91. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  92. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  93. C & ,IECHO, IIMPI, IOSPI
  94. C & ,IDIM
  95. C & ,MCOORD
  96. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  97. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  98. C & ,NORINC,NORVAL,NORIND,NORVAD
  99. C & ,NUCROU, IPSAUV, IFICLE, IPREFI
  100. C
  101. C**** Les variables
  102. C
  103. INTEGER MCEN,MFACEL,IRC,IYC,IYINIT,IYFINA,IVCAR,ICHRET,ICHRY
  104. $ ,IGEOM,ICEN,NCEN,NFAC,NLCF,NGCEG,NGCED,NLCEG,NLCED
  105. & ,IESP,NESP,IDX
  106. REAL*8 EPSI, DELTAT, Y1F, Y1I, Y1, VCSIG, VCSID, VCSI2G, VCSI2D
  107. & ,EPS12, DY, DYMAX, DCSI, DCSI1, DY1, RHO, DY2, YMAX, DYMAX1
  108. & ,ERRTOL, EPSCSI, CSIG
  109. CHARACTER*8 TYPE
  110. PARAMETER(ERRTOL=1.0D-6)
  111. C
  112. NESP=MLRH0K.PROG(/1)
  113. MELCEN=MCEN
  114. MELEFL=MFACEL
  115. C
  116. C**** KRIPAD pour la correspondance global/local de centre
  117. C
  118. CALL KRIPAD(MELCEN,MLECEN)
  119. IF(IERR .NE. 0)GOTO 9999
  120. C SEGINI MLECEN
  121. SEGACT MELCEN
  122. NCEN=MELCEN.NUM(/2)
  123. SEGACT MELEFL
  124. NFAC=MELEFL.NUM(/2)
  125. C
  126. C**** Lectures de CHPOINT
  127. C
  128. CALL LICHT(IRC,MPOVRO,TYPE,IGEOM)
  129. C SEGACT MPOVRO*MOD
  130. CALL LICHT(IYC,MPOVAY,TYPE,IGEOM)
  131. C SEGACT MPOVAY*MOD
  132. CALL LICHT(IYINIT,MPOVYI,TYPE,IGEOM)
  133. C SEGACT MPOVYI*MOD
  134. CALL LICHT(IYFINA,MPOVYF,TYPE,IGEOM)
  135. C SEGACT MPOVYF*MOD
  136. CALL LICHT(IVCAR,MPOVC,TYPE,IGEOM)
  137. C SEGACT MPOVYF*MOD
  138. CALL LICHT(IDX,MPOVDX,TYPE,IGEOM)
  139. C SEGACT MPOVDX*MOD
  140. CALL LICHT(ICHRET,MPODRE,TYPE,IGEOM)
  141. C SEGACT MPODRE*MOD
  142. CALL LICHT(ICHRY,MPODRY,TYPE,IGEOM)
  143. C SEGACT MPODRY*MOD
  144. C
  145. C**** Creation du MPOVAL qui contient csi
  146. C Creation du MPOVAL du critere
  147. C
  148. N=NCEN
  149. NC=1
  150. SEGINI MPOCSI
  151. SEGINI MPOCRI
  152. C
  153. C**** Calcul de DYMAX pour la premiere espece
  154. C Controle de la densité positive
  155. C Controle des fractions massiques (Yi>0, sum_i Y_i < 1)
  156. C
  157. DYMAX = 0.0D0
  158. YMAX=0.0D0
  159. DO ICEN=1,NCEN,1
  160. Y1F = MPOVYF.VPOCHA(ICEN,1)
  161. Y1I = MPOVYI.VPOCHA(ICEN,1)
  162. DY = Y1F - Y1I
  163. DYMAX=MAX(ABS(DY),DYMAX)
  164. Y1=MPOVAY.VPOCHA(ICEN,1)
  165. IF(Y1 .LT. 0.0D0)THEN
  166. WRITE(IOIMP,*) 'CHPO2 < 0 ???'
  167. CALL ERREUR(21)
  168. GOTO 9999
  169. ELSE
  170. YMAX=Y1
  171. ENDIF
  172. RHO=MPOVRO.VPOCHA(ICEN,1)
  173. IF(RHO .LT. 0)THEN
  174. WRITE(IOIMP,*) 'CHPO1 < 0 ???'
  175. CALL ERREUR(21)
  176. GOTO 9999
  177. ENDIF
  178. RHO=MPOVYI.VPOCHA(ICEN,1)
  179. IF((RHO .LT. 0) .OR. (RHO .GT. 1))THEN
  180. WRITE(IOIMP,*) 'CHPO3 < 0 ou CHPO3 > 1???'
  181. CALL ERREUR(21)
  182. GOTO 9999
  183. ENDIF
  184. RHO=MPOVYF.VPOCHA(ICEN,1)
  185. IF((RHO .LT. 0.0D0) .OR. (RHO .GT. 1.0D0))THEN
  186. WRITE(IOIMP,*) 'CHPO4 < 0 ou CHPO4 > 1???'
  187. CALL ERREUR(21)
  188. GOTO 9999
  189. ENDIF
  190. RHO=MPOVC.VPOCHA(ICEN,1)
  191. IF((RHO .LT. 0))THEN
  192. WRITE(IOIMP,*) 'CHPO5 < 0'
  193. CALL ERREUR(21)
  194. GOTO 9999
  195. ENDIF
  196. DO IESP=2,NESP,1
  197. Y1=MPOVAY.VPOCHA(ICEN,IESP)
  198. IF(Y1 .LT. 0.0D0)THEN
  199. WRITE(IOIMP,*) 'CHPO2 < 0 ???'
  200. CALL ERREUR(21)
  201. GOTO 9999
  202. ELSE
  203. YMAX=YMAX+Y1
  204. ENDIF
  205. ENDDO
  206. IF(YMAX .GT. 1.0D0)THEN
  207. WRITE(IOIMP,*) 'sum CHPO2 > 1 ???'
  208. CALL ERREUR(21)
  209. GOTO 9999
  210. ENDIF
  211. ENDDO
  212. C
  213. C**** Calcul de CSI \in (0,1)
  214. C
  215. DO ICEN=1,NCEN,1
  216. Y1F = MPOVYF.VPOCHA(ICEN,1)
  217. Y1I = MPOVYI.VPOCHA(ICEN,1)
  218. DY = Y1F - Y1I
  219. IF(ABS(DY) .LE. (ERRTOL*DYMAX))THEN
  220. C
  221. C********** Pas de combustion en cette region
  222. C
  223. MPOCSI.VPOCHA(ICEN,1)=0.0D0
  224. C
  225. ELSE
  226. Y1 = MPOVAY.VPOCHA(ICEN,1)
  227. VCSIG = (Y1 - Y1I) / DY
  228. C
  229. C********** On n'accepte pas csi > 1.1 or csi < -0.1
  230. C
  231. IF((VCSIG .GT. (1.0D0+EPSCSI)) .OR.
  232. & (VCSIG .LT. (-1*EPSCSI)))THEN
  233. WRITE(IOIMP,*) 'Progress variable = ???'
  234. C 21 2
  235. C Données incompatibles
  236. CALL ERREUR(21)
  237. GOTO 9999
  238. ELSEIF(VCSIG .GT. 1.0D0)THEN
  239. VCSIG = 1.0D0
  240. ELSEIF(VCSIG .LT. 0.0D0)THEN
  241. VCSIG = 0.0D0
  242. ENDIF
  243. MPOCSI.VPOCHA(ICEN,1)= VCSIG
  244. ENDIF
  245. ENDDO
  246. C
  247. C**** Le critere CREBCOM
  248. C
  249. DO NLCF = 1, NFAC, 1
  250. C
  251. C******* NLCF = numero local du centre de facel
  252. C NGCEG = numero global du centre ELT "gauche"
  253. C NLCEG = numero local du centre ELT "gauche"
  254. C NGCED = numero global du centre ELT "droite"
  255. C NLCED = numero local du centre ELT "droite"
  256. C
  257. NGCEG = MELEFL.NUM(1,NLCF)
  258. NGCED = MELEFL.NUM(3,NLCF)
  259. NLCEG = MLECEN.LECT(NGCEG)
  260. NLCED = MLECEN.LECT(NGCED)
  261. C
  262. VCSIG=MPOCSI.VPOCHA(NLCEG,1)
  263. VCSID=MPOCSI.VPOCHA(NLCED,1)
  264. VCSI2G=VCSIG*VCSIG
  265. VCSI2D=VCSID*VCSID
  266. C
  267. IF(NLCEG .EQ. NLCED)THEN
  268. C
  269. C********** Murs
  270. C
  271. MPOCRI.VPOCHA(NLCEG,1)=MPOCRI.VPOCHA(NLCEG,1) + (0.5D0 *
  272. & VCSI2D)
  273. C
  274. ELSE
  275. C
  276. MPOCRI.VPOCHA(NLCEG,1)=MPOCRI.VPOCHA(NLCEG,1) +
  277. & (VCSI2D - (0.5D0 * VCSI2G))
  278. MPOCRI.VPOCHA(NLCED,1)=MPOCRI.VPOCHA(NLCED,1) +
  279. & (VCSI2G - (0.5D0 * VCSI2D))
  280. C
  281. ENDIF
  282. ENDDO
  283. C
  284. C**** Calcul des increments de l'energie et des densités
  285. C
  286. EPS12 = EPSI * EPSI
  287. DO ICEN = 1, NCEN, 1
  288. CSIG = MPOCSI.VPOCHA(ICEN,1)
  289. VCSIG = MPOCRI.VPOCHA(ICEN,1)
  290. C
  291. C******* In 2D, contribution of the ideal upper and lower cells
  292. C
  293. IF(IDIM .EQ. 2) VCSIG = VCSIG + (CSIG * CSIG)
  294. IF(VCSIG .GE. (EPS12*(1.0D0+ERRTOL)))THEN
  295. C
  296. C********** Il y a combustion
  297. C
  298. DCSI=MPOVC.VPOCHA(ICEN,1)*DELTAT/MPOVDX.VPOCHA(ICEN,1)
  299. DCSI1=1.0D0-CSIG
  300. DCSI=MIN(DCSI,DCSI1)
  301. DY1=(MPOVYF.VPOCHA(ICEN,1)-MPOVYI.VPOCHA(ICEN,1))*DCSI
  302. C
  303. C********** On force la positivité de MPOVAY.VPOCHA(ICEN,1)
  304. C
  305. IF(DY1 .GT. 0.0D0)THEN
  306. DY2 = 1.0D0 - MPOVAY.VPOCHA(ICEN,1)
  307. ELSE
  308. DY2 = MPOVAY.VPOCHA(ICEN,1)
  309. ENDIF
  310. DY1=SIGN(MIN(ABS(DY2),ABS(DY1)),DY1)
  311. C
  312. RHO=MPOVRO.VPOCHA(ICEN,1)
  313. MPODRY.VPOCHA(ICEN,1)=DY1*RHO
  314. MPODRE.VPOCHA(ICEN,1)=-1.0D0*DY1*RHO*MLRH0K.PROG(1)
  315. DY1=DY1/(MLRMAS.PROG(1)*MLRECO.PROG(1))
  316. DO IESP=2,NESP,1
  317. DY=DY1*(MLRMAS.PROG(IESP)*MLRECO.PROG(IESP))
  318. DYMAX1=ABS(DYMAX/(MLRMAS.PROG(1)*MLRECO.PROG(1))*
  319. & (MLRMAS.PROG(IESP)*MLRECO.PROG(IESP)))
  320. IF(DY .GT. 0)THEN
  321. DY2=1.0D0 - MPOVAY.VPOCHA(ICEN,IESP)
  322. ELSE
  323. DY2=MPOVAY.VPOCHA(ICEN,IESP)
  324. ENDIF
  325. C
  326. C************* On force la positivité de MPOVAY.VPOCHA(ICEN,IESP)
  327. C
  328. IF((ABS(DY)-ABS(DY2)).GE.(0.5D0*DYMAX1))THEN
  329. WRITE(IOIMP,*) 'CHPO2, CHPO3, CHPO4 = ???'
  330. C Données incompatibles
  331. CALL ERREUR(21)
  332. GOTO 9999
  333. ELSE
  334. DY=SIGN(MIN(ABS(DY2),ABS(DY)),DY)
  335. ENDIF
  336. MPODRY.VPOCHA(ICEN,IESP)=DY*RHO
  337. MPODRE.VPOCHA(ICEN,1)=MPODRE.VPOCHA(ICEN,1)-(DY*RHO
  338. $ *MLRH0K.PROG(IESP))
  339. ENDDO
  340. ENDIF
  341. ENDDO
  342. C
  343. SEGDES MELCEN
  344. SEGDES MELEFL
  345. SEGSUP MLECEN
  346. C
  347. SEGDES MPOVRO
  348. SEGDES MPOVAY
  349. SEGDES MPOVYI
  350. SEGDES MPOVYF
  351. SEGDES MPOVC
  352. SEGDES MPOVDX
  353. SEGDES MPODRE
  354. SEGDES MPODRY
  355. SEGSUP MPOCSI
  356. SEGSUP MPOCRI
  357. C
  358. 9999 RETURN
  359. END
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  

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