Download kon18.eso

Back to the list

   1 : C KON18     SOURCE    CHAT      05/01/13    00:59:13     5004           
   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 : -INC CCOPTIO
  90 : -INC SMLMOTS
  91 : -INC SMCHPOI
  92 : -INC SMELEME
  93 :       POINTEUR MLMVIT.MLMOTS
  94 : C
  95 : C**** Variables de COOPTIO
  96 : C
  97 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  98 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
  99 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 100 : C     &        ,IECHO,   IIMPI,  IOSPI
 101 : C     &        ,IDIM,    IFICLE, IPREFI     
 102 : C     &        ,MCOORD
 103 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 104 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 105 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
 106 : C     &        ,NUCROU, IPSAUV
 107 : C
 108 :       INTEGER IRET, INDIC, NBCOMP, NESP, JGN, JGM
 109 :      &     ,MELEMC, IDIAM
 110 :      &     ,IJACO, ILIINC, ILIINP, NC
 111 :      &     ,IRN, IVN, IPN, IGAMN, IUPRI, IUPRI2
 112 : C
 113 :       CHARACTER*8 TYPE
 114 :       CHARACTER*4 MOT
 115 :       CHARACTER*(40) MESERR
 116 : C
 117 : C*******************************
 118 : C**** La table domaine *********
 119 : C*******************************
 120 : C
 120 :       CALL LIROBJ('MAILLAGE',MELEMC,1,IRET)
 121 :       IF(IERR .NE. 0)GOTO 9999
 122 : C
 123 :       NESP=0
 124 : C     
 125 : C**** La list des inconnues duales (variables conservatives)
 126 : C
 127 :       TYPE='LISTMOTS'
 127 :       CALL LIROBJ(TYPE,ILIINC,1,IRET)
 128 :       IF(IERR .NE. 0) GOTO 9999
 129 :       MLMOTS = ILIINC
 130 :       SEGACT MLMOTS
 131 :       NC = MLMOTS.MOTS(/2)
 132 :       SEGDES MLMOTS
 133 :       IF(NC .NE. (IDIM+2+NESP))THEN
 134 :          MOTERR(1:40) = 'LISTINCO = ???'
 135 :          WRITE(IOIMP,*) MOTERR
 136 : C
 137 : C******* Message d'erreur standard
 138 : C        21 2
 139 : C        Données incompatibles
 140 : C
 140 :          CALL ERREUR(21)
 141 :          GOTO 9999
 142 :       ENDIF
 143 : C     
 144 : C**** La list des inconnues primales (variables primitives)
 145 : C
 146 :       TYPE='LISTMOTS'
 146 :       CALL LIROBJ(TYPE,ILIINP,1,IRET)
 147 :       IF(IERR .NE. 0) GOTO 9999
 148 :       MLMOTS = ILIINP
 149 :       SEGACT MLMOTS
 150 :       NC = MLMOTS.MOTS(/2)
 151 :       SEGDES MLMOTS
 152 :       IF(NC .NE. (IDIM+2+NESP))THEN
 153 :          MOTERR(1:40) = 'LISTINCO = ???'
 154 :          WRITE(IOIMP,*) MOTERR
 155 : C
 156 : C******* Message d'erreur standard
 157 : C        21 2
 158 : C        Données incompatibles
 159 : C
 159 :          CALL ERREUR(21)
 160 :          GOTO 9999
 161 :       ENDIF
 162 : C      
 163 : C**** Lecture du diametre minimum
 164 : C
 164 :       CALL LIROBJ('CHPOINT',IDIAM,1,IRET)
 165 :       IF (IERR.NE.0) GOTO 9999
 166 : C
 167 : C**** Control du CHPOINT: QUEPOI
 168 : C
 169 :       INDIC = 1
 170 :       NBCOMP = 1
 171 :       MOT = 'SCAL'
 171 :       CALL QUEPOI(IDIAM, MELEMC, INDIC, NBCOMP, MOT)
 172 : C
 173 : C**** La densité au centre
 174 : C
 175 :       TYPE = 'CHPOINT '
 175 :       CALL LIROBJ(TYPE,IRN,1,IRET)
 176 :       IF(IERR .NE. 0) GOTO 9999
 177 : C
 178 : C**** Control du CHPOINT: QUEPOI
 179 : C
 180 : C     INDIC = 1   -> on impose le pointeur du support geometrique (ICEN)
 181 : C                   N.B. Le CHPOINT peut changer de structure pour
 182 : C                        avoir SPG = ICEN!!!!      
 183 : C     INDIC = 0   -> on ne fait que verifier le support geometrique
 184 : C                   (ICEN). Si le SPG sont differents INDIC = -4 en sortie       
 185 : C
 186 : C     NBCOMP > 0 -> numero des composantes      
 187 : C
 188 : C     MOT  = ' ' obligatoire s'on connais pas les noms des composantes
 189 : C
 190 :       INDIC = 1
 191 :       NBCOMP = 1
 192 :       MOT = 'SCAL'
 192 :       CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
 193 :       IF(IERR .NE. 0) GOTO 9999
 194 : C
 195 : C******* La vitesse au centre
 196 : C
 197 :       TYPE = 'CHPOINT '
 197 :       CALL LIROBJ(TYPE,IVN,1,IRET)
 198 :       IF(IERR .NE. 0) GOTO 9999
 199 :       JGN = 4
 200 :       JGM = IDIM
 201 :       SEGINI MLMVIT
 202 :       MLMVIT.MOTS(1) = 'UX  '
 203 :       MLMVIT.MOTS(2) = 'UY  '
 204 :       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 '
 210 :       CALL LIROBJ(TYPE,IPN,1,IRET)
 211 :       IF(IERR .NE. 0) GOTO 9999
 212 :       INDIC = 1
 213 :       NBCOMP = 1
 214 :       MOT = 'SCAL'
 214 :       CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT)
 215 :       IF(IERR .NE. 0) GOTO 9999
 216 : C
 217 : C******* Gamma au centre
 218 : C
 219 :       TYPE = 'CHPOINT '
 219 :       CALL LIROBJ(TYPE,IGAMN,1,IRET)
 220 :       IF(IERR .NE. 0) GOTO 9999
 221 :       INDIC = 1
 222 :       NBCOMP = 1
 223 :       MOT = 'SCAL'
 223 :       CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT)
 224 :       IF(IERR .NE. 0) GOTO 9999
 225 : C----------------------------------------------------
 226 : C******* Vitess de "cut-off" au centre
 227 : C----------------------------------------------------
 228 :       TYPE = 'CHPOINT '
 228 :       CALL LIROBJ(TYPE,IUPRI,1,IRET)
 229 :       IF(IERR .NE. 0) GOTO 9999
 230 :       INDIC = 1
 231 :       NBCOMP = 1
 232 :       MOT = 'SCAL'
 232 :       CALL QUEPOI(IUPRI, MELEMC, INDIC, NBCOMP, MOT)
 233 :       IF(IERR .NE. 0) GOTO 9999
 234 : C----------------------------------------------------
 235 : C******* Vitess de "cut-off" au centre
 236 : C----------------------------------------------------
 237 :       TYPE = 'CHPOINT '
 237 :       CALL LIROBJ(TYPE,IUPRI2,1,IRET)
 238 :       IF(IERR .NE. 0) GOTO 9999
 239 :       INDIC = 1
 240 :       NBCOMP = 1
 241 :       MOT = 'SCAL'
 241 :       CALL QUEPOI(IUPRI2, MELEMC, INDIC, NBCOMP, MOT)
 242 :       IF(IERR .NE. 0) GOTO 9999
 243 : 
 244 : C
 245 : C******* Calcul du jacobien
 246 : C
 247 :       IF(IDIM .EQ. 2)THEN
 247 :          CALL KON181(MELEMC,IDIAM, ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,
 248 :      &               IUPRI,IUPRI2,IJACO)
 249 :          IF(IERR .NE. 0) GOTO 9999
 250 :       ELSE
 250 :          CALL ERREUR(251)
 251 :          GOTO 9999
 252 :       ENDIF
 253 : C
 254 : C**** Ecriture des resultats
 255 : C
 256 :       TYPE='MATRIK '
 256 :       CALL ECROBJ(TYPE,IJACO)
 257 :  9999 CONTINUE
 258 :       RETURN
 259 :       END
 260 :  
 261 :  
 262 :  

© Cast3M 2003 - All rights reserved.
Disclaimer