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

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