Download kon171.eso

Back to the list

   1 : C KON171    SOURCE    MAGN      09/07/30    21:17:38     6458           
   2 :       SUBROUTINE KON171(ICEN,IDIAMI,IRN,IUN,IPN,IGAMN,ILINC,IUPRI1,
   3 :      $     IUPRI2,IMAT)
   4 : C
   5 : C************************************************************************
   6 : C
   7 : C PROJET            :  CASTEM 2000
   8 : C
   9 : C NOM               :  KON171
  10 : C
  11 : C DESCRIPTION       :  Voir KON17
  12 : C                      Calcul de la matrice de preconditionnement 
  13 : C                      \Gamma pour les variables conservatives
  14 : C
  14 : C                      Cas deux dimensions, gaz "calorically perfect"
  15 : C     
  16 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  17 : C      
  18 : C AUTEUR            :  A. BECCANTINI, DM2S/SFME/LTMF
  19 : C                      S. V. KUDRIAKOV, DM2S/SFME/LTMF
  20 : C
  21 : C************************************************************************
  22 : C
  23 : C
  24 : C APPELES (Outils
  25 : C          CASTEM)  :  
  26 : C      
  27 : C APPELES (Calcul)  :  
  28 : C
  29 : C************************************************************************
  30 : C
  31 : C ENTREES
  32 : C
  33 : C     ILINC  : liste des inconnues (pointeur d'un objet de type LISTMOTS)
  34 : C
  35 : C  1) Pointeurs de MELEME de la table DOMAINE
  36 : C
  37 : C     ICEN    : MELEME 'CENTRE' du SPG des CENTRES
  38 : C
  39 : C     IDIAMI  : CHPOINT CENTRE  contenant le diametre de la cellule ;
  40 : C
  41 : C  2) Pointeurs des CHPOINT
  42 : C
  43 : C     IRN     : CHPOINT CENTRE  contenant la masse volumique ;
  44 : C
  45 : C     IUN     : CHPOINT CENTRE  contenant la vitesse ;
  46 : C
  47 : C     IPN     : CHPOINT CENTRE  contenant la pression ;
  48 : C
  49 : C     IGAMN   : CHPOINT CENTRE  contenant le gamma ;
  50 : C
  51 : C     IUPRI1  : CHPOINT CENTRE  contenant la vitesse de "cut-off" ;
  52 : C
  53 : C     IUPRI2  : CHPOINT CENTRE  contenant la vitesse de "cut-off" ;
  54 : C
  55 : C SORTIES
  56 : C
  57 : C     IMAT    : pointeur de la MATRIK du \Gamma
  58 : C
  59 : C************************************************************************
  60 : C
  61 : C HISTORIQUE (Anomalies et modifications éventuelles)
  62 : C
  63 : C HISTORIQUE :
  64 : C      
  65 : C************************************************************************
  66 : C
  67 : C
  68 : C N.B.: On suppose qu'on a déjà controllé RO, P > 0
  69 : C                                         GAMMA \in (1,3)
  70 : C       Si non il faut le faire!!!
  71 : C
  72 : C************************************************************************
  73 : C               
  74 : C
  75 : C**** Variables de COOPTIO
  76 : C
  77 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  78 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
  79 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
  80 : C     &        ,IECHO,   IIMPI,  IOSPI
  81 : C     &        ,IDIM
  82 : C     &        ,MCOORD      
  83 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  84 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  85 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
  86 : C     &        ,NUCROU, IPSAUV, IFICLE, IPREFI
  87 : C
  88 :       IMPLICIT INTEGER(I-N)
  89 :       INTEGER IGEOMC, IDIAMI
  90 :      &       ,ILINC ,IRN ,IUN ,IPN ,IGAMN, IMAT
  91 :      &       ,NBELEM, ICEN, IUPRI1, IUPRI2
  92 :      &       ,MP,NBEL,NBME,NBSOUS,NKID,NKMT,NMATRI,NP,NRIGE         
  93 : C
  94 :       REAL*8 WVECT(4), GAM, GMT(4,4), VPRI, VPRI2, DIAM
  95 :       CHARACTER*8 TYPE
  96 : C
  97 : C**** LES INCLUDES
  98 : C
  99 : -INC CCOPTIO
 100 : -INC SMCHPOI
 101 : -INC SMMATRIK
 102 : -INC SMELEME
 103 : -INC SMLMOTS
 104 : -INC SMLENTI
 105 :       POINTEUR MPRN.MPOVAL, MPUN.MPOVAL, MPPN.MPOVAL, MPGAMN.MPOVAL,
 106 :      &         MPUPR1.MPOVAL,MPUPR2.MPOVAL,MDIAMI.MPOVAL
 107 :       POINTEUR MELEMC.MELEME
 108 :       POINTEUR RR.IZAFM, RUX.IZAFM, RUY.IZAFM, RRET.IZAFM,
 109 :      &         UXR.IZAFM, UXUX.IZAFM, UXUY.IZAFM, UXRET.IZAFM,
 110 :      &         UYR.IZAFM, UYUX.IZAFM, UYUY.IZAFM, UYRET.IZAFM,
 111 :      &         RETR.IZAFM, RETUX.IZAFM, RETUY.IZAFM, RETRET.IZAFM
 112 :       POINTEUR MLMINC.MLMOTS
 113 : C
 114 :       MELEMC=ICEN
 115 :       SEGACT MELEMC
 116 :       NBELEM =MELEMC.NUM(/2)
 117 :       SEGDES MELEMC
 118 : C
 118 :       CALL LICHT(IRN,MPRN,TYPE,IGEOMC)
 118 :       CALL LICHT(IPN,MPPN,TYPE,IGEOMC)
 118 :       CALL LICHT(IUN,MPUN,TYPE,IGEOMC)
 118 :       CALL LICHT(IGAMN,MPGAMN,TYPE,IGEOMC)
 118 :       CALL LICHT(IUPRI1,MPUPR1,TYPE,IGEOMC)
 118 :       CALL LICHT(IUPRI2,MPUPR2,TYPE,IGEOMC)
 118 :       CALL LICHT(IDIAMI,MDIAMI,TYPE,IGEOMC)
 119 : C
 120 : C     SEGACT MPRN*MOD
 121 : C     SEGACT MPPN*MOD
 122 : C     SEGACT MPUN*MOD
 123 : C     SEGACT MPGAMN*MOD
 124 : C     
 125 : C
 126 : C**** Maillage des inconnues primales = Maillage des inconnues primales
 127 : C     = MELEMC
 128 : C
 129 : C      
 130 :       NRIGE = 7
 131 :       NMATRI = 1
 132 :       NKID = 9
 133 :       NKMT = 7
 134 : C
 135 :       SEGINI MATRIK
 136 :       IMAT = MATRIK
 137 :       MATRIK.IRIGEL(1,1) = MELEMC
 138 :       MATRIK.IRIGEL(2,1) = MELEMC
 139 : C
 140 : C**** Matrice non symetrique
 141 : C
 142 :       MATRIK.IRIGEL(7,1) = 2
 143 : C
 144 :       NBME = 16
 145 :       NBSOUS = 1
 146 :       SEGINI IMATRI
 147 :       MLMINC = ILINC
 148 :       SEGACT MLMINC
 149 :       MATRIK.IRIGEL(4,1) = IMATRI
 150 : C
 151 :       IMATRI.LISPRI(1) = MLMINC.MOTS(1)
 152 :       IMATRI.LISPRI(2) = MLMINC.MOTS(2)
 153 :       IMATRI.LISPRI(3) = MLMINC.MOTS(3)
 154 :       IMATRI.LISPRI(4) = MLMINC.MOTS(4)
 155 :       IMATRI.LISPRI(5) = MLMINC.MOTS(1)
 156 :       IMATRI.LISPRI(6) = MLMINC.MOTS(2)
 157 :       IMATRI.LISPRI(7) = MLMINC.MOTS(3)
 158 :       IMATRI.LISPRI(8) = MLMINC.MOTS(4)
 159 :       IMATRI.LISPRI(9) = MLMINC.MOTS(1)
 160 :       IMATRI.LISPRI(10) = MLMINC.MOTS(2)
 161 :       IMATRI.LISPRI(11) = MLMINC.MOTS(3)
 162 :       IMATRI.LISPRI(12) = MLMINC.MOTS(4)
 163 :       IMATRI.LISPRI(13) = MLMINC.MOTS(1)
 164 :       IMATRI.LISPRI(14) = MLMINC.MOTS(2)
 165 :       IMATRI.LISPRI(15) = MLMINC.MOTS(3)
 166 :       IMATRI.LISPRI(16) = MLMINC.MOTS(4)
 167 : C
 168 :       IMATRI.LISDUA(1) = MLMINC.MOTS(1)
 169 :       IMATRI.LISDUA(2) = MLMINC.MOTS(1)
 170 :       IMATRI.LISDUA(3) = MLMINC.MOTS(1)
 171 :       IMATRI.LISDUA(4) = MLMINC.MOTS(1)
 172 :       IMATRI.LISDUA(5) = MLMINC.MOTS(2)
 173 :       IMATRI.LISDUA(6) = MLMINC.MOTS(2)
 174 :       IMATRI.LISDUA(7) = MLMINC.MOTS(2)
 175 :       IMATRI.LISDUA(8) = MLMINC.MOTS(2)
 176 :       IMATRI.LISDUA(9) = MLMINC.MOTS(3)
 177 :       IMATRI.LISDUA(10) = MLMINC.MOTS(3)
 178 :       IMATRI.LISDUA(11) = MLMINC.MOTS(3)
 179 :       IMATRI.LISDUA(12) = MLMINC.MOTS(3)
 180 :       IMATRI.LISDUA(13) = MLMINC.MOTS(4)
 181 :       IMATRI.LISDUA(14) = MLMINC.MOTS(4)
 182 :       IMATRI.LISDUA(15) = MLMINC.MOTS(4)
 183 :       IMATRI.LISDUA(16) = MLMINC.MOTS(4)
 184 : C
 185 :       NBEL = NBELEM
 186 :       NBSOUS = 1
 187 :       NP = 1
 188 :       MP = 1
 189 :       SEGINI   RR  , RUX , RUY , RRET ,
 190 :      &         UXR , UXUX , UXUY , UXRET ,
 191 :      &         UYR , UYUX , UYUY , UYRET ,
 192 :      &         RETR , RETUX , RETUY , RETRET 
 193 : C
 194 : C**** Duale = IMATRI.LISDUA(1) = 'RN'
 195 : C     Primale = IMATRI.LISPRI(1) = 'RN'
 196 : C     -> IMATRI.LIZAFM(1,1) = RR
 197 : C
 198 : C     Duale = IMATRI.LISDUA(2) = 'RN'
 199 : C     Primale = IMATRI.LISPRI(1) = 'UXN'
 200 : C     -> IMATRI.LIZAFM(1,2) = RUX
 201 : C     ...
 202 : C
 203 :       IMATRI.LIZAFM(1,1) = RR
 204 :       IMATRI.LIZAFM(1,2) = RUX
 205 :       IMATRI.LIZAFM(1,3) = RUY
 206 :       IMATRI.LIZAFM(1,4) = RRET
 207 :       IMATRI.LIZAFM(1,5) = UXR
 208 :       IMATRI.LIZAFM(1,6) = UXUX
 209 :       IMATRI.LIZAFM(1,7) = UXUY
 210 :       IMATRI.LIZAFM(1,8) = UXRET
 211 :       IMATRI.LIZAFM(1,9) = UYR
 212 :       IMATRI.LIZAFM(1,10) = UYUX
 213 :       IMATRI.LIZAFM(1,11) = UYUY
 214 :       IMATRI.LIZAFM(1,12) = UYRET
 215 :       IMATRI.LIZAFM(1,13) = RETR
 216 :       IMATRI.LIZAFM(1,14) = RETUX
 217 :       IMATRI.LIZAFM(1,15) = RETUY
 218 :       IMATRI.LIZAFM(1,16) = RETRET
 219 : C
 220 :       DO ICEN = 1, NBELEM, 1
 221 : C
 222 :          WVECT(1)= MPRN.VPOCHA(ICEN,1)
 223 :          WVECT(4)=MPPN.VPOCHA(ICEN,1)
 224 :          WVECT(2)=MPUN.VPOCHA(ICEN,1)
 225 :          WVECT(3)=MPUN.VPOCHA(ICEN,2)
 226 :          GAM = MPGAMN.VPOCHA(ICEN,1)
 227 :          DIAM = MDIAMI.VPOCHA(ICEN,1)
 228 : C
 229 : C******* Le calcul
 230 : C
 231 :          VPRI= MPUPR1.VPOCHA(ICEN,1)
 232 :          VPRI2= MPUPR2.VPOCHA(ICEN,1)
 233 :          VPRI=MAX(VPRI,VPRI2)
 233 :          CALL GMAT2D(GMT,WVECT,GAM,VPRI,DIAM)
 234 : C     
 235 : C********AB.AM(IFAC,IPRIM,IDUAL)
 236 : C        A = nom de l'inconnu duale (Ro,rUX,rUY,RET)
 237 : C        B = nom de l'inconnu primale (Ro,rUX,rUY,RET)
 238 : C        IPRIM = 1
 239 : C        IDUAL = 1
 240 : C        i.e.
 241 : C        A_IDUAL = AB.AM(IFAC,IPRIM,IDUAL) * B_IPRIM + ...
 242 : C
 243 : C
 244 : C        N.B. GMT parcoru à l'inverse par rapport au stokage 
 245 : C             en Fortran
 246 : C
 247 : C******* Dual RN
 248 : C
 249 :          RR.AM(ICEN,1,1) = GMT(1,1)
 250 :          RUX.AM(ICEN,1,1) = GMT(1,2)
 251 :          RUY.AM(ICEN,1,1) = GMT(1,3)
 252 :          RRET.AM(ICEN,1,1) = GMT(1,4)
 253 : C
 254 : C******* Dual RUXN
 255 : C
 256 :          UXR.AM(ICEN,1,1) = GMT(2,1)
 257 :          UXUX.AM(ICEN,1,1) = GMT(2,2)
 258 :          UXUY.AM(ICEN,1,1) = GMT(2,3)
 259 :          UXRET.AM(ICEN,1,1) = GMT(2,4)
 260 : C
 261 : C******* Dual RUYN
 262 : C
 263 :          UYR.AM(ICEN,1,1) = GMT(3,1)
 264 :          UYUX.AM(ICEN,1,1) = GMT(3,2)
 265 :          UYUY.AM(ICEN,1,1) = GMT(3,3)
 266 :          UYRET.AM(ICEN,1,1) = GMT(3,4)
 267 : C
 268 : C********Dual RETN
 269 : C
 270 :          RETR.AM(ICEN,1,1) = GMT(4,1)
 271 :          RETUX.AM(ICEN,1,1) = GMT(4,2)
 272 :          RETUY.AM(ICEN,1,1) = GMT(4,3)
 273 :          RETRET.AM(ICEN,1,1) = GMT(4,4)
 274 : C
 275 :       ENDDO
 276 : C
 277 :       SEGDES MELEMC
 278 : C
 279 :       SEGDES MPRN
 280 :       SEGDES MPPN
 281 :       SEGDES MPUN
 282 :       SEGDES MPGAMN
 283 :       SEGDES MPUPR1
 284 :       SEGDES MPUPR2
 285 :       SEGDES MDIAMI
 286 : C
 287 :       SEGDES MATRIK
 288 :       SEGDES IMATRI
 289 : C
 290 :       SEGDES   RR  , RUX , RUY , RRET ,
 291 :      &         UXR , UXUX , UXUY , UXRET ,
 292 :      &         UYR , UYUX , UYUY , UYRET ,
 293 :      &         RETR , RETUX , RETUY , RETRET 
 294 : C      
 295 :       SEGDES MLMINC
 296 : C
 297 :  9999 CONTINUE
 298 :       RETURN
 299 :       END
 300 :  
 301 :  
 302 :  
 303 :  
 304 :  
 305 :  

© Cast3M 2003 - All rights reserved.
Disclaimer