Download kon17.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer