Télécharger kon17.eso

Retour à la liste

Numérotation des lignes :

kon17
  1. C KON17 SOURCE OF166741 24/12/13 21:16:16 12097
  2. SUBROUTINE KON17
  3. C
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : KON17
  9. C
  10. C DESCRIPTION : Voir KON1
  11. C Matrice de prconditionnement pour le variables
  12. C conservatives sous la forme d'un objet
  13. C elementaire de type MATRIK
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DM2S/SFME/LTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C APPELES (Outils) :
  23. C
  24. C APPELES (Calcul) :
  25. C
  26. C
  27. C************************************************************************
  28. C
  29. C PHRASE D'APPELLE GIBIANE
  30. C
  31. C MAT1 = 'KONV' 'VF' 'PERFMONO' 'GAMMCONS' LMOT1 MAIL1 CHPO1 CHPO2 CHPO3
  32. C CHPO4 CHPO5 CHPO6 ;
  33. C
  34. C LMOT1 : objet de type LISTMOTS
  35. C Noms des variables conservatives
  36. C Il contient dans l'ordre suivant: le noms de la densité,
  37. C de la vitesse, de l'énergie totale par unité de volume
  38. C
  39. C MAIL1 : maillage, SPG des champoints suivants
  40. C
  41. C CHPO0 : CHPOINT contenant le diametre de la cellule (pour le calcule
  42. C du pas de temps local).
  43. C
  44. C CHPO1 : CHPOINT contenant la masse volumique
  45. C (SPG = MAIL1 des elts une seule composante,
  46. C 'SCAL').
  47. C
  48. C CHPO2 : CHPOINT contenant la vitesse
  49. C (SPG = MAIL1 des elts, deux/trois composantes
  50. C 'UX', 'UY', 'UZ')
  51. C
  52. C CHPO3 : CHPOINT contenant la pression du gaz
  53. C (SPG = MAIL1 des elts, une seule composante,
  54. C 'SCAL').
  55. C
  56. C CHPO4 : CHPOINT contenant le "gamma" du gaz
  57. C (SPG = MAIL1 des elts, une seule composante,
  58. C 'SCAL').
  59. C
  60. C CHPO5 : CHPOINT contenant la premiere vitesse de cut-off
  61. C (SPG = MAIL1 des elts, une seule composante,
  62. C 'SCAL').
  63. C
  64. C CHPO6 : CHPOINT contenant la deuxieme vitesse de cut-off
  65. C (SPG = MAIL1 des elts, une seule composante,
  66. C 'SCAL').
  67. C
  68. C SORTIE
  69. C
  70. C MAT1 : objet de type MATRIK, qui contient la matrice gamma
  71. C (divisé par le pas de temps locale;
  72. C le pas de temps est calculé pour le système preconditionnné)
  73. C
  74. C************************************************************************
  75. C
  76. C HISTORIQUE (Anomalies et modifications éventuelles)
  77. C
  78. C HISTORIQUE :
  79. C
  80. C************************************************************************
  81. C
  82. IMPLICIT INTEGER(I-N)
  83. INTEGER ILIINC, IRET, NC, ICOND, IERR0, INDIC, JGN, JGM
  84. & ,IRN,NBCOMP,IVN,IPN,IGAMN,IGMAT,IUPRI1,IUPRI2
  85. & ,NBSOUS,NTYP,IGEOM,IDIAM
  86. CHARACTER*8 TYPE
  87. CHARACTER*4 MOT(1)
  88. C
  89. -INC PPARAM
  90. -INC CCOPTIO
  91. -INC SMLMOTS
  92. -INC SMCHPOI
  93. -INC SMELEME
  94. C
  95. C**** La list des inconnues
  96. C
  97. TYPE='LISTMOTS'
  98. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  99. IF(IERR .NE. 0) GOTO 9999
  100. MLMOTS = ILIINC
  101. SEGACT MLMOTS
  102. NC = MLMOTS.MOTS(/2)
  103. SEGDES MLMOTS
  104. IF(NC .NE. (IDIM+2))THEN
  105. MOTERR(1:40) = 'LISTINCO = ???'
  106. WRITE(IOIMP,*) MOTERR
  107. C
  108. C******* Message d'erreur standard
  109. C 21 2
  110. C Données incompatibles
  111. C
  112. CALL ERREUR(21)
  113. GOTO 9999
  114. ENDIF
  115. C
  116. C**** Le SPG
  117. C
  118. CALL LIROBJ('MAILLAGE',IGEOM,1,IRET)
  119. IF(IERR .NE. 0) GOTO 9999
  120. C
  121. C**** On controle que le MELEME soit de type POI1
  122. C Si non changer
  123. C
  124. MELEME = IGEOM
  125. SEGACT MELEME
  126. NBSOUS = MELEME.LISOUS(/1)
  127. NTYP = MELEME.ITYPEL
  128. C
  129. IF ((NBSOUS.NE.0).OR.(NTYP.NE.1)) THEN
  130. CALL CHANGE(MELEME,1)
  131. IPT1 = IGEOM
  132. SEGDES IPT1
  133. IF (IERR.NE.0) GOTO 9999
  134. ENDIF
  135. C
  136. C**** Initialisation des MOT(1)
  137. C
  138. MOT(1) = ' '
  139. C
  140. C**** Lecture du diametre minimum
  141. C
  142. ICOND = 1
  143. CALL LIROBJ('CHPOINT',IDIAM,ICOND,IRET)
  144. IF (IERR.NE.0) GOTO 9999
  145. C
  146. C**** Control du CHPOINT: QUEPOI
  147. C
  148. INDIC = 1
  149. NBCOMP = 1
  150. MOT(1) = 'SCAL'
  151. CALL QUEPOI(IDIAM, MELEME, INDIC, NBCOMP, MOT)
  152. IF(IERR .NE. 0)THEN
  153. IERR0 = IERR
  154.  
  155. C
  156. C******** Message d'erreur standard
  157. C -301 0 %m1:40
  158. C
  159. MOTERR = 'CHPO0 = ??? '
  160. WRITE(IOIMP,*) MOTERR(1:40)
  161. IERR = IERR0
  162. GOTO 9999
  163. ENDIF
  164. C
  165. C**** Lecture du CHPOINT RO
  166. C
  167. ICOND = 1
  168. CALL LIROBJ('CHPOINT',IRN,ICOND,IRET)
  169. IF (IERR.NE.0) GOTO 9999
  170. C
  171. C**** Control du CHPOINT: QUEPOI
  172. C
  173. C On controlle que le chpoint est non-partitione
  174. C
  175. C INDIC = 1 -> on impose le pointeur du support geometrique (MELEME)
  176. C INDIC = 0 -> on ne fait que verifier le support geometrique (MELEME)
  177. C
  178. C NBCOMP > 0 -> numero des composantes
  179. C
  180. C MOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  181. C
  182. INDIC = 1
  183. NBCOMP = 1
  184. MOT(1) = 'SCAL'
  185. CALL QUEPOI(IRN, MELEME, INDIC, NBCOMP, MOT)
  186. IF(IERR .NE. 0)THEN
  187. IERR0 = IERR
  188. IERR = 0
  189. C
  190. C******** Message d'erreur standard
  191. C -301 0 %m1:40
  192. C
  193. MOTERR = 'CHPO1 = ??? '
  194. WRITE(IOIMP,*) MOTERR(1:40)
  195. IERR = IERR0
  196. GOTO 9999
  197. ENDIF
  198. C
  199. C**** Lecture du CHPOINT vitesse
  200. C
  201. ICOND = 1
  202. CALL LIROBJ('CHPOINT',IVN,ICOND,IRET)
  203. IF (IERR.NE.0) GOTO 9999
  204. C
  205. C**** Control du CHPOINT
  206. C
  207. INDIC = 1
  208. NBCOMP = IDIM
  209. JGN = 4
  210. JGM = IDIM
  211. SEGINI MLMOTS
  212. MLMOTS.MOTS(1) = 'UX '
  213. MLMOTS.MOTS(2) = 'UY '
  214. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  215. CALL QUEPO1(IVN, MELEME, MLMOTS)
  216. IF(IERR .NE. 0)THEN
  217. IERR0 = IERR
  218. IERR = 0
  219. C
  220. C******** Message d'erreur standard
  221. C -301 0 %m1:40
  222. C
  223. MOTERR = 'CHPO2 = ??? '
  224. WRITE(IOIMP,*) MOTERR(1:40)
  225.  
  226. GOTO 9999
  227. ENDIF
  228. SEGSUP MLMOTS
  229. C
  230. C**** Lecture du CHPOINT PN
  231. C
  232. ICOND = 1
  233. CALL LIROBJ('CHPOINT',IPN,ICOND,IRET)
  234. IF (IERR.NE.0) GOTO 9999
  235. C
  236. C**** Control du CHPOINT
  237. C
  238. INDIC = 1
  239. NBCOMP = 1
  240. MOT(1) = 'SCAL'
  241. CALL QUEPOI(IPN, MELEME, INDIC, NBCOMP, MOT)
  242. IF(IERR .NE. 0)THEN
  243. IERR0 = IERR
  244.  
  245. C
  246. C******** Message d'erreur standard
  247. C -301 0 %m1:40
  248. C
  249. MOTERR = 'CHPO3 = ??? '
  250. WRITE(IOIMP,*) MOTERR(1:40)
  251.  
  252. GOTO 9999
  253. ENDIF
  254. C
  255. C**** Lecture du CHPOINT GAMMA
  256. C
  257. ICOND = 1
  258. CALL LIROBJ('CHPOINT',IGAMN,ICOND,IRET)
  259. IF(IERR .NE. 0)GOTO 9999
  260. C
  261. C**** Control du CHPOINT
  262. C
  263. INDIC = 1
  264. NBCOMP = 1
  265. MOT(1) = 'SCAL'
  266. CALL QUEPOI(IGAMN, MELEME, INDIC, NBCOMP, MOT)
  267. IF(IERR .NE. 0)THEN
  268. IERR0 = IERR
  269.  
  270. C
  271. C******* Message d'erreur standard
  272. C -301 0 %m1:40
  273. C
  274. MOTERR = 'CHPO4 = ??? '
  275. WRITE(IOIMP,*) MOTERR(1:40)
  276.  
  277. GOTO 9999
  278. ENDIF
  279. C
  280. C*** Reading IUPRI1
  281. C
  282. ICOND = 1
  283. CALL LIROBJ('CHPOINT',IUPRI1,ICOND,IRET)
  284. IF(IERR .NE. 0)GOTO 9999
  285. C
  286. C**** Control du CHPOINT
  287. C
  288. INDIC = 1
  289. NBCOMP = 1
  290. MOT(1) = 'SCAL'
  291. CALL QUEPOI(IUPRI1, MELEME, INDIC, NBCOMP, MOT)
  292. IF(IERR .NE. 0)THEN
  293. IERR0 = IERR
  294.  
  295. C
  296. C******* Message d'erreur standard
  297. C -301 0 %m1:40
  298. C
  299. MOTERR = 'CHPO5 = ??? '
  300. WRITE(IOIMP,*) MOTERR(1:40)
  301.  
  302. GOTO 9999
  303. ENDIF
  304. C
  305. C*** Reading IUPRI2
  306. C
  307. ICOND = 1
  308. CALL LIROBJ('CHPOINT',IUPRI2,ICOND,IRET)
  309. IF(IERR .NE. 0)GOTO 9999
  310. C
  311. C**** Control du CHPOINT
  312. C
  313. INDIC = 1
  314. NBCOMP = 1
  315. MOT(1) = 'SCAL'
  316. CALL QUEPOI(IUPRI2, MELEME, INDIC, NBCOMP, MOT)
  317. IF(IERR .NE. 0)THEN
  318. IERR0 = IERR
  319.  
  320. C
  321. C******* Message d'erreur standard
  322. C -301 0 %m1:40
  323. C
  324. MOTERR = 'CHPO6 = ??? '
  325. WRITE(IOIMP,*) MOTERR(1:40)
  326.  
  327. GOTO 9999
  328. ENDIF
  329. C
  330. C**** Calcul de la matrice \Gamma
  331. C
  332. CALL KON171(MELEME,IDIAM,IRN,IVN,IPN,IGAMN,ILIINC,IUPRI1,IUPRI2,
  333. & IGMAT)
  334. IF(IERR.NE.0) GOTO 9999
  335. C
  336. TYPE='MATRIK '
  337. CALL ECROBJ(TYPE,IGMAT)
  338. C
  339. 9999 RETURN
  340. END
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  

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