Télécharger prim1e.eso

Retour à la liste

Numérotation des lignes :

prim1e
  1. C PRIM1E SOURCE OF166741 24/12/13 21:17:14 12097
  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**** Les variables
  86. C
  87. IMPLICIT INTEGER(I-N)
  88. INTEGER ICOND, IRETOU, INDIC, NBCOMP, IERR0
  89. & , ICEN, IRO, IROVIT, IROET, IGAMMA
  90. & , IPRES, IVIT, JGN, JGM
  91. REAL*8 VALER(2),VAL1,VAL2
  92. CHARACTER*(40) MESERR(2),MESCEL
  93. CHARACTER*(4) MOT(1)
  94. CHARACTER*(6) NOMTRI
  95. LOGICAL LOGNEG, LOGBOR, LOGTRI
  96. C
  97. C**** Les Includes
  98. C
  99.  
  100. -INC PPARAM
  101. -INC CCOPTIO
  102. -INC SMCHPOI
  103. -INC SMLMOTS
  104. C
  105. C**** Initialisation des parametres d'erreur
  106. C
  107. LOGNEG = .FALSE.
  108. LOGBOR = .FALSE.
  109. MESCEL = ' '
  110. MESERR(1) = MESCEL
  111. MESERR(2) = MESCEL
  112. MOTERR(1:40) = MESCEL
  113. VALER(1) = 0.0D0
  114. VALER(2) = 0.0D0
  115. VAL1 = 0.0D0
  116. VAL2 = 0.0D0
  117. C
  118. C**** Initialisation des MOT(1)
  119. C
  120. MOT(1) = ' '
  121. C
  122. C**** Lecture du CHPOINT RO
  123. C
  124. ICOND = 1
  125. CALL LIROBJ('CHPOINT ',IRO,ICOND,IRETOU)
  126. CALL ACTOBJ('CHPOINT ',IRO,1)
  127. IF (IERR.NE.0) GOTO 9999
  128. C
  129. C**** On cherche le pointeur de son maillage et on l'impose sur les
  130. C autres CHPOINT
  131. C
  132. MCHPOI = IRO
  133. SEGACT MCHPOI
  134. MSOUPO = MCHPOI.IPCHP(1)
  135. SEGACT MSOUPO
  136. ICEN = MSOUPO.IGEOC
  137. SEGDES MSOUPO
  138. SEGDES MCHPOI
  139. C
  140. C**** Control du CHPOINT: QUEPOI
  141. C
  142. C On controlle que le chpoint est non-partitione
  143. C
  144. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  145. C INDIC = 0 -> on ne fait que verifier le support geometrique (ICEN)
  146. C
  147. C NBCOMP > 0 -> numero des composantes
  148. C
  149. C MOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  150. C
  151. INDIC = 1
  152. NBCOMP = 1
  153. MOT(1) = 'SCAL'
  154. CALL QUEPOI(IRO, ICEN, INDIC, NBCOMP, MOT)
  155. IF(IERR .NE. 0)THEN
  156. IERR0 = IERR
  157.  
  158. C
  159. C******** Message d'erreur standard
  160. C -301 0 %m1:40
  161. C
  162. MOTERR = 'CHPO1 = ??? '
  163. WRITE(IOIMP,*) MOTERR(1:40)
  164.  
  165. GOTO 9999
  166. ENDIF
  167. C
  168. C**** Lecture du CHPOINT DEBIT.
  169. C
  170. ICOND = 1
  171. CALL LIROBJ('CHPOINT',IROVIT,ICOND,IRETOU)
  172. CALL ACTOBJ('CHPOINT',IROVIT,1)
  173. IF (IERR.NE.0) GOTO 9999
  174. C
  175. C**** Control du CHPOINT
  176. C
  177. INDIC = 1
  178. NBCOMP = IDIM
  179. JGN = 4
  180. JGM = IDIM
  181. SEGINI MLMOTS
  182. MLMOTS.MOTS(1) = 'UX '
  183. MLMOTS.MOTS(2) = 'UY '
  184. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  185. CALL QUEPO1(IROVIT, ICEN, MLMOTS)
  186. IF(IERR .NE. 0)THEN
  187. IERR0 = IERR
  188.  
  189. C
  190. C******** Message d'erreur standard
  191. C -301 0 %m1:40
  192. C
  193. MOTERR = 'CHPO2 = ??? '
  194. WRITE(IOIMP,*) MOTERR(1:40)
  195.  
  196. GOTO 9999
  197. ENDIF
  198. SEGSUP MLMOTS
  199. C
  200. C**** Lecture du CHPOINT ROET
  201. C
  202. ICOND = 1
  203. CALL LIROBJ('CHPOINT',IROET,ICOND,IRETOU)
  204. CALL ACTOBJ('CHPOINT',IROET,1)
  205. IF (IERR.NE.0) GOTO 9999
  206. C
  207. C**** Control du CHPOINT
  208. C
  209. INDIC = 1
  210. NBCOMP = 1
  211. MOT(1) = 'SCAL'
  212. CALL QUEPOI(IROET, ICEN, INDIC, NBCOMP, MOT)
  213. IF(IERR .NE. 0)THEN
  214. IERR0 = IERR
  215.  
  216. C
  217. C******** Message d'erreur standard
  218. C -301 0 %m1:40
  219. C
  220. MOTERR = 'CHPO3 = ??? '
  221. WRITE(IOIMP,*) MOTERR(1:40)
  222.  
  223. GOTO 9999
  224. ENDIF
  225. C
  226. C**** Lecture du CHPOINT GAMMA
  227. C
  228. ICOND = 1
  229. CALL LIROBJ('CHPOINT',IGAMMA,ICOND,IRETOU)
  230. CALL ACTOBJ('CHPOINT',IGAMMA,1)
  231. IF(IERR .NE. 0)GOTO 9999
  232. C
  233. C**** Control du CHPOINT
  234. C
  235. INDIC = 1
  236. NBCOMP = 1
  237. MOT(1) = 'SCAL'
  238. CALL QUEPOI(IGAMMA, ICEN, INDIC, NBCOMP, MOT)
  239. IF(IERR .NE. 0)THEN
  240. IERR0 = IERR
  241.  
  242. C
  243. C******* Message d'erreur standard
  244. C -301 0 %m1:40
  245. C
  246. MOTERR = 'CHPO4 = ??? '
  247. WRITE(IOIMP,*) MOTERR(1:40)
  248.  
  249. GOTO 9999
  250. ENDIF
  251. C
  252. C******* Option TRICHE
  253. C
  254. ICOND = 0
  255. CALL LIRCHA(NOMTRI,ICOND,IRETOU)
  256. IF(IERR .NE. 0)GOTO 9999
  257. IF(IRETOU .EQ. 0)THEN
  258. LOGTRI = .FALSE.
  259. ELSEIF(NOMTRI .EQ. 'TRICHE')THEN
  260. LOGTRI = .TRUE.
  261. ELSE
  262. LOGTRI = .FALSE.
  263. CALL ECRCHA(NOMTRI)
  264. ENDIF
  265. C
  266. C**** Calcul des sorties.
  267. C
  268. CALL PR1ECA(
  269. & ICEN,IRO,IROVIT,IROET,IGAMMA,
  270. & IVIT,IPRES,
  271. & LOGNEG,LOGBOR,MESERR,
  272. & VALER,VAL1,VAL2)
  273. C
  274. IERR0 = 0
  275. IF(LOGNEG)THEN
  276. C
  277. C******* Pression (energie thermique) ou densité negative
  278. C
  279. C
  280. C******* Message d'erreur standard
  281. C 41 2
  282. C %m1:8 = %r1 inférieur à %r2
  283. C
  284. MESCEL = MESERR(1)
  285. MOTERR(1:8) = MESCEL(1:8)
  286. REAERR(1) = REAL(VALER(1))
  287. REAERR(2) = 0.0
  288. CALL ERREUR(41)
  289. IF(LOGTRI)THEN
  290. * IERR = 0
  291. ELSE
  292. GOTO 9999
  293. ENDIF
  294. ENDIF
  295. IF(LOGBOR)THEN
  296. C
  297. C******* GAMMA dehor GAMMIN, GAMMAX
  298. C
  299. C******* Message d'erreur standard
  300. C 42 2
  301. C %m1:8 = %r1 non compris entre %r2 et %r3
  302. C
  303. MESCEL = MESERR(2)
  304. MOTERR(1:8) = MESCEL(1:8)
  305. REAERR(1) = REAL(VALER(2))
  306. REAERR(2) = REAL(VAL1)
  307. REAERR(3) = REAL(VAL2)
  308. CALL ERREUR(42)
  309. IF(LOGTRI)THEN
  310. * IERR = 0
  311. ELSE
  312. GOTO 9999
  313. ENDIF
  314. ENDIF
  315.  
  316. C**** Ecriture du CHPOINT contenant la pression.
  317. CALL ACTOBJ('CHPOINT ',IPRES,1)
  318. CALL ECROBJ('CHPOINT ',IPRES)
  319.  
  320. C**** Ecriture du CHPOINT contenant la vitesse.
  321. CALL ACTOBJ('CHPOINT ',IVIT,1)
  322. CALL ECROBJ('CHPOINT ',IVIT)
  323.  
  324. C
  325. 9999 CONTINUE
  326. END
  327.  
  328.  
  329.  
  330.  
  331.  

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