Télécharger prijac.eso

Retour à la liste

Numérotation des lignes :

  1. C PRIJAC SOURCE CHAT 05/01/13 02:26:47 5004
  2. SUBROUTINE PRIJAC
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRIJAC
  8. C
  9. C DESCRIPTION : Subroutine appellée par PRIMIT
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Calcul du jacobien dCONS/dPRIM
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  18. C
  19. C************************************************************************
  20. C
  21. C APPELES (Calcul) : PRIJA1, PRIJA2
  22. C
  23. C************************************************************************
  24. C
  25. C*** SYNTAXE
  26. C
  27. C Discrétisation en VF "cell-centered" des équations d'Euler pour
  28. C un gaz parfait mono-constituent polytropique
  29. C
  30. C RMAT1 = 'PRIM' 'CONSPRIM' MAIL1 LMOT1 LMOT2
  31. C CHPO1 CHPO2 CHPO3 CHPO4 ;
  32. C
  33. C ENTREES
  34. C
  35. C LMOT1 : objet de type LISTMOTS
  36. C Noms de composantes des variable duales de RMAT1.
  37. C Il contient dans l'ordre suivant: le noms de la densité,
  38. C du momentum, de l'énergie totale par unité de volume
  39. C
  40. C LMOT2 : objet de type LISTMOTS
  41. C Noms de composantes des variable primales de RMAT1.
  42. C Il contient dans l'ordre suivant: le noms de la densité,
  43. C de la vitesse, de la pression.
  44. C
  45. C MAIL1 : SPG des CHPOINTS
  46. C
  47. C CHPO1 : CHPOINT contenant la masse volumique
  48. C (une seule composante, 'SCAL').
  49. C
  50. C CHPO2 : CHPOINT contenant la vitesse
  51. C (deux/trois composantes
  52. C 'UX', 'UY', 'UZ')
  53. C
  54. C CHPO3 : CHPOINT contenant la pression du gaz
  55. C (une seule composante,
  56. C 'SCAL').
  57. C
  58. C CHPO4 : CHPOINT contenant le "gamma" du gaz
  59. C (une seule composante,
  60. C 'SCAL').
  61. C
  62. C SORTIES
  63. C
  64. C RMAT1 : objet de type MATRIK
  65. C (SPG = TAB1 . 'CENTRE')
  66. C
  67. C************************************************************************
  68. C
  69. C HISTORIQUE (Anomalies et modifications éventuelles)
  70. C
  71. C HISTORIQUE :
  72. C
  73. C************************************************************************
  74. C
  75. IMPLICIT INTEGER(I-N)
  76. -INC CCOPTIO
  77. -INC SMLMOTS
  78. -INC SMCHPOI
  79. -INC SMELEME
  80. POINTEUR MLMVIT.MLMOTS
  81. C
  82. C**** Variables de COOPTIO
  83. C
  84. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  85. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  86. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  87. C & ,IECHO, IIMPI, IOSPI
  88. C & ,IDIM, IFICLE, IPREFI
  89. C & ,MCOORD
  90. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  91. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  92. C & ,NORINC,NORVAL,NORIND,NORVAD
  93. C & ,NUCROU, IPSAUV
  94. C
  95. INTEGER IRET, INDIC, NBCOMP, NESP, JGN, JGM
  96. & ,MELEMC
  97. & ,IJACO, ILIINC, ILIINP, NC
  98. & ,IRN, IVN, IPN, IGAMN
  99. C
  100. CHARACTER*8 TYPE
  101. CHARACTER*4 MOT
  102. CHARACTER*(40) MESERR
  103. C
  104. C*********************
  105. C**** Le SPG *********
  106. C*********************
  107. C
  108. TYPE='MAILLAGE'
  109. CALL LIROBJ(TYPE,MELEMC,1,IRET)
  110. IF(IERR .NE. 0)GOTO 9999
  111. C
  112. NESP=0
  113. C
  114. C**** La list des inconnues duales (variables conservatives)
  115. C
  116. TYPE='LISTMOTS'
  117. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  118. IF(IERR .NE. 0) GOTO 9999
  119. MLMOTS = ILIINC
  120. SEGACT MLMOTS
  121. NC = MLMOTS.MOTS(/2)
  122. SEGDES MLMOTS
  123. IF(NC .NE. (IDIM+2+NESP))THEN
  124. MOTERR(1:40) = 'LISTINCO = ???'
  125. WRITE(IOIMP,*) MOTERR
  126. C
  127. C******* Message d'erreur standard
  128. C 21 2
  129. C Données incompatibles
  130. C
  131. CALL ERREUR(21)
  132. GOTO 9999
  133. ENDIF
  134. C
  135. C**** La list des inconnues primales (variables primitives)
  136. C
  137. TYPE='LISTMOTS'
  138. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  139. IF(IERR .NE. 0) GOTO 9999
  140. MLMOTS = ILIINP
  141. SEGACT MLMOTS
  142. NC = MLMOTS.MOTS(/2)
  143. SEGDES MLMOTS
  144. IF(NC .NE. (IDIM+2+NESP))THEN
  145. MOTERR(1:40) = 'LISTINCO = ???'
  146. WRITE(IOIMP,*) MOTERR
  147. C
  148. C******* Message d'erreur standard
  149. C 21 2
  150. C Données incompatibles
  151. C
  152. CALL ERREUR(21)
  153. GOTO 9999
  154. ENDIF
  155. C
  156. C******* La densité au centre
  157. C
  158. TYPE = 'CHPOINT '
  159. CALL LIROBJ(TYPE,IRN,1,IRET)
  160. IF(IERR .NE. 0) GOTO 9999
  161. C
  162. C**** Control du CHPOINT: QUEPOI
  163. C
  164. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  165. C N.B. Le CHPOINT peut changer de structure pour
  166. C avoir SPG = ICEN!!!!
  167. C INDIC = 0 -> on ne fait que verifier le support geometrique
  168. C (ICEN). Si le SPG sont differents INDIC = -4 en sortie
  169. C
  170. C NBCOMP > 0 -> numero des composantes
  171. C
  172. C MOT = ' ' obligatoire s'on connais pas les noms des composantes
  173. C
  174. INDIC = 1
  175. NBCOMP = 1
  176. MOT = 'SCAL'
  177. CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
  178. IF(IERR .NE. 0) GOTO 9999
  179. C
  180. C******* La vitesse au centre
  181. C
  182. TYPE = 'CHPOINT '
  183. CALL LIROBJ(TYPE,IVN,1,IRET)
  184. IF(IERR .NE. 0) GOTO 9999
  185. JGN = 4
  186. JGM = IDIM
  187. SEGINI MLMVIT
  188. MLMVIT.MOTS(1) = 'UX '
  189. MLMVIT.MOTS(2) = 'UY '
  190. IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ '
  191. CALL QUEPO1(IVN, MELEMC, MLMVIT)
  192. SEGSUP MLMVIT
  193. IF(IERR .NE. 0) GOTO 9999
  194. C
  195. C******* La pression au centre
  196. C
  197. TYPE = 'CHPOINT '
  198. CALL LIROBJ(TYPE,IPN,1,IRET)
  199. IF(IERR .NE. 0) GOTO 9999
  200. INDIC = 1
  201. NBCOMP = 1
  202. MOT = 'SCAL'
  203. CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT)
  204. IF(IERR .NE. 0) GOTO 9999
  205. C
  206. C******* Gamma au centre
  207. C
  208. TYPE = 'CHPOINT '
  209. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  210. IF(IERR .NE. 0) GOTO 9999
  211. INDIC = 1
  212. NBCOMP = 1
  213. MOT = 'SCAL'
  214. CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT)
  215. IF(IERR .NE. 0) GOTO 9999
  216. C
  217. C******* Calcul du jacobien
  218. C
  219. IF(IDIM .EQ. 2)THEN
  220. CALL PRIJA1(MELEMC,ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,IJACO)
  221. IF(IERR .NE. 0) GOTO 9999
  222. ELSE
  223. CALL PRIJA2(MELEMC,ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,IJACO)
  224. IF(IERR .NE. 0) GOTO 9999
  225. ENDIF
  226. C
  227. C**** Ecriture des resultats
  228. C
  229. TYPE='MATRIK '
  230. CALL ECROBJ(TYPE,IJACO)
  231. 9999 CONTINUE
  232. RETURN
  233. END
  234.  
  235.  
  236.  
  237.  

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