Télécharger kon18.eso

Retour à la liste

Numérotation des lignes :

kon18
  1. C KON18 SOURCE OF166741 24/12/13 21:16:19 12097
  2. SUBROUTINE KON18
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : KON17
  8. C
  9. C DESCRIPTION : Subroutine appellée par KON1
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Calcul de la Matrix de preconditionnement
  14. C pour les variables primitives (rho, u,v,p)
  15. C
  16. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  17. C
  18. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  19. C S. Kudriakov , DRN/DMT/SEMT/LTMF
  20. C************************************************************************
  21. C
  22. C APPELES (Calcul) :
  23. C
  24. C************************************************************************
  25. C
  26. C*** SYNTAXE
  27. C
  28. C Discrétisation en VF "cell-centered" des équations d'Euler pour
  29. C un gaz parfait mono-constituent polytropique
  30. C
  31. C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'GAMPRIM' MAIL1 LMOT1 LMOT2
  32. C CHPO1 CHPO2 CHPO3 CHPO4 CHPO5 CHPO6 ;
  33. C
  34. C ENTREES
  35. C
  36. C LMOT1 : objet de type LISTMOTS
  37. C Noms de composantes des variable duales de RMAT1.
  38. C Il contient dans l'ordre suivant: le noms de la densité,
  39. C du momentum, de l'énergie totale par unité de volume
  40. C
  41. C LMOT2 : objet de type LISTMOTS
  42. C Noms de composantes des variable primales de RMAT1.
  43. C Il contient dans l'ordre suivant: le noms de la densité,
  44. C de la vitesse, de la pression.
  45. C
  46. C MAIL1 : SPG
  47. C
  48. C CHPO0 : CHPOINT contenant le diametre de la cellule (pour le calcul
  49. C du pas de temps local).
  50. C
  51. C CHPO1 : CHPOINT contenant la masse volumique
  52. C (SPG = MAIL1, une seule composante,
  53. C 'SCAL').
  54. C
  55. C CHPO2 : CHPOINT contenant la vitesse
  56. C (SPG = MAIL1, deux/trois composantes
  57. C 'UX', 'UY', 'UZ')
  58. C
  59. C CHPO3 : CHPOINT contenant la pression du gaz
  60. C (SPG = MAIL1, une seule composante,
  61. C 'SCAL').
  62. C
  63. C CHPO4 : CHPOINT contenant le "gamma" du gaz
  64. C (SPG = MAIL1, une seule composante,
  65. C 'SCAL').
  66. C
  67. C CHPO5 : CHPOINT contenant la vitesse de "cut-off"
  68. C (SPG = MAIL1, une seule composante,
  69. C 'SCAL').
  70. C
  71. C CHPO6 : CHPOINT contenant la deuxieme vitesse de "cut-off"
  72. C (SPG = MAIL1, une seule composante,
  73. C 'SCAL').
  74. C
  75. C SORTIES
  76. C
  77. C RMAT1 : objet de type MATRIK
  78. C (SPG = MAIL1)
  79. C
  80. C************************************************************************
  81. C
  82. C HISTORIQUE (Anomalies et modifications éventuelles)
  83. C
  84. C HISTORIQUE :
  85. C
  86. C************************************************************************
  87. C
  88. IMPLICIT INTEGER(I-N)
  89.  
  90. -INC PPARAM
  91. -INC CCOPTIO
  92. -INC SMLMOTS
  93. -INC SMCHPOI
  94. -INC SMELEME
  95. POINTEUR MLMVIT.MLMOTS
  96. C
  97. INTEGER IRET, INDIC, NBCOMP, NESP, JGN, JGM
  98. & ,MELEMC, IDIAM
  99. & ,IJACO, ILIINC, ILIINP, NC
  100. & ,IRN, IVN, IPN, IGAMN, IUPRI, IUPRI2
  101. C
  102. CHARACTER*8 TYPE
  103. CHARACTER*4 MOT
  104. CHARACTER*(40) MESERR
  105. C
  106. C*******************************
  107. C**** La table domaine *********
  108. C*******************************
  109. C
  110. CALL LIROBJ('MAILLAGE',MELEMC,1,IRET)
  111. IF(IERR .NE. 0)GOTO 9999
  112. C
  113. NESP=0
  114. C
  115. C**** La list des inconnues duales (variables conservatives)
  116. C
  117. TYPE='LISTMOTS'
  118. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  119. IF(IERR .NE. 0) GOTO 9999
  120. MLMOTS = ILIINC
  121. SEGACT MLMOTS
  122. NC = MLMOTS.MOTS(/2)
  123. SEGDES MLMOTS
  124. IF(NC .NE. (IDIM+2+NESP))THEN
  125. MOTERR(1:40) = 'LISTINCO = ???'
  126. WRITE(IOIMP,*) MOTERR
  127. C
  128. C******* Message d'erreur standard
  129. C 21 2
  130. C Données incompatibles
  131. C
  132. CALL ERREUR(21)
  133. GOTO 9999
  134. ENDIF
  135. C
  136. C**** La list des inconnues primales (variables primitives)
  137. C
  138. TYPE='LISTMOTS'
  139. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  140. IF(IERR .NE. 0) GOTO 9999
  141. MLMOTS = ILIINP
  142. SEGACT MLMOTS
  143. NC = MLMOTS.MOTS(/2)
  144. SEGDES MLMOTS
  145. IF(NC .NE. (IDIM+2+NESP))THEN
  146. MOTERR(1:40) = 'LISTINCO = ???'
  147. WRITE(IOIMP,*) MOTERR
  148. C
  149. C******* Message d'erreur standard
  150. C 21 2
  151. C Données incompatibles
  152. C
  153. CALL ERREUR(21)
  154. GOTO 9999
  155. ENDIF
  156. C
  157. C**** Lecture du diametre minimum
  158. C
  159. CALL LIROBJ('CHPOINT',IDIAM,1,IRET)
  160. IF (IERR.NE.0) GOTO 9999
  161. C
  162. C**** Control du CHPOINT: QUEPOI
  163. C
  164. INDIC = 1
  165. NBCOMP = 1
  166. MOT = 'SCAL'
  167. CALL QUEPOI(IDIAM, MELEMC, INDIC, NBCOMP, MOT)
  168. C
  169. C**** La densité au centre
  170. C
  171. TYPE = 'CHPOINT '
  172. CALL LIROBJ(TYPE,IRN,1,IRET)
  173. IF(IERR .NE. 0) GOTO 9999
  174. C
  175. C**** Control du CHPOINT: QUEPOI
  176. C
  177. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  178. C N.B. Le CHPOINT peut changer de structure pour
  179. C avoir SPG = ICEN!!!!
  180. C INDIC = 0 -> on ne fait que verifier le support geometrique
  181. C (ICEN). Si le SPG sont differents INDIC = -4 en sortie
  182. C
  183. C NBCOMP > 0 -> numero des composantes
  184. C
  185. C MOT = ' ' obligatoire s'on connais pas les noms des composantes
  186. C
  187. INDIC = 1
  188. NBCOMP = 1
  189. MOT = 'SCAL'
  190. CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
  191. IF(IERR .NE. 0) GOTO 9999
  192. C
  193. C******* La vitesse au centre
  194. C
  195. TYPE = 'CHPOINT '
  196. CALL LIROBJ(TYPE,IVN,1,IRET)
  197. IF(IERR .NE. 0) GOTO 9999
  198. JGN = 4
  199. JGM = IDIM
  200. SEGINI MLMVIT
  201. MLMVIT.MOTS(1) = 'UX '
  202. MLMVIT.MOTS(2) = 'UY '
  203. IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ '
  204. CALL QUEPO1(IVN, MELEMC, MLMVIT)
  205. SEGSUP MLMVIT
  206. IF(IERR .NE. 0) GOTO 9999
  207. C
  208. C******* La pression au centre
  209. C
  210. TYPE = 'CHPOINT '
  211. CALL LIROBJ(TYPE,IPN,1,IRET)
  212. IF(IERR .NE. 0) GOTO 9999
  213. INDIC = 1
  214. NBCOMP = 1
  215. MOT = 'SCAL'
  216. CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT)
  217. IF(IERR .NE. 0) GOTO 9999
  218. C
  219. C******* Gamma au centre
  220. C
  221. TYPE = 'CHPOINT '
  222. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  223. IF(IERR .NE. 0) GOTO 9999
  224. INDIC = 1
  225. NBCOMP = 1
  226. MOT = 'SCAL'
  227. CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT)
  228. IF(IERR .NE. 0) GOTO 9999
  229. C----------------------------------------------------
  230. C******* Vitess de "cut-off" au centre
  231. C----------------------------------------------------
  232. TYPE = 'CHPOINT '
  233. CALL LIROBJ(TYPE,IUPRI,1,IRET)
  234. IF(IERR .NE. 0) GOTO 9999
  235. INDIC = 1
  236. NBCOMP = 1
  237. MOT = 'SCAL'
  238. CALL QUEPOI(IUPRI, MELEMC, INDIC, NBCOMP, MOT)
  239. IF(IERR .NE. 0) GOTO 9999
  240. C----------------------------------------------------
  241. C******* Vitess de "cut-off" au centre
  242. C----------------------------------------------------
  243. TYPE = 'CHPOINT '
  244. CALL LIROBJ(TYPE,IUPRI2,1,IRET)
  245. IF(IERR .NE. 0) GOTO 9999
  246. INDIC = 1
  247. NBCOMP = 1
  248. MOT = 'SCAL'
  249. CALL QUEPOI(IUPRI2, MELEMC, INDIC, NBCOMP, MOT)
  250. IF(IERR .NE. 0) GOTO 9999
  251.  
  252. C
  253. C******* Calcul du jacobien
  254. C
  255. IF(IDIM .EQ. 2)THEN
  256. CALL KON181(MELEMC,IDIAM, ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,
  257. & IUPRI,IUPRI2,IJACO)
  258. IF(IERR .NE. 0) GOTO 9999
  259. ELSE
  260. CALL ERREUR(251)
  261. GOTO 9999
  262. ENDIF
  263. C
  264. C**** Ecriture des resultats
  265. C
  266. TYPE='MATRIK '
  267. CALL ECROBJ(TYPE,IJACO)
  268. 9999 CONTINUE
  269. RETURN
  270. END
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  

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