Télécharger prgfm1.eso

Retour à la liste

Numérotation des lignes :

prgfm1
  1. C PRGFM1 SOURCE CB215821 20/11/25 13:36:42 10792
  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
  74. C**** Variables de COOPTIO
  75. C
  76. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  77. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  78. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  79. C & ,IECHO, IIMPI, IOSPI
  80. C & ,IDIM
  81. C & ,MCOORD
  82. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  83. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  84. C & ,NORINC,NORVAL,NORIND,NORVAD
  85. C & ,NUCROU, IPSAUV
  86. C
  87. C**** Les variables
  88. C
  89. IMPLICIT INTEGER(I-N)
  90. INTEGER NESP, IESP,
  91. & IM1,ICH1,ICH2,ICH3,ICH4,ICH5
  92. & ,IVIT,IPRES,IPHI, IY
  93. & ,NLCE, N1, IGEOMC
  94. REAL*8 VALER(2)
  95. & ,RO,UX,UY,UZ,P
  96. & ,ROET, ROETH, CELL, PHI
  97. & ,GAMMA,PINF
  98. & ,ALP, RNUM, DEN, ALPI
  99. C
  100. CHARACTER*(8) TYPE
  101. CHARACTER*(40) MESERR(2)
  102. LOGICAL LOGNEG
  103. C
  104. C
  105. C**** Les includes
  106. C
  107.  
  108. -INC PPARAM
  109. -INC CCOPTIO
  110. -INC SMCHPOI
  111. POINTEUR MPOVA7.MPOVAL, MPOVRY.MPOVAL,
  112. & MPOVAY.MPOVAL, MPOALP.MPOVAL
  113. -INC SMELEME
  114. -INC SMLREEL
  115. POINTEUR MLRMGA.MLREEL, MLRPGA.MLREEL,
  116. & MLRMPI.MLREEL, MLRPPI.MLREEL
  117. C
  118. C
  119. C**** Initialisation des variables pour la gestion des erreurs pas ici,
  120. C mais avant, i.e.
  121. C
  122. C LOGNEG = .FALSE.
  123. C MESERR(1) = ' '
  124. C MESERR(2) = ' '
  125. C
  126. C**** Activation du MELEME "CENTRE"
  127. C
  128. IPT1 = IM1
  129. SEGACT IPT1
  130. N1 = IPT1.NUM(/2)
  131. SEGDES IPT1
  132. C
  133. C**** Creation des CHPOINTs IVIT, IPRES
  134. C
  135. C ITEMP CHPOINT simile aux ICH1
  136. C Donc on lit ICH1
  137. C
  138. MCHPO1 = ICH1
  139. SEGACT MCHPO1
  140. MSOUP1 = MCHPO1.IPCHP(1)
  141. SEGDES MCHPO1
  142. SEGACT MSOUP1
  143. MPOVA1 = MSOUP1.IPOVAL
  144. SEGDES MSOUP1
  145. SEGACT MPOVA1
  146. C
  147. C*** MPOVA6 = IPOVAL de IPRES
  148. C
  149. SEGINI, MPOVA6 = MPOVA1
  150. SEGINI, MSOUP2 = MSOUP1
  151. MSOUP2.IPOVAL = MPOVA6
  152. SEGINI, MCHPO2 = MCHPO1
  153. MCHPO2.IPCHP(1)= MSOUP2
  154. SEGDES MSOUP2
  155. SEGDES MCHPO2
  156. IPRES = MCHPO2
  157. C
  158. C*** IVIT simil au CHPOINT ICH2 (DEBITs).
  159. C
  160. MCHPO1 = ICH2
  161. SEGACT MCHPO1
  162. MSOUP1 = MCHPO1.IPCHP(1)
  163. SEGDES MCHPO1
  164. SEGACT MSOUP1
  165. MPOVA2 = MSOUP1.IPOVAL
  166. SEGDES MSOUP1
  167. SEGACT MPOVA2
  168. C
  169. C**** IVIT
  170. C
  171. SEGINI, MPOVA5 = MPOVA2
  172. SEGINI, MSOUP2 = MSOUP1
  173. MSOUP2.IPOVAL = MPOVA5
  174. SEGINI, MCHPO2 = MCHPO1
  175. MCHPO2.IPCHP(1)= MSOUP2
  176. SEGDES MSOUP2
  177. SEGDES MCHPO2
  178. IVIT = MCHPO2
  179. C
  180. IF (NESP .GE. 1) THEN
  181. C
  182. C*** IY
  183. C
  184. C Ce CHPOINT ressemble à IROY
  185. C Donc on lit IROY
  186. C
  187. MCHPO1 = ICH4
  188. SEGACT MCHPO1
  189. MSOUP1 = MCHPO1.IPCHP(1)
  190. SEGDES MCHPO1
  191. SEGACT MSOUP1
  192. MPOVRY = MSOUP1.IPOVAL
  193. SEGDES MSOUP1
  194. SEGACT MPOVRY
  195. C
  196. SEGINI, MPOVAY = MPOVRY
  197. SEGINI, MSOUP2 = MSOUP1
  198. MSOUP2.IPOVAL = MPOVAY
  199. SEGINI, MCHPO2 = MCHPO1
  200. MCHPO2.IPCHP(1)= MSOUP2
  201. SEGDES MSOUP2
  202. SEGDES MCHPO2
  203. IY = MCHPO2
  204. C
  205. CALL LICHT(ICH5,MPOALP,TYPE,IGEOMC)
  206. C SEGACT MPOALP
  207. ELSE
  208. IY=0
  209. ENDIF
  210. C
  211. C**** Lecture de MPOVALs des autres MCHPOIs
  212. C
  213. CALL LICHT(ICH3,MPOVA3,TYPE,IGEOMC)
  214. CALL LICHT(IPHI,MPOVA7,TYPE,IGEOMC)
  215. C
  216. C**** LICHT active les MPOVALs en *MOD
  217. C
  218. C i.e.
  219. C
  220. C SEGACT MPOVA3*MOD
  221. C SEGACT MPOVA7*MOD
  222. C
  223. C
  224. C**** RICAPITOLATIF
  225. C
  226. C On a activé que les MPOVA1 - MPOVA7
  227. C
  228. C MPOVA1 = RO
  229. C MPOVA2 = DEBIT
  230. C MPOVA3 = ROET
  231. C MPOVA5 = VITESSE
  232. C MPOVA6 = PRES
  233. C MPOVA7 = IPHI
  234. C MPOVRY = RHO Y
  235. C MPOVAY = Y
  236. C MPOALP = ALPHA
  237. C
  238. C**** BOUCLE SUR LES CENTRES pour le calcul du FLUX.
  239. C
  240. DO NLCE = 1, N1
  241. C
  242. C******* Les differents variables a chaque centre
  243. C
  244. RO = MPOVA1.VPOCHA(NLCE,1)
  245. IF(RO .LE. 0.0D0)THEN
  246. VALER(1) = RO
  247. MESERR(1) = 'RO '
  248. LOGNEG = .TRUE.
  249. C
  250. C********** RO < 0: le programme s'arrete mais apres le calcul des
  251. C CHPOINTs
  252. C
  253. ENDIF
  254. UX = MPOVA2.VPOCHA(NLCE,1)/RO
  255. UY = MPOVA2.VPOCHA(NLCE,2)/RO
  256. MPOVA5.VPOCHA(NLCE,1)=UX
  257. MPOVA5.VPOCHA(NLCE,2)=UY
  258. IF(IDIM .EQ. 3) THEN
  259. UZ = MPOVA2.VPOCHA(NLCE,3)/RO
  260. MPOVA5.VPOCHA(NLCE,3)=UZ
  261. ENDIF
  262. ROET = MPOVA3.VPOCHA(NLCE,1)
  263. PHI = MPOVA7.VPOCHA(NLCE,1)
  264. CELL = UX*UX + UY*UY
  265. IF(IDIM .EQ. 3) CELL = CELL +UZ*UZ
  266. CELL = 0.5D0 * CELL *RO
  267. ROETH = ROET - CELL
  268. C
  269. C******* We compute GAMMA and PINF
  270. C
  271. ALP = 1.0D0
  272. DEN = 0.0D0
  273. RNUM = 0.0D0
  274. DO IESP = 1, NESP, 1
  275. IF (PHI .LE. 0)THEN
  276. GAMMA = MLRMGA.PROG(IESP)
  277. PINF = MLRMPI.PROG(IESP)
  278. ELSE
  279. GAMMA = MLRPGA.PROG(IESP)
  280. PINF = MLRPPI.PROG(IESP)
  281. ENDIF
  282. ALPI = MPOALP.VPOCHA(NLCE,IESP)
  283. ALP = ALP - ALPI
  284. DEN = DEN + (ALPI / (GAMMA - 1.0D0))
  285. RNUM = RNUM + ((ALPI * GAMMA * PINF) / (GAMMA - 1.0D0))
  286. ENDDO
  287. IF (PHI .LE. 0)THEN
  288. GAMMA = MLRMGA.PROG(NESP + 1)
  289. PINF = MLRMPI.PROG(NESP + 1)
  290. ELSE
  291. GAMMA = MLRPGA.PROG(NESP + 1)
  292. PINF = MLRPPI.PROG(NESP + 1)
  293. ENDIF
  294. DEN = DEN + (ALP / (GAMMA - 1.0D0))
  295. RNUM = RNUM + ((ALP * GAMMA * PINF) / (GAMMA - 1.0D0))
  296. C
  297. PINF = RNUM / DEN
  298. GAMMA = 1.0D0 / DEN
  299. GAMMA = GAMMA + 1.0D0
  300. PINF = PINF / GAMMA
  301. C
  302. C write(*,*)
  303. C write(*,*) 'gamma, pinf ', gamma, pinf
  304. P = (GAMMA - 1.0D0) * ROETH
  305. P = P - (GAMMA * PINF)
  306. IF(P .LE. (-1.0D0 * PINF)) THEN
  307. VALER(1) = P
  308. MESERR(1) = 'P '
  309. LOGNEG = .TRUE.
  310. C
  311. C********** P < 0: le programme s'arrete mais apres le calcul des
  312. C CHPOINTs
  313. C
  314. ENDIF
  315. MPOVA6.VPOCHA(NLCE,1) = P
  316. C
  317. DO IESP = 1, NESP
  318. MPOVAY.VPOCHA(NLCE,IESP) = MPOVRY.VPOCHA(NLCE,IESP) / RO
  319. ENDDO
  320. ENDDO
  321. C
  322. SEGDES MPOVA1
  323. SEGDES MPOVA2
  324. SEGDES MPOVA3
  325. SEGDES MPOVA5
  326. SEGDES MPOVA6
  327. SEGDES MPOVA7
  328. IF (NESP .GE. 1) THEN
  329. SEGDES MPOVRY
  330. SEGDES MPOALP
  331. SEGDES MPOVAY
  332. ENDIF
  333. C
  334. RETURN
  335. END
  336.  
  337.  
  338.  

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