Télécharger prgfm1.eso

Retour à la liste

Numérotation des lignes :

prgfm1
  1. C PRGFM1 SOURCE OF166741 24/12/13 21:17:09 12097
  2. SUBROUTINE PRGFM1(NESP,
  3. & IM1,IPHI,ICH1,ICH2,ICH3,ICH4,ICH5,
  4. & MLRMGA,MLRPGA,MLRMPI,MLRPPI,
  5. & IVIT,IPRES,IY,
  6. & LOGNEG,MESERR,
  7. & VALER)
  8. C************************************************************************
  9. C
  10. C PROJET : CASTEM 2000
  11. C
  12. C NOM : PRGFM1
  13. C
  14. C DESCRIPTION : VOIR PRIGFM
  15. C
  16. C Gaz ideal mono-espece:
  17. C Calcul de vitesse, pression.
  18. C
  19. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  20. C
  21. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  22. C
  23. C************************************************************************
  24. C
  25. C APPELES (E/S) : LICHT
  26. C
  27. C************************************************************************
  28. C
  29. C ENTREES :
  30. C
  31. C NESP : nombre d'especes dans les equation d'Euler.
  32. C
  33. C IM1 : MELEME contenant les centres des ELTs
  34. C
  35. C IPHI : CHPOINT contenant PHI
  36. C
  37. C ICH1 : CHPOINT contenant la masse volumique.
  38. C
  39. C ICH2 : CHPOINT contenant les dèbits
  40. C ( NDIM composantes);
  41. C
  42. C ICH3 : CHPOINT contenat l'énergie totale per
  43. C unité de volume (RHO Et);
  44. C
  45. C ICH4, ICH5 : CHPOINT contenants rhoy et alpha ;
  46. C
  47. C MLRMGA,MLRPGA,MLRMPI,MLRPPI: proprietés des gaz 1
  48. C
  49. C SORTIES :
  50. C
  51. C IY : CHPOINT contenany y
  52. C
  53. C IVIT : CHPOINT contenant la vitesse
  54. C
  55. C IPRES : CHPOINT contenant la pression du gaz;
  56. C
  57. C LOGNEG : (LOGICAL): si .TRUE. une pression ou une densité
  58. C negative a été detectée -> le programme s'arrete
  59. C (sa valeur stockée en MESERR(1) et VALER(1))
  60. C
  61. C MESERR,
  62. C VALER : pour message d'erreur
  63. C
  64. C
  65. C************************************************************************
  66. C
  67. C HISTORIQUE (Anomalies et modifications éventuelles)
  68. C
  69. C HISTORIQUE : Créée le 1.11.2010
  70. C
  71. C************************************************************************
  72. C
  73. C**** Les variables
  74. C
  75. IMPLICIT INTEGER(I-N)
  76. INTEGER NESP, IESP,
  77. & IM1,ICH1,ICH2,ICH3,ICH4,ICH5
  78. & ,IVIT,IPRES,IPHI, IY
  79. & ,NLCE, N1, IGEOMC
  80. REAL*8 VALER(2)
  81. & ,RO,UX,UY,UZ,P
  82. & ,ROET, ROETH, CELL, PHI
  83. & ,GAMMA,PINF
  84. & ,ALP, RNUM, DEN, ALPI
  85. C
  86. CHARACTER*(8) TYPE
  87. CHARACTER*(40) MESERR(2)
  88. LOGICAL LOGNEG
  89. C
  90. C
  91. C**** Les includes
  92. C
  93.  
  94. -INC PPARAM
  95. -INC CCOPTIO
  96. -INC SMCHPOI
  97. POINTEUR MPOVA7.MPOVAL, MPOVRY.MPOVAL,
  98. & MPOVAY.MPOVAL, MPOALP.MPOVAL
  99. -INC SMELEME
  100. -INC SMLREEL
  101. POINTEUR MLRMGA.MLREEL, MLRPGA.MLREEL,
  102. & MLRMPI.MLREEL, MLRPPI.MLREEL
  103. C
  104. C
  105. C**** Initialisation des variables pour la gestion des erreurs pas ici,
  106. C mais avant, i.e.
  107. C
  108. C LOGNEG = .FALSE.
  109. C MESERR(1) = ' '
  110. C MESERR(2) = ' '
  111. C
  112. C**** Activation du MELEME "CENTRE"
  113. C
  114. IPT1 = IM1
  115. SEGACT IPT1
  116. N1 = IPT1.NUM(/2)
  117. SEGDES IPT1
  118. C
  119. C**** Creation des CHPOINTs IVIT, IPRES
  120. C
  121. C ITEMP CHPOINT simile aux ICH1
  122. C Donc on lit ICH1
  123. C
  124. MCHPO1 = ICH1
  125. SEGACT MCHPO1
  126. MSOUP1 = MCHPO1.IPCHP(1)
  127. SEGDES MCHPO1
  128. SEGACT MSOUP1
  129. MPOVA1 = MSOUP1.IPOVAL
  130. SEGDES MSOUP1
  131. SEGACT MPOVA1
  132. C
  133. C*** MPOVA6 = IPOVAL de IPRES
  134. C
  135. SEGINI, MPOVA6 = MPOVA1
  136. SEGINI, MSOUP2 = MSOUP1
  137. MSOUP2.IPOVAL = MPOVA6
  138. SEGINI, MCHPO2 = MCHPO1
  139. MCHPO2.IPCHP(1)= MSOUP2
  140. SEGDES MSOUP2
  141. SEGDES MCHPO2
  142. IPRES = MCHPO2
  143. C
  144. C*** IVIT simil au CHPOINT ICH2 (DEBITs).
  145. C
  146. MCHPO1 = ICH2
  147. SEGACT MCHPO1
  148. MSOUP1 = MCHPO1.IPCHP(1)
  149. SEGDES MCHPO1
  150. SEGACT MSOUP1
  151. MPOVA2 = MSOUP1.IPOVAL
  152. SEGDES MSOUP1
  153. SEGACT MPOVA2
  154. C
  155. C**** IVIT
  156. C
  157. SEGINI, MPOVA5 = MPOVA2
  158. SEGINI, MSOUP2 = MSOUP1
  159. MSOUP2.IPOVAL = MPOVA5
  160. SEGINI, MCHPO2 = MCHPO1
  161. MCHPO2.IPCHP(1)= MSOUP2
  162. SEGDES MSOUP2
  163. SEGDES MCHPO2
  164. IVIT = MCHPO2
  165. C
  166. IF (NESP .GE. 1) THEN
  167. C
  168. C*** IY
  169. C
  170. C Ce CHPOINT ressemble à IROY
  171. C Donc on lit IROY
  172. C
  173. MCHPO1 = ICH4
  174. SEGACT MCHPO1
  175. MSOUP1 = MCHPO1.IPCHP(1)
  176. SEGDES MCHPO1
  177. SEGACT MSOUP1
  178. MPOVRY = MSOUP1.IPOVAL
  179. SEGDES MSOUP1
  180. SEGACT MPOVRY
  181. C
  182. SEGINI, MPOVAY = MPOVRY
  183. SEGINI, MSOUP2 = MSOUP1
  184. MSOUP2.IPOVAL = MPOVAY
  185. SEGINI, MCHPO2 = MCHPO1
  186. MCHPO2.IPCHP(1)= MSOUP2
  187. SEGDES MSOUP2
  188. SEGDES MCHPO2
  189. IY = MCHPO2
  190. C
  191. CALL LICHT(ICH5,MPOALP,TYPE,IGEOMC)
  192. C SEGACT MPOALP
  193. ELSE
  194. IY=0
  195. ENDIF
  196. C
  197. C**** Lecture de MPOVALs des autres MCHPOIs
  198. C
  199. CALL LICHT(ICH3,MPOVA3,TYPE,IGEOMC)
  200. CALL LICHT(IPHI,MPOVA7,TYPE,IGEOMC)
  201. C
  202. C**** LICHT active les MPOVALs en *MOD
  203. C
  204. C i.e.
  205. C
  206. C SEGACT MPOVA3*MOD
  207. C SEGACT MPOVA7*MOD
  208. C
  209. C
  210. C**** RICAPITOLATIF
  211. C
  212. C On a activé que les MPOVA1 - MPOVA7
  213. C
  214. C MPOVA1 = RO
  215. C MPOVA2 = DEBIT
  216. C MPOVA3 = ROET
  217. C MPOVA5 = VITESSE
  218. C MPOVA6 = PRES
  219. C MPOVA7 = IPHI
  220. C MPOVRY = RHO Y
  221. C MPOVAY = Y
  222. C MPOALP = ALPHA
  223. C
  224. C**** BOUCLE SUR LES CENTRES pour le calcul du FLUX.
  225. C
  226. DO NLCE = 1, N1
  227. C
  228. C******* Les differents variables a chaque centre
  229. C
  230. RO = MPOVA1.VPOCHA(NLCE,1)
  231. IF(RO .LE. 0.0D0)THEN
  232. VALER(1) = RO
  233. MESERR(1) = 'RO '
  234. LOGNEG = .TRUE.
  235. C
  236. C********** RO < 0: le programme s'arrete mais apres le calcul des
  237. C CHPOINTs
  238. C
  239. ENDIF
  240. UX = MPOVA2.VPOCHA(NLCE,1)/RO
  241. UY = MPOVA2.VPOCHA(NLCE,2)/RO
  242. MPOVA5.VPOCHA(NLCE,1)=UX
  243. MPOVA5.VPOCHA(NLCE,2)=UY
  244. IF(IDIM .EQ. 3) THEN
  245. UZ = MPOVA2.VPOCHA(NLCE,3)/RO
  246. MPOVA5.VPOCHA(NLCE,3)=UZ
  247. ENDIF
  248. ROET = MPOVA3.VPOCHA(NLCE,1)
  249. PHI = MPOVA7.VPOCHA(NLCE,1)
  250. CELL = UX*UX + UY*UY
  251. IF(IDIM .EQ. 3) CELL = CELL +UZ*UZ
  252. CELL = 0.5D0 * CELL *RO
  253. ROETH = ROET - CELL
  254. C
  255. C******* We compute GAMMA and PINF
  256. C
  257. ALP = 1.0D0
  258. DEN = 0.0D0
  259. RNUM = 0.0D0
  260. DO IESP = 1, NESP, 1
  261. IF (PHI .LE. 0)THEN
  262. GAMMA = MLRMGA.PROG(IESP)
  263. PINF = MLRMPI.PROG(IESP)
  264. ELSE
  265. GAMMA = MLRPGA.PROG(IESP)
  266. PINF = MLRPPI.PROG(IESP)
  267. ENDIF
  268. ALPI = MPOALP.VPOCHA(NLCE,IESP)
  269. ALP = ALP - ALPI
  270. DEN = DEN + (ALPI / (GAMMA - 1.0D0))
  271. RNUM = RNUM + ((ALPI * GAMMA * PINF) / (GAMMA - 1.0D0))
  272. ENDDO
  273. IF (PHI .LE. 0)THEN
  274. GAMMA = MLRMGA.PROG(NESP + 1)
  275. PINF = MLRMPI.PROG(NESP + 1)
  276. ELSE
  277. GAMMA = MLRPGA.PROG(NESP + 1)
  278. PINF = MLRPPI.PROG(NESP + 1)
  279. ENDIF
  280. DEN = DEN + (ALP / (GAMMA - 1.0D0))
  281. RNUM = RNUM + ((ALP * GAMMA * PINF) / (GAMMA - 1.0D0))
  282. C
  283. PINF = RNUM / DEN
  284. GAMMA = 1.0D0 / DEN
  285. GAMMA = GAMMA + 1.0D0
  286. PINF = PINF / GAMMA
  287. C
  288. C write(*,*)
  289. C write(*,*) 'gamma, pinf ', gamma, pinf
  290. P = (GAMMA - 1.0D0) * ROETH
  291. P = P - (GAMMA * PINF)
  292. IF(P .LE. (-1.0D0 * PINF)) THEN
  293. VALER(1) = P
  294. MESERR(1) = 'P '
  295. LOGNEG = .TRUE.
  296. C
  297. C********** P < 0: le programme s'arrete mais apres le calcul des
  298. C CHPOINTs
  299. C
  300. ENDIF
  301. MPOVA6.VPOCHA(NLCE,1) = P
  302. C
  303. DO IESP = 1, NESP
  304. MPOVAY.VPOCHA(NLCE,IESP) = MPOVRY.VPOCHA(NLCE,IESP) / RO
  305. ENDDO
  306. ENDDO
  307. C
  308. SEGDES MPOVA1
  309. SEGDES MPOVA2
  310. SEGDES MPOVA3
  311. SEGDES MPOVA5
  312. SEGDES MPOVA6
  313. SEGDES MPOVA7
  314. IF (NESP .GE. 1) THEN
  315. SEGDES MPOVRY
  316. SEGDES MPOALP
  317. SEGDES MPOVAY
  318. ENDIF
  319. C
  320. RETURN
  321. END
  322.  
  323.  
  324.  
  325.  

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