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.  
  77. -INC PPARAM
  78. -INC CCOPTIO
  79. -INC SMLMOTS
  80. -INC SMCHPOI
  81. -INC SMELEME
  82. POINTEUR MLMVIT.MLMOTS
  83. C
  84. C**** Variables de COOPTIO
  85. C
  86. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  87. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  88. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  89. C & ,IECHO, IIMPI, IOSPI
  90. C & ,IDIM, IFICLE, IPREFI
  91. C & ,MCOORD
  92. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  93. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  94. C & ,NORINC,NORVAL,NORIND,NORVAD
  95. C & ,NUCROU, IPSAUV
  96. C
  97. INTEGER IRET, INDIC, NBCOMP, NESP, JGN, JGM
  98. & ,MELEMC
  99. & ,IJACO, ILIINC, ILIINP, NC
  100. & ,IRN, IVN, IPN, IGAMN
  101. C
  102. CHARACTER*8 TYPE
  103. CHARACTER*4 MOT
  104. CHARACTER*(40) MESERR
  105. C
  106. C*********************
  107. C**** Le SPG *********
  108. C*********************
  109. C
  110. TYPE='MAILLAGE'
  111. CALL LIROBJ(TYPE,MELEMC,1,IRET)
  112. IF(IERR .NE. 0)GOTO 9999
  113. C
  114. NESP=0
  115. C
  116. C**** La list des inconnues duales (variables conservatives)
  117. C
  118. TYPE='LISTMOTS'
  119. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  120. IF(IERR .NE. 0) GOTO 9999
  121. MLMOTS = ILIINC
  122. SEGACT MLMOTS
  123. NC = MLMOTS.MOTS(/2)
  124. SEGDES MLMOTS
  125. IF(NC .NE. (IDIM+2+NESP))THEN
  126. MOTERR(1:40) = 'LISTINCO = ???'
  127. WRITE(IOIMP,*) MOTERR
  128. C
  129. C******* Message d'erreur standard
  130. C 21 2
  131. C Données incompatibles
  132. C
  133. CALL ERREUR(21)
  134. GOTO 9999
  135. ENDIF
  136. C
  137. C**** La list des inconnues primales (variables primitives)
  138. C
  139. TYPE='LISTMOTS'
  140. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  141. IF(IERR .NE. 0) GOTO 9999
  142. MLMOTS = ILIINP
  143. SEGACT MLMOTS
  144. NC = MLMOTS.MOTS(/2)
  145. SEGDES MLMOTS
  146. IF(NC .NE. (IDIM+2+NESP))THEN
  147. MOTERR(1:40) = 'LISTINCO = ???'
  148. WRITE(IOIMP,*) MOTERR
  149. C
  150. C******* Message d'erreur standard
  151. C 21 2
  152. C Données incompatibles
  153. C
  154. CALL ERREUR(21)
  155. GOTO 9999
  156. ENDIF
  157. C
  158. C******* La densité au centre
  159. C
  160. TYPE = 'CHPOINT '
  161. CALL LIROBJ(TYPE,IRN,1,IRET)
  162. IF(IERR .NE. 0) GOTO 9999
  163. C
  164. C**** Control du CHPOINT: QUEPOI
  165. C
  166. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  167. C N.B. Le CHPOINT peut changer de structure pour
  168. C avoir SPG = ICEN!!!!
  169. C INDIC = 0 -> on ne fait que verifier le support geometrique
  170. C (ICEN). Si le SPG sont differents INDIC = -4 en sortie
  171. C
  172. C NBCOMP > 0 -> numero des composantes
  173. C
  174. C MOT = ' ' obligatoire s'on connais pas les noms des composantes
  175. C
  176. INDIC = 1
  177. NBCOMP = 1
  178. MOT = 'SCAL'
  179. CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
  180. IF(IERR .NE. 0) GOTO 9999
  181. C
  182. C******* La vitesse au centre
  183. C
  184. TYPE = 'CHPOINT '
  185. CALL LIROBJ(TYPE,IVN,1,IRET)
  186. IF(IERR .NE. 0) GOTO 9999
  187. JGN = 4
  188. JGM = IDIM
  189. SEGINI MLMVIT
  190. MLMVIT.MOTS(1) = 'UX '
  191. MLMVIT.MOTS(2) = 'UY '
  192. IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ '
  193. CALL QUEPO1(IVN, MELEMC, MLMVIT)
  194. SEGSUP MLMVIT
  195. IF(IERR .NE. 0) GOTO 9999
  196. C
  197. C******* La pression au centre
  198. C
  199. TYPE = 'CHPOINT '
  200. CALL LIROBJ(TYPE,IPN,1,IRET)
  201. IF(IERR .NE. 0) GOTO 9999
  202. INDIC = 1
  203. NBCOMP = 1
  204. MOT = 'SCAL'
  205. CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT)
  206. IF(IERR .NE. 0) GOTO 9999
  207. C
  208. C******* Gamma au centre
  209. C
  210. TYPE = 'CHPOINT '
  211. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  212. IF(IERR .NE. 0) GOTO 9999
  213. INDIC = 1
  214. NBCOMP = 1
  215. MOT = 'SCAL'
  216. CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT)
  217. IF(IERR .NE. 0) GOTO 9999
  218. C
  219. C******* Calcul du jacobien
  220. C
  221. IF(IDIM .EQ. 2)THEN
  222. CALL PRIJA1(MELEMC,ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,IJACO)
  223. IF(IERR .NE. 0) GOTO 9999
  224. ELSE
  225. CALL PRIJA2(MELEMC,ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,IJACO)
  226. IF(IERR .NE. 0) GOTO 9999
  227. ENDIF
  228. C
  229. C**** Ecriture des resultats
  230. C
  231. TYPE='MATRIK '
  232. CALL ECROBJ(TYPE,IJACO)
  233. 9999 CONTINUE
  234. RETURN
  235. END
  236.  
  237.  
  238.  
  239.  

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