Télécharger kon17.eso

Retour à la liste

Numérotation des lignes :

  1. C KON17 SOURCE CHAT 06/03/29 21:24:17 5360
  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. 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
  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, IFICLE, IPREFI
  94. C
  95. IMPLICIT INTEGER(I-N)
  96. INTEGER ILIINC, IRET, NC, ICOND, IERR0, INDIC, JGN, JGM
  97. & ,IRN,NBCOMP,IVN,IPN,IGAMN,IGMAT,IUPRI1,IUPRI2
  98. & ,NBSOUS,NTYP,IGEOM,IDIAM
  99. CHARACTER*8 TYPE
  100. CHARACTER*4 MOT(1)
  101. C
  102. -INC CCOPTIO
  103. -INC SMLMOTS
  104. -INC SMCHPOI
  105. -INC SMELEME
  106. C
  107. C**** La list des inconnues
  108. C
  109. TYPE='LISTMOTS'
  110. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  111. IF(IERR .NE. 0) GOTO 9999
  112. MLMOTS = ILIINC
  113. SEGACT MLMOTS
  114. NC = MLMOTS.MOTS(/2)
  115. SEGDES MLMOTS
  116. IF(NC .NE. (IDIM+2))THEN
  117. MOTERR(1:40) = 'LISTINCO = ???'
  118. WRITE(IOIMP,*) MOTERR
  119. C
  120. C******* Message d'erreur standard
  121. C 21 2
  122. C Données incompatibles
  123. C
  124. CALL ERREUR(21)
  125. GOTO 9999
  126. ENDIF
  127. C
  128. C**** Le SPG
  129. C
  130. CALL LIROBJ('MAILLAGE',IGEOM,1,IRET)
  131. IF(IERR .NE. 0) GOTO 9999
  132. C
  133. C**** On controle que le MELEME soit de type POI1
  134. C Si non changer
  135. C
  136. MELEME = IGEOM
  137. SEGACT MELEME
  138. NBSOUS = MELEME.LISOUS(/1)
  139. NTYP = MELEME.ITYPEL
  140. C
  141. IF ((NBSOUS.NE.0).OR.(NTYP.NE.1)) THEN
  142. CALL CHANGE(MELEME,1)
  143. IPT1 = IGEOM
  144. SEGDES IPT1
  145. IF (IERR.NE.0) GOTO 9999
  146. ENDIF
  147. C
  148. C**** Initialisation des MOT(1)
  149. C
  150. MOT(1) = ' '
  151. C
  152. C**** Lecture du diametre minimum
  153. C
  154. ICOND = 1
  155. CALL LIROBJ('CHPOINT',IDIAM,ICOND,IRET)
  156. IF (IERR.NE.0) GOTO 9999
  157. C
  158. C**** Control du CHPOINT: QUEPOI
  159. C
  160. INDIC = 1
  161. NBCOMP = 1
  162. MOT(1) = 'SCAL'
  163. CALL QUEPOI(IDIAM, MELEME, INDIC, NBCOMP, MOT)
  164. IF(IERR .NE. 0)THEN
  165. IERR0 = IERR
  166.  
  167. C
  168. C******** Message d'erreur standard
  169. C -301 0 %m1:40
  170. C
  171. MOTERR = 'CHPO0 = ??? '
  172. WRITE(IOIMP,*) MOTERR(1:40)
  173. IERR = IERR0
  174. GOTO 9999
  175. ENDIF
  176. C
  177. C**** Lecture du CHPOINT RO
  178. C
  179. ICOND = 1
  180. CALL LIROBJ('CHPOINT',IRN,ICOND,IRET)
  181. IF (IERR.NE.0) GOTO 9999
  182. C
  183. C**** Control du CHPOINT: QUEPOI
  184. C
  185. C On controlle que le chpoint est non-partitione
  186. C
  187. C INDIC = 1 -> on impose le pointeur du support geometrique (MELEME)
  188. C INDIC = 0 -> on ne fait que verifier le support geometrique (MELEME)
  189. C
  190. C NBCOMP > 0 -> numero des composantes
  191. C
  192. C MOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  193. C
  194. INDIC = 1
  195. NBCOMP = 1
  196. MOT(1) = 'SCAL'
  197. CALL QUEPOI(IRN, MELEME, INDIC, NBCOMP, MOT)
  198. IF(IERR .NE. 0)THEN
  199. IERR0 = IERR
  200. IERR = 0
  201. C
  202. C******** Message d'erreur standard
  203. C -301 0 %m1:40
  204. C
  205. MOTERR = 'CHPO1 = ??? '
  206. WRITE(IOIMP,*) MOTERR(1:40)
  207. IERR = IERR0
  208. GOTO 9999
  209. ENDIF
  210. C
  211. C**** Lecture du CHPOINT vitesse
  212. C
  213. ICOND = 1
  214. CALL LIROBJ('CHPOINT',IVN,ICOND,IRET)
  215. IF (IERR.NE.0) GOTO 9999
  216. C
  217. C**** Control du CHPOINT
  218. C
  219. INDIC = 1
  220. NBCOMP = IDIM
  221. JGN = 4
  222. JGM = IDIM
  223. SEGINI MLMOTS
  224. MLMOTS.MOTS(1) = 'UX '
  225. MLMOTS.MOTS(2) = 'UY '
  226. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  227. CALL QUEPO1(IVN, MELEME, MLMOTS)
  228. IF(IERR .NE. 0)THEN
  229. IERR0 = IERR
  230. IERR = 0
  231. C
  232. C******** Message d'erreur standard
  233. C -301 0 %m1:40
  234. C
  235. MOTERR = 'CHPO2 = ??? '
  236. WRITE(IOIMP,*) MOTERR(1:40)
  237.  
  238. GOTO 9999
  239. ENDIF
  240. SEGSUP MLMOTS
  241. C
  242. C**** Lecture du CHPOINT PN
  243. C
  244. ICOND = 1
  245. CALL LIROBJ('CHPOINT',IPN,ICOND,IRET)
  246. IF (IERR.NE.0) GOTO 9999
  247. C
  248. C**** Control du CHPOINT
  249. C
  250. INDIC = 1
  251. NBCOMP = 1
  252. MOT(1) = 'SCAL'
  253. CALL QUEPOI(IPN, MELEME, INDIC, NBCOMP, MOT)
  254. IF(IERR .NE. 0)THEN
  255. IERR0 = IERR
  256.  
  257. C
  258. C******** Message d'erreur standard
  259. C -301 0 %m1:40
  260. C
  261. MOTERR = 'CHPO3 = ??? '
  262. WRITE(IOIMP,*) MOTERR(1:40)
  263.  
  264. GOTO 9999
  265. ENDIF
  266. C
  267. C**** Lecture du CHPOINT GAMMA
  268. C
  269. ICOND = 1
  270. CALL LIROBJ('CHPOINT',IGAMN,ICOND,IRET)
  271. IF(IERR .NE. 0)GOTO 9999
  272. C
  273. C**** Control du CHPOINT
  274. C
  275. INDIC = 1
  276. NBCOMP = 1
  277. MOT(1) = 'SCAL'
  278. CALL QUEPOI(IGAMN, MELEME, INDIC, NBCOMP, MOT)
  279. IF(IERR .NE. 0)THEN
  280. IERR0 = IERR
  281.  
  282. C
  283. C******* Message d'erreur standard
  284. C -301 0 %m1:40
  285. C
  286. MOTERR = 'CHPO4 = ??? '
  287. WRITE(IOIMP,*) MOTERR(1:40)
  288.  
  289. GOTO 9999
  290. ENDIF
  291. C
  292. C*** Reading IUPRI1
  293. C
  294. ICOND = 1
  295. CALL LIROBJ('CHPOINT',IUPRI1,ICOND,IRET)
  296. IF(IERR .NE. 0)GOTO 9999
  297. C
  298. C**** Control du CHPOINT
  299. C
  300. INDIC = 1
  301. NBCOMP = 1
  302. MOT(1) = 'SCAL'
  303. CALL QUEPOI(IUPRI1, MELEME, INDIC, NBCOMP, MOT)
  304. IF(IERR .NE. 0)THEN
  305. IERR0 = IERR
  306.  
  307. C
  308. C******* Message d'erreur standard
  309. C -301 0 %m1:40
  310. C
  311. MOTERR = 'CHPO5 = ??? '
  312. WRITE(IOIMP,*) MOTERR(1:40)
  313.  
  314. GOTO 9999
  315. ENDIF
  316. C
  317. C*** Reading IUPRI2
  318. C
  319. ICOND = 1
  320. CALL LIROBJ('CHPOINT',IUPRI2,ICOND,IRET)
  321. IF(IERR .NE. 0)GOTO 9999
  322. C
  323. C**** Control du CHPOINT
  324. C
  325. INDIC = 1
  326. NBCOMP = 1
  327. MOT(1) = 'SCAL'
  328. CALL QUEPOI(IUPRI2, MELEME, INDIC, NBCOMP, MOT)
  329. IF(IERR .NE. 0)THEN
  330. IERR0 = IERR
  331.  
  332. C
  333. C******* Message d'erreur standard
  334. C -301 0 %m1:40
  335. C
  336. MOTERR = 'CHPO6 = ??? '
  337. WRITE(IOIMP,*) MOTERR(1:40)
  338.  
  339. GOTO 9999
  340. ENDIF
  341. C
  342. C**** Calcul de la matrice \Gamma
  343. C
  344. CALL KON171(MELEME,IDIAM,IRN,IVN,IPN,IGAMN,ILIINC,IUPRI1,IUPRI2,
  345. & IGMAT)
  346. IF(IERR.NE.0) GOTO 9999
  347. C
  348. TYPE='MATRIK '
  349. CALL ECROBJ(TYPE,IGMAT)
  350. C
  351. 9999 RETURN
  352. END
  353.  
  354.  
  355.  
  356.  
  357.  

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