Télécharger pride1.eso

Retour à la liste

Numérotation des lignes :

pride1
  1. C PRIDE1 SOURCE OF166741 24/12/13 21:17:10 12097
  2. SUBROUTINE PRIDE1(NESP,NORD,TMAX,RUNIV,PROPHY,
  3. & MLRCHE,MLRMFR,
  4. & ICEN,IALP1,IALP2,IARN1,IARN2,IAGN1,IAGN2,IARET1,IARET2,
  5. & ITG1,ITG2,
  6. & IRN1,IRN2,
  7. & IVN1,IVN2,IPN1,IPN2,ITN1,ITN2,
  8. & EPS,
  9. & LOGAN,LOGIPG,LOGNEG,LOGBOR,LOGNC,
  10. & VALER,VAL1,VAL2)
  11. C
  12. C************************************************************************
  13. C
  14. C PROJET : CASTEM 2000
  15. C
  16. C NOM : PRIDE1
  17. C
  18. C DESCRIPTION : VOIR PRIDEM
  19. C
  20. C Melange des gaz "reactive thermally perfect".
  21. C
  22. C Calcul de la vitesse, de la pression, de la
  23. C temperature
  24. C
  25. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  26. C
  27. C AUTEUR : A. BECCANTINI, DEN/DM2S/SFME/TTMF
  28. C
  29. C************************************************************************
  30. C
  31. C APPELES de calcul : CONTHE
  32. C
  33. C************************************************************************
  34. C
  35. C ENTREES : NESP : nombre d'especes dans le melange.
  36. C
  37. C NORD : ordre des polynoms du cv_i
  38. C
  39. C TMAX : maximum temperature for cv expansion
  40. C
  41. C RUNIV : universal constant for gases
  42. C
  43. C PROPHY : thermodynamic properties for the gases
  44. C
  45. C MLRCHE : LISTREEL with the coefS involved in the chemical
  46. C reaction
  47. C
  48. C MLRMFR : LISTREEL with the mass fractions before or after
  49. C the chemical reaction
  50. C
  51. C ICEN : MELEME of the mesh
  52. C
  53. C IALP1, IALP2, IARN1, IARN2, IAGN1, IAGN2, IARET1, IARET2,
  54. C ITG1, ITG2 : pointeurs of the input CHAMPOINs
  55. C
  56. C IRN1, IRN2, IVN1, IVN2, IPN1, IPN2, ITN1, ITN2:
  57. C pointeurs of the input CHAMPOINs
  58. C
  59. C SORTIES :
  60. C
  61. C LOGAN : anomalie detectée
  62. C
  63. C LOGNEG : (LOGICAL): si .TRUE. une densité ou un temperature
  64. C negative a été detectée -> le programme s'arrete
  65. C et on peut visualiser le champe de densite ou de
  66. C temperature (sa valeur stockée en MESERR(1) et
  67. C VALER(1))
  68. C
  69. C LOGBOR : (LOGICAL)
  70. C si .TRUE. la fraction massique a ete
  71. C detecté dehor YMIN et YMAX
  72. C (sa valeur stockée en MESERR(2) et VALER(2)
  73. C ,VAL1,VAL2)
  74. C
  75. C LOGIPG : si .TRUE., cv(T) < 0
  76. C
  77. C LOGNC : si .TRUE., Newton Rapson pour le calcul de T
  78. C n'a pas converge
  79. C
  80. C MESERR(2),
  81. C VALER(2),
  82. C VAL1,
  83. C VAL2 : pour message d'erreur
  84. C
  85. C
  86. C************************************************************************
  87. C
  88. C HISTORIQUE (Anomalies et modifications éventuelles)
  89. C
  90. C HISTORIQUE : Crée le 06.11.09.
  91. C
  92. C************************************************************************
  93. C
  94. C**** Les variables
  95. C
  96. IMPLICIT INTEGER(I-N)
  97. INTEGER NESP,NORD
  98. & ,ICEN,IALP1,IALP2,IARN1,IARN2,IAGN1,IAGN2,IARET1,IARET2
  99. & ,ITG1,ITG2
  100. & ,IRN1, IRN2, IVN1, IVN2, IPN1, IPN2, ITN1, ITN2
  101. & ,N1,NLCE,IESP,IGEOMC
  102. C
  103. C**** NESP = Nombre d'especes dans le gaz.
  104. C
  105. REAL*8 RUNIV, TMAX, EPSI, VALER(2), VAL1, VAL2
  106. & , YMIN, YMAX
  107. & , EPS
  108. & , UX, UY, UZ, RO, ALPHA, T, P
  109. & , YNESPI, YNESPF
  110. & , ACOE1, YINI, YFIN, DYCO, UVEC(5), TGUESS
  111. CHARACTER*(8) TYPE
  112. CHARACTER*(40) MESERR(2)
  113. LOGICAL LOGNEG, LOGBOR, LOGAN, LOGNC, LOGIPG
  114. C
  115. C**** Valeur minimum di Y
  116. C
  117. C N.B.: il doit etre le meme dans gamma.eso.
  118. C
  119. PARAMETER(EPSI=1.0D-4,
  120. & YMIN=-EPSI,YMAX=1.0D0+EPSI)
  121. C
  122. C**** Les includes
  123. C
  124.  
  125. -INC PPARAM
  126. -INC CCOPTIO
  127. -INC SMCHPOI
  128. POINTEUR MPALP1.MPOVAL, MPALP2.MPOVAL,
  129. & MPARO1.MPOVAL, MPARO2.MPOVAL,
  130. & MPAGN1.MPOVAL, MPAGN2.MPOVAL,
  131. & MPARE1.MPOVAL, MPARE2.MPOVAL,
  132. & MPOTG1.MPOVAL, MPOTG2.MPOVAL,
  133. & MPOVN1.MPOVAL, MPOVN2.MPOVAL,
  134. & MPOPN1.MPOVAL, MPOPN2.MPOVAL,
  135. & MPORN1.MPOVAL, MPORN2.MPOVAL,
  136. & MPOTN1.MPOVAL, MPOTN2.MPOVAL
  137. -INC SMLREEL
  138. POINTEUR MLRCHE.MLREEL, MLRMFR.MLREEL,
  139. & MLRYIN.MLREEL, MLRYFI.MLREEL
  140. -INC SMELEME
  141. C
  142. C**** Segment du propriete du gaz
  143. C
  144. SEGMENT PROPHY
  145. REAL*8 ACV(NORD+1,NESP), W(NESP), H0K(NESP)
  146. ENDSEGMENT
  147. SEGACT PROPHY
  148. C
  149. C**** Initialisation des variables pour la gestion des erreurs pas ici,
  150. C mais avant
  151. C
  152. SEGMENT SUMCV
  153. REAL*8 ACVTOT(NORD+1)
  154. ENDSEGMENT
  155. SEGINI SUMCV
  156. C
  157. C**** Activation du MELEME "CENTRE"
  158. C
  159. IPT1 = ICEN
  160. SEGACT IPT1
  161. N1 = IPT1.NUM(/2)
  162. SEGDES IPT1
  163. C
  164. C**** Lecture des MPOVALs
  165. C
  166. CALL LICHT(IALP1, MPALP1,TYPE,IGEOMC)
  167. CALL LICHT(IARN1, MPARO1,TYPE,IGEOMC)
  168. CALL LICHT(IAGN1, MPAGN1,TYPE,IGEOMC)
  169. CALL LICHT(IARET1,MPARE1,TYPE,IGEOMC)
  170. CALL LICHT(ITG1, MPOTG1,TYPE,IGEOMC)
  171. CALL LICHT(IVN1, MPOVN1,TYPE,IGEOMC)
  172. CALL LICHT(IPN1, MPOPN1,TYPE,IGEOMC)
  173. CALL LICHT(IRN1, MPORN1,TYPE,IGEOMC)
  174. CALL LICHT(ITN1, MPOTN1,TYPE,IGEOMC)
  175. C
  176. CALL LICHT(IALP2,MPALP2,TYPE,IGEOMC)
  177. CALL LICHT(IARN2,MPARO2,TYPE,IGEOMC)
  178. CALL LICHT(IAGN2,MPAGN2,TYPE,IGEOMC)
  179. CALL LICHT(IARET2,MPARE2,TYPE,IGEOMC)
  180. CALL LICHT(ITG2,MPOTG2,TYPE,IGEOMC)
  181. CALL LICHT(IVN2,MPOVN2,TYPE,IGEOMC)
  182. CALL LICHT(IPN2,MPOPN2,TYPE,IGEOMC)
  183. CALL LICHT(IRN2,MPORN2,TYPE,IGEOMC)
  184. CALL LICHT(ITN2,MPOTN2,TYPE,IGEOMC)
  185. C
  186. C**** LICHT active les MPOVALs en *MOD
  187. C
  188. C i.e.
  189. C
  190. C SEGACT
  191. C
  192. C
  193. C**** Computation of the mass fractions
  194. C
  195. SEGACT MLRMFR
  196. SEGACT MLRCHE
  197. SEGINI, MLRYIN = MLRMFR
  198. SEGINI, MLRYFI = MLRMFR
  199. YNESPI = 1.0D0
  200. YNESPF = 1.0D0
  201. ACOE1 = MLRCHE.PROG(1)
  202. IF (ACOE1 .LE. 0.0D0)THEN
  203. WRITE(IOIMP,*) 'TAB1 . CHEMCOEF = ??? '
  204. WRITE(IOIMP,*) 'First coefficient <= 0 '
  205. CALL ERREUR(21)
  206. GOTO 9999
  207. ENDIF
  208. YINI = MLRMFR.PROG(1)
  209. YFIN = MLRMFR.PROG(2)
  210. YNESPF = YNESPF - YFIN
  211. YNESPI = YNESPI - YINI
  212. MLRYIN.PROG(1) = YINI
  213. MLRYFI.PROG(1) = YFIN
  214. DYCO = (YINI - YFIN) / (ACOE1 * PROPHY.W(1))
  215. IF((YINI .LT. YMIN) .OR. (YINI .GT. YMAX))THEN
  216. MESERR(2) = 'YINI '
  217. VALER(2) = YINI
  218. LOGBOR = .TRUE.
  219. VAL1 = YMIN
  220. VAL2 = YMAX
  221. ENDIF
  222. IF((YFIN .LT. YMIN) .OR. (YFIN .GT. YMAX))THEN
  223. MESERR(2) = 'YFIN '
  224. VALER(2) = YFIN
  225. LOGBOR = .TRUE.
  226. VAL1 = YMIN
  227. VAL2 = YMAX
  228. ENDIF
  229. DO IESP = 2 , (NESP - 1), 1
  230. ACOE1 = MLRCHE.PROG(IESP)
  231. IF (ACOE1 .GT. 0.0D0) THEN
  232. YFIN = MLRMFR.PROG(IESP + 1)
  233. YINI = YFIN + (DYCO * (ACOE1 * PROPHY.W(IESP)))
  234. ELSE
  235. YINI = MLRMFR.PROG(IESP + 1)
  236. YFIN = YINI - (DYCO * (ACOE1 * PROPHY.W(IESP)))
  237. ENDIF
  238. MLRYFI.PROG(IESP) = YFIN
  239. MLRYIN.PROG(IESP) = YINI
  240. YNESPF = YNESPF - YFIN
  241. YNESPI = YNESPI - YINI
  242. IF((YINI .LT. YMIN) .OR. (YINI .GT. YMAX))THEN
  243. MESERR(2) = 'YINI '
  244. VALER(2) = YINI
  245. LOGBOR = .TRUE.
  246. VAL1 = YMIN
  247. VAL2 = YMAX
  248. ENDIF
  249. IF((YFIN .LT. YMIN) .OR. (YFIN .GT. YMAX))THEN
  250. MESERR(2) = 'YFIN '
  251. VALER(2) = YFIN
  252. LOGBOR = .TRUE.
  253. VAL1 = YMIN
  254. VAL2 = YMAX
  255. ENDIF
  256. ENDDO
  257. IF((YNESPI .LT. YMIN) .OR. (YNESPI .GT. YMAX))THEN
  258. MESERR(2) = 'YNESPI '
  259. VALER(2) = YNESPI
  260. LOGBOR = .TRUE.
  261. VAL1 = YMIN
  262. VAL2 = YMAX
  263. ENDIF
  264. IF((YNESPF .LT. YMIN) .OR. (YNESPF .GT. YMAX))THEN
  265. MESERR(2) = 'YFIN '
  266. VALER(2) = YFIN
  267. LOGBOR = .TRUE.
  268. VAL1 = YMIN
  269. VAL2 = YMAX
  270. ENDIF
  271. MLRYFI.PROG(NESP) = YNESPF
  272. MLRYIN.PROG(NESP) = YNESPI
  273. C
  274. c write(*,*) 'Initial mass fractions'
  275. c do iesp = 1 , nesp
  276. c write(*,*) iesp, mlryin.prog(iesp)
  277. c enddo
  278. c write(*,*) 'Final mass fractions'
  279. c do iesp = 1 , nesp
  280. c write(*,*) mlryfi.prog(iesp)
  281. c enddo
  282. c
  283. C
  284. C**** BOUCLE SUR LES CENTRES pour le calcul des MPOVAL
  285. C
  286. DO NLCE = 1, N1
  287. C
  288. C******* Les differents variables a chaque centre
  289. C
  290. ALPHA = MPALP1.VPOCHA(NLCE,1)
  291. IF (ALPHA .GT. EPS) THEN
  292. RO = MPARO1.VPOCHA(NLCE,1) / ALPHA
  293. UVEC(1) = RO
  294. IF(RO .LE. 0.0D0)THEN
  295. VALER(1) = RO
  296. MESERR(1) = 'RO '
  297. LOGNEG = .TRUE.
  298. GOTO 9999
  299. ENDIF
  300. UVEC(2) = MPAGN1.VPOCHA(NLCE,1) / ALPHA
  301. UVEC(3) = MPAGN1.VPOCHA(NLCE,2) / ALPHA
  302. IF (IDIM .EQ. 3) THEN
  303. UVEC(4) = MPAGN1.VPOCHA(NLCE,3) / ALPHA
  304. ELSE
  305. UVEC(4) = 0.0D0
  306. ENDIF
  307. UVEC(5) = MPARE1.VPOCHA(NLCE,1) / ALPHA
  308. TGUESS = MPOTG1.VPOCHA(NLCE,1)
  309. CALL CONTHE(NESP, NORD, PROPHY.ACV, PROPHY.W, PROPHY.H0K,
  310. & RUNIV, TMAX, UVEC, MLRYIN.PROG,
  311. & TGUESS,
  312. & SUMCV.ACVTOT,
  313. & UX, UY, UZ, P, T,
  314. & LOGIPG, LOGNC, LOGNEG, VALER, MESERR)
  315. IF (LOGNC .OR. LOGNEG)THEN
  316. GOTO 9999
  317. ENDIF
  318. MPOVN1.VPOCHA(NLCE,1) = UX
  319. MPOVN1.VPOCHA(NLCE,2) = UY
  320. IF (IDIM .EQ. 3) THEN
  321. MPOVN1.VPOCHA(NLCE,3) = UZ
  322. ENDIF
  323. MPOTN1.VPOCHA(NLCE,1) = T
  324. MPOPN1.VPOCHA(NLCE,1) = P
  325. MPORN1.VPOCHA(NLCE,1) = RO
  326. ENDIF
  327. C
  328. ALPHA = MPALP2.VPOCHA(NLCE,1)
  329. IF (ALPHA .GT. EPS) THEN
  330. RO = MPARO2.VPOCHA(NLCE,1) / ALPHA
  331. UVEC(1) = RO
  332. IF(RO .LE. 0.0D0)THEN
  333. VALER(1) = RO
  334. MESERR(1) = 'RO '
  335. LOGNEG = .TRUE.
  336. GOTO 9999
  337. ENDIF
  338. UVEC(2) = MPAGN2.VPOCHA(NLCE,1) / ALPHA
  339. UVEC(3) = MPAGN2.VPOCHA(NLCE,2) / ALPHA
  340. IF (IDIM .EQ. 3) THEN
  341. UVEC(4) = MPAGN2.VPOCHA(NLCE,3) / ALPHA
  342. ELSE
  343. UVEC(4) = 0.0D0
  344. ENDIF
  345. UVEC(5) = MPARE2.VPOCHA(NLCE,1) / ALPHA
  346. TGUESS = MPOTG2.VPOCHA(NLCE,1)
  347. CALL CONTHE(NESP, NORD, PROPHY.ACV, PROPHY.W, PROPHY.H0K,
  348. & RUNIV, TMAX, UVEC, MLRYFI.PROG,
  349. & TGUESS,
  350. & SUMCV.ACVTOT,
  351. & UX, UY, UZ, P, T,
  352. & LOGIPG, LOGNC, LOGNEG, VALER, MESERR)
  353. IF (LOGNC .OR. LOGNEG)THEN
  354. GOTO 9999
  355. ENDIF
  356. MPOVN2.VPOCHA(NLCE,1) = UX
  357. MPOVN2.VPOCHA(NLCE,2) = UY
  358. IF (IDIM .EQ. 3) THEN
  359. MPOVN2.VPOCHA(NLCE,3) = UZ
  360. ENDIF
  361. MPOTN2.VPOCHA(NLCE,1) = T
  362. MPOPN2.VPOCHA(NLCE,1) = P
  363. MPORN2.VPOCHA(NLCE,1) = RO
  364. ENDIF
  365. C
  366. C**** Fin boucle sur les points
  367. C
  368. ENDDO
  369. C
  370. 9999 CONTINUE
  371. C
  372. SEGDES MPALP1
  373. SEGDES MPARO1
  374. SEGDES MPAGN1
  375. SEGDES MPARE1
  376. SEGDES MPOTG1
  377. SEGDES MPOVN1
  378. SEGDES MPOPN1
  379. SEGDES MPORN1
  380. SEGDES MPOTN1
  381. SEGDES MPALP2
  382. SEGDES MPARO2
  383. SEGDES MPAGN2
  384. SEGDES MPARE2
  385. SEGDES MPOTG2
  386. SEGDES MPOVN2
  387. SEGDES MPOPN2
  388. SEGDES MPORN2
  389. SEGDES MPOTN2
  390. C
  391. SEGDES PROPHY
  392. C
  393. SEGDES MLRMFR
  394. SEGDES MLRCHE
  395. C
  396. SEGSUP MLRYIN
  397. SEGSUP MLRYFI
  398. SEGSUP SUMCV
  399. C
  400. RETURN
  401. END
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  

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