Télécharger prim1e.eso

Retour à la liste

Numérotation des lignes :

  1. C PRIM1E SOURCE CB215821 19/07/31 21:16:35 10277
  2. SUBROUTINE PRIM1E()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRIM1E (OPERATEUR GIBIANE)
  8. C
  9. C DESCRIPTION : Voir PRIMIT
  10. C
  11. C Calcul des variables primitives (et du "gamma")
  12. C pour les gas "calorically perfect" monoespeces
  13. C
  14. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  15. C
  16. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  17. C
  18. C************************************************************************
  19. C
  20. C
  21. C APPELES (E/S) : LIROBJ, QUEPOI, QUEPO1, ERREUR, ECROBJ, LIRCHA,
  22. C ECRCHA
  23. C
  24. C APPELES (Calcul) : PR1ECA
  25. C
  26. C
  27. C************************************************************************
  28. C
  29. C PHRASE D'APPEL (GIBIANE) :
  30. C
  31. C 1) gaz ideal mono-espece
  32. C
  33. C RCHPO1 RCHPO2 = 'PRIM' MCLE1 CHPO1 CHPO2 CHPO3 CHPO4 (MCLE2) ;
  34. C
  35. C
  36. C ENTREES :
  37. C
  38. C MCLE1 : mot clé, 'PERFMONO'
  39. C
  40. C CHPO1 : CHPOINT contenant la masse volumique
  41. C (une composante, 'SCAL').
  42. C
  43. C CHPO2 : CHPOINT contenant les dèbits
  44. C (2 composantes en 2D, 'UX ','UY ');
  45. C
  46. C CHPO3 : CHPOINT contenat l'énergie totale per
  47. C unité de volume (RHO Et),
  48. C (une composante, 'SCAL').
  49. C
  50. C i.e. CHPO1, CHPO2, CHPO3 sont les variables
  51. C conservatives des Equations d'Euler.
  52. C
  53. C CHPO4 : CHPOINT contenat les "gamma" du gaz
  54. C (une composante, 'SCAL').
  55. C
  56. C MCLE2 : Option personelle: pas dans la notice
  57. C officielle!!!
  58. C Mot clé, 'TRICHE' (s'il y a un erreur,
  59. C les objects RCHPO1 et RCHPO2 ne sont pas
  60. C des type ANNULLE et le programme
  61. C ne s'arrete pas!!!)
  62. C
  63. C SORTIES :
  64. C
  65. C RCHPO1 : CHPOINT contenant la vitesse
  66. C
  67. C RCHPO2 : CHPOINT contenant la pression du gaz;
  68. C
  69. C************************************************************************
  70. C
  71. C HISTORIQUE (Anomalies et modifications éventuelles)
  72. C
  73. C HISTORIQUE : Créée le 12.1.98.
  74. C
  75. C Modifie le 30.7.98 pour ajouter le mot clee personelle
  76. C 'TRICHE'
  77. C
  78. C Modifie le 28.09.00 pour control sur le noms de composantes
  79. C (subroutine QUEPO1)
  80. C Variables de CCOPTIO en commentaire
  81. C Elimination de ERREUR(-301)
  82. C
  83. C************************************************************************
  84. C
  85. C
  86. C**** Variables de COOPTIO
  87. C
  88. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  89. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  90. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  91. C & ,IECHO, IIMPI, IOSPI
  92. C & ,IDIM
  93. C & ,MCOORD
  94. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  95. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  96. C & ,NORINC,NORVAL,NORIND,NORVAD
  97. C & ,NUCROU, IPSAUV
  98. C
  99. C**** Les variables
  100. C
  101. IMPLICIT INTEGER(I-N)
  102. INTEGER ICOND, IRETOU, INDIC, NBCOMP, IERR0
  103. & , ICEN, IRO, IROVIT, IROET, IGAMMA
  104. & , IPRES, IVIT, JGN, JGM
  105. REAL*8 VALER(2),VAL1,VAL2
  106. CHARACTER*(40) MESERR(2),MESCEL
  107. CHARACTER*(4) MOT(1)
  108. CHARACTER*(6) NOMTRI
  109. LOGICAL LOGNEG, LOGBOR, LOGTRI
  110. C
  111. C**** Les Includes
  112. C
  113.  
  114. -INC PPARAM
  115. -INC CCOPTIO
  116. -INC SMCHPOI
  117. -INC SMLMOTS
  118. C
  119. C**** Initialisation des parametres d'erreur
  120. C
  121. LOGNEG = .FALSE.
  122. LOGBOR = .FALSE.
  123. MESCEL = ' '
  124. MESERR(1) = MESCEL
  125. MESERR(2) = MESCEL
  126. MOTERR(1:40) = MESCEL
  127. VALER(1) = 0.0D0
  128. VALER(2) = 0.0D0
  129. VAL1 = 0.0D0
  130. VAL2 = 0.0D0
  131. C
  132. C**** Initialisation des MOT(1)
  133. C
  134. MOT(1) = ' '
  135. C
  136. C**** Lecture du CHPOINT RO
  137. C
  138. ICOND = 1
  139. CALL LIROBJ('CHPOINT ',IRO,ICOND,IRETOU)
  140. CALL ACTOBJ('CHPOINT ',IRO,1)
  141. IF (IERR.NE.0) GOTO 9999
  142. C
  143. C**** On cherche le pointeur de son maillage et on l'impose sur les
  144. C autres CHPOINT
  145. C
  146. MCHPOI = IRO
  147. SEGACT MCHPOI
  148. MSOUPO = MCHPOI.IPCHP(1)
  149. SEGACT MSOUPO
  150. ICEN = MSOUPO.IGEOC
  151. SEGDES MSOUPO
  152. SEGDES MCHPOI
  153. C
  154. C**** Control du CHPOINT: QUEPOI
  155. C
  156. C On controlle que le chpoint est non-partitione
  157. C
  158. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  159. C INDIC = 0 -> on ne fait que verifier le support geometrique (ICEN)
  160. C
  161. C NBCOMP > 0 -> numero des composantes
  162. C
  163. C MOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  164. C
  165. INDIC = 1
  166. NBCOMP = 1
  167. MOT(1) = 'SCAL'
  168. CALL QUEPOI(IRO, ICEN, INDIC, NBCOMP, MOT)
  169. IF(IERR .NE. 0)THEN
  170. IERR0 = IERR
  171.  
  172. C
  173. C******** Message d'erreur standard
  174. C -301 0 %m1:40
  175. C
  176. MOTERR = 'CHPO1 = ??? '
  177. WRITE(IOIMP,*) MOTERR(1:40)
  178.  
  179. GOTO 9999
  180. ENDIF
  181. C
  182. C**** Lecture du CHPOINT DEBIT.
  183. C
  184. ICOND = 1
  185. CALL LIROBJ('CHPOINT',IROVIT,ICOND,IRETOU)
  186. CALL ACTOBJ('CHPOINT',IROVIT,1)
  187. IF (IERR.NE.0) GOTO 9999
  188. C
  189. C**** Control du CHPOINT
  190. C
  191. INDIC = 1
  192. NBCOMP = IDIM
  193. JGN = 4
  194. JGM = IDIM
  195. SEGINI MLMOTS
  196. MLMOTS.MOTS(1) = 'UX '
  197. MLMOTS.MOTS(2) = 'UY '
  198. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  199. CALL QUEPO1(IROVIT, ICEN, MLMOTS)
  200. IF(IERR .NE. 0)THEN
  201. IERR0 = IERR
  202.  
  203. C
  204. C******** Message d'erreur standard
  205. C -301 0 %m1:40
  206. C
  207. MOTERR = 'CHPO2 = ??? '
  208. WRITE(IOIMP,*) MOTERR(1:40)
  209.  
  210. GOTO 9999
  211. ENDIF
  212. SEGSUP MLMOTS
  213. C
  214. C**** Lecture du CHPOINT ROET
  215. C
  216. ICOND = 1
  217. CALL LIROBJ('CHPOINT',IROET,ICOND,IRETOU)
  218. CALL ACTOBJ('CHPOINT',IROET,1)
  219. IF (IERR.NE.0) GOTO 9999
  220. C
  221. C**** Control du CHPOINT
  222. C
  223. INDIC = 1
  224. NBCOMP = 1
  225. MOT(1) = 'SCAL'
  226. CALL QUEPOI(IROET, ICEN, INDIC, NBCOMP, MOT)
  227. IF(IERR .NE. 0)THEN
  228. IERR0 = IERR
  229.  
  230. C
  231. C******** Message d'erreur standard
  232. C -301 0 %m1:40
  233. C
  234. MOTERR = 'CHPO3 = ??? '
  235. WRITE(IOIMP,*) MOTERR(1:40)
  236.  
  237. GOTO 9999
  238. ENDIF
  239. C
  240. C**** Lecture du CHPOINT GAMMA
  241. C
  242. ICOND = 1
  243. CALL LIROBJ('CHPOINT',IGAMMA,ICOND,IRETOU)
  244. CALL ACTOBJ('CHPOINT',IGAMMA,1)
  245. IF(IERR .NE. 0)GOTO 9999
  246. C
  247. C**** Control du CHPOINT
  248. C
  249. INDIC = 1
  250. NBCOMP = 1
  251. MOT(1) = 'SCAL'
  252. CALL QUEPOI(IGAMMA, ICEN, INDIC, NBCOMP, MOT)
  253. IF(IERR .NE. 0)THEN
  254. IERR0 = IERR
  255.  
  256. C
  257. C******* Message d'erreur standard
  258. C -301 0 %m1:40
  259. C
  260. MOTERR = 'CHPO4 = ??? '
  261. WRITE(IOIMP,*) MOTERR(1:40)
  262.  
  263. GOTO 9999
  264. ENDIF
  265. C
  266. C******* Option TRICHE
  267. C
  268. ICOND = 0
  269. CALL LIRCHA(NOMTRI,ICOND,IRETOU)
  270. IF(IERR .NE. 0)GOTO 9999
  271. IF(IRETOU .EQ. 0)THEN
  272. LOGTRI = .FALSE.
  273. ELSEIF(NOMTRI .EQ. 'TRICHE')THEN
  274. LOGTRI = .TRUE.
  275. ELSE
  276. LOGTRI = .FALSE.
  277. CALL ECRCHA(NOMTRI)
  278. ENDIF
  279. C
  280. C**** Calcul des sorties.
  281. C
  282. CALL PR1ECA(
  283. & ICEN,IRO,IROVIT,IROET,IGAMMA,
  284. & IVIT,IPRES,
  285. & LOGNEG,LOGBOR,MESERR,
  286. & VALER,VAL1,VAL2)
  287. C
  288. IERR0 = 0
  289. IF(LOGNEG)THEN
  290. C
  291. C******* Pression (energie thermique) ou densité negative
  292. C
  293. C
  294. C******* Message d'erreur standard
  295. C 41 2
  296. C %m1:8 = %r1 inférieur à %r2
  297. C
  298. MESCEL = MESERR(1)
  299. MOTERR(1:8) = MESCEL(1:8)
  300. REAERR(1) = REAL(VALER(1))
  301. REAERR(2) = 0.0
  302. CALL ERREUR(41)
  303. IF(LOGTRI)THEN
  304. * IERR = 0
  305. ELSE
  306. GOTO 9999
  307. ENDIF
  308. ENDIF
  309. IF(LOGBOR)THEN
  310. C
  311. C******* GAMMA dehor GAMMIN, GAMMAX
  312. C
  313. C******* Message d'erreur standard
  314. C 42 2
  315. C %m1:8 = %r1 non compris entre %r2 et %r3
  316. C
  317. MESCEL = MESERR(2)
  318. MOTERR(1:8) = MESCEL(1:8)
  319. REAERR(1) = REAL(VALER(2))
  320. REAERR(2) = REAL(VAL1)
  321. REAERR(3) = REAL(VAL2)
  322. CALL ERREUR(42)
  323. IF(LOGTRI)THEN
  324. * IERR = 0
  325. ELSE
  326. GOTO 9999
  327. ENDIF
  328. ENDIF
  329.  
  330. C**** Ecriture du CHPOINT contenant la pression.
  331. CALL ACTOBJ('CHPOINT ',IPRES,1)
  332. CALL ECROBJ('CHPOINT ',IPRES)
  333.  
  334. C**** Ecriture du CHPOINT contenant la vitesse.
  335. CALL ACTOBJ('CHPOINT ',IVIT,1)
  336. CALL ECROBJ('CHPOINT ',IVIT)
  337.  
  338. C
  339. 9999 CONTINUE
  340. END
  341.  
  342.  
  343.  

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