Download konv12.eso

Back to the list

   1 : C KONV12    SOURCE    CHAT      06/08/24    21:48:06     5529           
   2 :          SUBROUTINE KONV12
   3 : C************************************************************************
   4 : C
   5 : C PROJET            :  CASTEM 2000
   6 : C
   7 : C NOM               :  KONV12
   8 : C
   9 : C DESCRIPTION       :  Subroutine appellée par KONV1
  10 : C
  11 : C                      Modelisation 2D/3D des equations d'Euler
  12 : C
  13 : C                      Calcul du residu / jacobien / DELTAT
  14 : C     
  15 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16 : C      
  17 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/LTMF                        
  18 : C
  19 : C************************************************************************
  20 : C
  21 : C APPELES (Calcul)  :  KONFL2 (2D, gaz "thermally perfect") 
  22 : C
  23 : C************************************************************************
  24 : C
  25 : C*** SINTAXE
  26 : C
  27 : C  Discrétisation en VF "cell-centered" des équations d'Euler pour
  28 : C  un gaz parfait mono-constituent
  29 : C  Inconnues: densité, quantité de mouvement, énergie totale par
  30 : C  unité de volume (variables conservatives) (densités de chaque
  31 : C  constituente, densité * scalaires passifs)
  32 : C
  33 : C  RCHPO1 RFLOT1 = 'KONV' 'VF' 'PERFTEMP' MOT1 MOT2 MOD1 TABPG 
  34 : C                         LMOT1 MCHAM1 MCHAM2 MCHAM3 (MCHAM4 MCHAM5)
  35 : C                         MAILLIM ;
  36 : C  ENTREES 
  37 : C
  38 : C
  39 : C  MOT1   : objet de type MOT
  40 : C           Il vaut 'RESI' si on veut calculer le résidu
  41 : C           Il vaut 'FLUX' si on veut calculer le flux
  42 : C
  43 : C  MOT2   : objet de type MOT
  44 : C           Il indique la méthode de décentrement:
  45 : C           'VLH'     = solveur de van Leer Hanel
  46 : C           'SS       = solveur choc-choc
  47 : C
  48 : C  MOD1   : objet modele de type Navier_Stokes
  49 : C
  50 : C  TABG   : objet de type TABLE
  51 : C           il contient les proprietes du gaz:
  52 : C           * le nom de l'espèce qui n'est pas dans les Equations
  53 : C             d'Euler en
  54 : C             TABG . 'ESPNEULE' (MOT);
  55 : C           * les noms des espèces qui apparaissent explicitement
  56 : C             dans les équations d'Euler en 
  57 : C             TABG . 'ESPEULE' (LISTMOTS); 
  58 : C             dans le cas mono-espece  cet indice n'existe pas.
  59 : C           * le degré de polynoms cv_i=cv_i(T), en
  60 : C             TABG . 'NORD' (ENTIER >= 0)
  61 : C           * les propriétés de chaque gaz 'ESPI', dans la table
  62 : C             TABG . 'ESPI':
  63 : C             - TABG . 'ESPI' . 'A' (LISTREEL)
  64 : C               qui contient les (TABG.'NORD')+1 coefficients des 
  65 : C               polynoms cv(T), (A0,A1,...); le cv(T) sont supposés 
  66 : C               être en J/kg/K, donc les Ai doivent être en unités
  67 : C               cohérentes; 
  68 : C             - TABG . 'ESPI' . 'R' (J/kg/K, FLOTTANT) 
  69 : C               qui contient la constante du gaz parfait 
  70 : C             - TABG . 'ESPI' . 'H0K' (J/kg, FLOTTANT)
  71 : C               qui contient l'enthalpie de formation du gaz a 0K
  72 : C               (quantité numérique et pas physique)
  73 : C           * TABG . 'SCALPASS' = si existante, noms des scalaires
  74 : C             passifs à transporter (LISTMOTS)
  75 : C  
  76 : C LMOT1   : objet de type LISTMOTS
  77 : C           Noms de composantes du résultat (RCHPO1)
  78 : C           Il contient dans l'ordre suivant: le noms de la densité,
  79 : C           de la vitesse, de l'énergie totale par unité de volume
  80 : C           des densités de chaque éspece, des scalaires passifs
  81 : C
  82 : C MCHAM1  : MCHAML contenant la masse volumique, qui a comme
  83 : C           SPG (support géométrique) l'indice 'FACEL' de
  84 : C           TAB1 (une composante, 'SCAL')
  85 : C
  86 : C MCHAM2  : MCHAML  contenant la vitesse  et les cosinus
  87 : C           directeurs du repère locale (n,t) dans le repère
  88 : C           global (x,y) (dans le cas 2D 6 composantes:
  89 : C           * 'UN' = vitesse normale  (SPG =('DOMA' MOD1 'FACEL'))
  90 : C           * 'UT' = vitesse tangentielle  (SPG =('DOMA' MOD1 'FACEL'))
  91 : C           * 'NX' = n.x (SPG = 'FACE')
  92 : C           * 'NY' = n.y (SPG = 'FACE')
  93 : C           * 'TX' = t.x (SPG = 'FACE')
  94 : C           * 'TY' = t.y (SPG = 'FACE')).
  95 : C
  96 : C MCHAM3  : MCHAML (SPG =('DOMA' MOD1 'FACEL')) contenant la pression du
  97 : C           gaz (une  seule composante, 'SCAL').
  98 : C
  99 : C (MCHAM4): MCHAML (SPG =('DOMA' MOD1 'FACEL')) contenant les fractions
 100 : C           massiques des  espèces qui apparaissent explicitement 
 101 : C           dans les équations d'Euler (voir TABG . 'ESPEULE') ;
 102 : C           Dans le cas mono-espece MCHAM4 n'est pas à donner
 103 : C
 104 : C (MCHAM5): MCHAML (SPG =('DOMA' MOD1 'FACEL')) contenant les scalaires
 105 : C           transportés (voir TABG . 'SCALPASS'') ; 
 106 : C
 107 : C MAILLIM : MAILLAGE -- describes the mesh where the flux is not
 108 : C                       determined; it will be found by using
 109 : C                       the subroutins for the Boundary Conditions
 110 : C
 111 : C SORTIES
 112 : C
 113 : C RCHPO1  : objet de type CHPOINT (composantes =  LMOT1)
 114 : C           Residu  si MOT2 = 'RESI' (SPG =('DOMA' MOD1 'CENTRE'))
 115 : C           Flux si MOT2 = 'FLUX'    (SPG =('DOMA' MOD1 'FACE')) 
 116 : C
 117 : C RFLOT1  : objet de type FLOTTANT
 118 : C           Il est le temps caracteristique associé à l'onde la plus
 119 : C           rapide.
 120 : C
 121 : C Remarque
 122 : C --------
 123 : C
 124 : C RCHPO1 est égal à:
 125 : C * la derivé temporelle des inconnues si l'option 'RESI' est utilisée
 126 : C * la projection du flux convectif sur ('DOMA' MOD1 'XXNORMAF') si 
 127 : C   l'option 'FLUX' est utilisée
 128 : C
 129 : C      
 130 : C***********************************************************************
 131 : C
 132 : C************************************************************************
 133 : C
 134 : C HISTORIQUE (Anomalies et modifications éventuelles)
 135 : C
 136 : C HISTORIQUE : 3.12.03 - modification: added MAILLIM as an input
 137 : C      
 138 : C************************************************************************
 139 : C
 140 :       IMPLICIT INTEGER(I-N)
 141 : -INC CCOPTIO
 142 : -INC SMLMOTS
 143 :       POINTEUR MLMVIT.MLMOTS,MLMOEU.MLMOTS, MLMOSC.MLMOTS
 144 : -INC SMLREEL
 145 : -INC SMELEME
 146 : C
 147 : C**** Variables de COOPTIO
 148 : C
 149 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 150 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 151 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 152 : C     &        ,IECHO,   IIMPI,  IOSPI
 153 : C     &        ,IDIM
 154 : C     &        ,MCOORD
 155 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 156 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 157 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
 158 : C     &        ,NUCROU, IPSAUV, IFICLE, IPREFI
 159 : C
 160 : C**** A enlever à l'evolution
 161 : C
 162 :       INTEGER IDOMA, MELEMC, MELEMF, MELEFE, ICHPSU, ICHPDI , ICHPVO
 163 :      &      , INORM, MELLIM, IFLIM
 164 :      &      , NBMET, INDMET, IRET
 165 :      &      , IPGAZ, NORD, NORDP1, NESP, IESP
 166 :      &      , JGM, JGN, NSCA
 167 :      &      , I1, I2
 168 :      &      , IROF, IVITF, IPF, IFRMAF, ISCAF
 169 :      &      , NINC, ILIINC, NC, ICELL
 170 :      &      , ICHFLU, ICHRES, INEFMD, ICOND, MMODEL
 171 : C
 172 : C**** Variables en ACCTAB
 173 : C
 174 :       INTEGER IVALI, IRETI,IVALR, IRETR
 175 :       REAL*8 XVALI, XVALR
 176 :       LOGICAL LOGII, LOGIR
 177 :       CHARACTER*(8) MTYPI, MTYPR, CHARR
 178 : C
 179 : C**** Segment des proprietes du gaz
 180 : C
 181 :       SEGMENT PROPHY
 182 :          REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
 183 :      &         ,ACVTOG(NORDP1), ACVTOD(NORDP1)
 184 :       ENDSEGMENT
 185 : C
 186 :       PARAMETER (NBMET=2)
 187 :       REAL*8 DT
 188 :       CHARACTER*8 LMETO(NBMET), TYPE
 189 :       CHARACTER*4 NOMMOT, LFLUX(2)
 190 :       CHARACTER*(40) MESERR
 191 :       LOGICAL LOGNC, LOGAN, LOGRES, LOGME, LOGSCA
 192 : C      
 193 :       DATA LMETO/'VLH     ','SS      '/
 194 :       DATA LFLUX/'FLUX','RESI'/
 195 : C
 196 : C**** Initialisation des variables pour la gestion des erreurs.
 197 : C
 198 :       LOGNC  = .FALSE.
 199 :       LOGAN  = .FALSE.
 200 :       MESERR  = '                                        '
 201 : C
 202 : C******* Flux ou residu???
 203 : C
 203 :       CALL LIRMOT(LFLUX,2,ICELL,1)
 204 :       IF(IERR .NE. 0)GOTO 9999
 205 :       IF(ICELL .EQ. 1)THEN
 206 :          LOGRES = .FALSE.
 207 :       ELSEIF(ICELL .EQ. 2)THEN
 208 :          LOGRES = .TRUE.
 209 :       ELSE
 210 : C
 211 : C******** Message d'erreur standard
 212 : C         251 2
 213 : C         Tentative d'utilisation d'une option non implémentée
 214 : C
 214 :          CALL ERREUR(251)
 215 :       ENDIF
 216 : C
 217 : C**** Metode utilisée
 218 : C
 218 :       CALL LIRMOT(LMETO,NBMET,INDMET,1)
 219 :       IF(IERR .NE. 0)GOTO 9999
 220 :       IF(INDMET .EQ. 0)THEN
 221 : C
 222 : C******** Message d'erreur standard
 223 : C         251 2
 224 : C         Tentative d'utilisation d'une option non implémentée
 225 : C
 225 :          CALL ERREUR(251)
 226 :       ENDIF
 227 : C
 228 : C**********************************
 229 : C**** Lecture de l'objet MODELE ***
 230 : C**********************************
 231 : C
 232 :       ICOND = 1
 232 :       CALL QUETYP(TYPE,ICOND,IRET)
 233 : 
 234 :       IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
 235 :         WRITE(6,*)' On attend un objet MMODEL'
 236 :         RETURN
 237 :       ENDIF
 237 :       CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
 238 :       IF(IERR.NE.0)GOTO 9999
 238 :       CALL LEKMOD(MMODEL,IDOMA,INEFMD)
 239 :       IF(IERR.NE.0)GOTO 9999
 240 : C
 241 : C**** Centre, FACE et FACEL
 242 : C
 242 :       CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
 243 :       IF(IERR .NE. 0) GOTO 9999
 244 : C
 244 :       CALL LEKTAB(IDOMA,'FACE',MELEMF)
 245 :       IF(IERR .NE. 0) GOTO 9999
 246 : C      
 246 :       CALL LEKTAB(IDOMA,'FACEL',MELEFE)
 247 :       IF(IERR .NE. 0) GOTO 9999
 248 : C
 249 : C**** Lecture du CHPOINT contenant les surfaces des faces.
 250 : C
 250 :       CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
 251 :       IF(IERR .NE. 0) GOTO 9999
 252 : C  
 253 : C**** Lecture du CHPOINT contenant les diametres minimums.
 254 : C
 254 :       CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
 255 :       IF(IERR .NE. 0) GOTO 9999
 256 : C     
 257 : C**** Lecture du CHPOINT contenant les volumes
 258 : C
 258 :       CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
 259 :       IF(IERR .NE. 0) GOTO 9999
 260 : C
 261 : C********** Les normales aux faces
 262 : C
 263 :       IF(IDIM .EQ. 2)THEN
 264 : C        Que les normales
 264 :          CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
 265 :          IF(IERR .NE. 0) GOTO 9999
 266 :          JGN = 4
 267 :          JGM = 2
 268 :          SEGINI MLMVIT
 269 :          MLMVIT.MOTS(1) = 'UX  '
 270 :          MLMVIT.MOTS(2) = 'UY  '
 270 :          CALL QUEPO1(INORM, MELEMF, MLMVIT)
 271 :          SEGDES MLMVIT
 272 :          IF(IERR .NE. 0) GOTO 9999
 273 :       ELSE
 274 : C        Les normales et les tangentes
 275 :          TYPE = ' '
 275 :          CALL ACMO(IDOMA,'MATROT',TYPE,INORM)
 276 :          IF (TYPE .NE. 'CHPOINT ') THEN
 276 :             CALL MATRAN(IDOMA,INORM)
 277 :             IF(IERR .NE. 0) GOTO 9999
 278 :          ENDIF
 279 :          JGN = 4
 280 :          JGM = 9
 281 :          SEGINI MLMVIT
 282 :          MLMVIT.MOTS(1) = 'UX  '
 283 :          MLMVIT.MOTS(2) = 'UY  '
 284 :          MLMVIT.MOTS(3) = 'UZ  '
 285 :          MLMVIT.MOTS(4) = 'RX  '
 286 :          MLMVIT.MOTS(5) = 'RY  '
 287 :          MLMVIT.MOTS(6) = 'RZ  '
 288 :          MLMVIT.MOTS(7) = 'MX  '
 289 :          MLMVIT.MOTS(8) = 'MY  '
 290 :          MLMVIT.MOTS(9) = 'MZ  '
 290 :          CALL QUEPO1(INORM, MELEMF, MLMVIT)
 291 :          SEGDES MLMVIT
 292 :       ENDIF
 293 : C
 294 : C********************************
 295 : C**** Fin table domaine *********
 296 : C********************************
 297 : C********************************
 298 : C****   La table IPGAZ    *******
 299 : C********************************
 300 : C
 301 : C
 302 : C**** Lecture de la table qui contient le proprieté du gaz
 303 : C     Cette table est controlle par l'operateur PRIM
 304 : C
 304 :       CALL LIROBJ('TABLE',IPGAZ,1,IRET)
 305 :       IF(IERR .NE. 0)GOTO 9999
 306 :       IF(IERR .NE. 0) GOTO 9999
 307 : C     
 308 : C**** NORD: degree des polynoms cv(T)
 309 : C
 310 :       MTYPI = 'MOT     '
 311 :       MTYPR = '        '
 311 :       CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'NORD',LOGII,IRETI,
 312 :      &     MTYPR,NORD,XVALR,CHARR,LOGIR,IRETR)
 313 :       IF(MTYPR .NE. 'ENTIER  ')THEN
 314 : C
 315 : C**** Message d'erreur standard
 316 : C     -301 0 %m1:40
 317 : C
 318 :          MOTERR(1:40) = 'ARG1 . NORD = ???                       '
 319 :          WRITE(IOIMP,*) MOTERR
 320 : C
 321 : C**** Message d'erreur standard
 322 : C     21 2
 323 : C     Données incompatibles
 324 : C
 324 :          CALL ERREUR(21)
 325 :          GOTO 9999
 326 :       ENDIF      
 327 :       NORDP1 = NORD + 1
 328 : C
 329 : C**** Nom de l'espece qui n'est pas dans les equations d'Euler
 330 : C
 331 :       MTYPI = 'MOT     '
 332 :       MTYPR = '        '
 332 :       CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'ESPNEULE',LOGII,IRETI,
 333 :      &     MTYPR,IVALR,XVALR,CHARR,LOGIR,IRETR)
 334 :       IF(MTYPR .NE. 'MOT     ')THEN
 335 : C
 336 : C**** Message d'erreur standard
 337 : C     -301 0 %m1:40
 338 : C
 339 :          MOTERR(1:40) = 'ARG1 . ESPNEULE = ???                   '
 340 :          WRITE(IOIMP,*) MOTERR
 341 : C
 342 : C******* Message d'erreur standard
 343 : C        21 2
 344 : C        Données incompatibles
 345 : C
 345 :          CALL ERREUR(21)
 346 :          GOTO 9999
 347 :       ENDIF      
 348 : C
 349 : C**** Les especes qui sont dans les Equations d'Euler
 350 : C
 351 :       MTYPR = '        ' 
 351 :       CALL ACMO(IPGAZ,'ESPEULE',MTYPR,MLMOEU)
 352 :       IF(MTYPR .EQ. '        ')THEN
 353 :          NESP = 0
 354 :          IFRMAF = 0
 355 :          JGN = 4
 356 :          JGM =  1
 357 :          SEGINI MLMOT2
 358 :          MLMOT2.MOTS(1) = CHARR(1:4)
 359 :          LOGME = .FALSE.
 360 :       ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
 361 : C
 362 : C**** Message d'erreur standard
 363 : C     -301 0 %m1:40
 364 : C
 365 :          MOTERR(1:40) = 'ARG1 . ESPEULE = ???                    '
 366 :          WRITE(IOIMP,*) MOTERR
 367 : C
 368 : C**** Message d'erreur standard
 369 : C     21 2
 370 : C     Données incompatibles
 371 : C
 371 :          CALL ERREUR(21)
 372 :          GOTO 9999
 373 :       ELSE
 374 :          LOGME = .TRUE.
 375 :          SEGACT MLMOEU
 376 :          NESP = MLMOEU.MOTS(/2)
 377 :          JGN = 4
 378 :          JGM =  NESP + 1
 379 :          SEGINI MLMOT2
 380 :          DO I1 = 1, NESP
 381 :             MLMOT2.MOTS(I1) = MLMOEU.MOTS(I1)
 382 :          ENDDO
 383 :          MLMOT2.MOTS(NESP+1)=CHARR(1:4)
 384 :       ENDIF
 385 : C
 386 : C**** Les scalaires passifs
 387 : C
 388 :       MTYPR = '        ' 
 388 :       CALL ACMO(IPGAZ,'SCALPASS',MTYPR,MLMOSC)
 389 :       IF(MTYPR .EQ. '        ')THEN
 390 :          LOGSCA = .FALSE.
 391 :          NSCA = 0
 392 :          ISCAF = 0
 393 :       ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
 394 : C
 395 : C**** Message d'erreur standard
 396 : C     -301 0 %m1:40
 397 : C
 398 :          MOTERR(1:40) = 'ARG1 . SCALPASS = ???                   '
 399 :          WRITE(IOIMP,*) MOTERR
 400 : C
 401 : C**** Message d'erreur standard
 402 : C     21 2
 403 : C     Données incompatibles
 404 : C
 404 :          CALL ERREUR(21)
 405 :          GOTO 9999
 406 :       ELSE
 407 :          LOGSCA = .TRUE.
 408 :          SEGACT MLMOSC
 409 :          NSCA = MLMOSC.MOTS(/2)
 410 :       ENDIF
 411 : C
 412 : C**** On rempli les segment PROPHY 
 413 : C     Ordre: IPGAZ . 'ESPEULE' + IPGAZ . 'ESPNEULE' 
 414 : C     On controlle aussi la compatibilite des
 415 : C     donnes de la table
 416 : C
 417 :       SEGINI PROPHY
 418 : C
 419 : C**** N.B. NOMMOT est un CHARACTER*(4)
 420 : C     
 421 :       DO I1 = 1, NESP+1
 422 :          NOMMOT = MLMOT2.MOTS(I1)
 423 : C
 423 : C******* CALL ACMF(...)  ne marche pas parce que on a
 424 : C        des blanches dans nos composantes
 425 : C
 426 :          MTYPI = 'MOT     '
 427 :          MTYPR = '        '
 427 :          CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,NOMMOT, LOGII,IRETI,
 428 :      &        MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
 429 : C
 430 : C******* En IESP il y a la table IPGAZ.NOMMOT
 431 : C
 432 :          IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE   ')) THEN
 433 : 
 434 : C
 435 : C********** Message d'erreur standard
 436 : C           -301 0 %m1:40
 437 : C
 438 :             MOTERR = '                                        '
 439 :             MOTERR(1:7) = 'ARG1 . '
 440 :             MOTERR(8:11) = NOMMOT
 441 :             MOTERR(13:17) = '= ???'
 442 :             WRITE(IOIMP,*) MOTERR
 443 : C
 444 : C********** Message d'erreur standard
 445 : C           21 2
 446 : C           Données incompatibles
 447 : C
 447 :             CALL ERREUR(21)
 448 :             GOTO 9999
 449 :          ENDIF  
 450 : C
 451 : C******* R
 452 : C
 453 :             MTYPI = 'MOT     '
 454 :             MTYPR = '        '
 454 :             CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'R' , LOGII,IRETI,
 455 :      &           MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
 456 :             IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 457 : 
 458 : C     
 459 : C********** Message d'erreur standard
 460 : C           -301 0 %m1:40
 461 : C
 462 :                MOTERR = '                                        '
 463 :                MOTERR(1:7) = 'ARG1 . '
 464 :                MOTERR(8:11) = NOMMOT
 465 :                MOTERR(13:23) = ' . R = ??? '
 466 :                WRITE(IOIMP,*) MOTERR
 467 : C
 468 : C********** Message d'erreur standard
 469 : C           21 2
 470 : C           Données incompatibles
 471 : C
 471 :                CALL ERREUR(21)
 472 :                GOTO 9999
 473 :             ENDIF  
 474 :             PROPHY.R(I1)=XVALR
 475 : C
 476 : C******* H0K
 477 : C
 478 :             MTYPI = 'MOT     '
 479 :             MTYPR = '        '
 479 :             CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
 480 :      &           MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
 481 :             IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 482 :  
 483 : C
 484 : C********** Message d'erreur standard
 485 : C           -301 0 %m1:40
 486 : C
 487 :                MOTERR = '                                        '
 488 :                MOTERR(1:7) = 'ARG1 . '
 489 :                MOTERR(8:11) = NOMMOT
 490 :                MOTERR(13:25) = ' . H0K = ??? '
 491 :                WRITE(IOIMP,*) MOTERR
 492 : C
 493 : C********** Message d'erreur standard
 494 : C           21 2
 495 : C           Données incompatibles
 496 : C
 496 :                CALL ERREUR(21)
 497 :                GOTO 9999
 498 :             ENDIF  
 499 :             PROPHY.H0K(I1)=XVALR
 500 : C
 501 : C******* A
 502 : C
 503 :             MTYPI = 'MOT     '
 504 :             MTYPR = '        '
 504 :             CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'A' , LOGII,IRETI,
 505 :      &           MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
 506 :             IF((IERR .NE. 0) .OR. (MTYPR .NE. 'LISTREEL')) THEN
 507 :                IERR = 0
 508 : C
 509 : C********** Message d'erreur standard
 510 : C           -301 0 %m1:40
 511 : C
 512 :                MOTERR = '                                        '
 513 :                MOTERR(1:7) = 'ARG1 . '
 514 :                MOTERR(8:11) = NOMMOT
 515 :                MOTERR(13:23) = ' . A = ??? '
 516 :                WRITE(IOIMP,*) MOTERR
 517 : C
 518 : C********** Message d'erreur standard
 519 : C           21 2
 520 : C           Données incompatibles
 521 : C
 521 :                CALL ERREUR(21)
 522 :                GOTO 9999
 523 :             ENDIF  
 524 :             MLREEL = IRETR
 525 :             SEGACT MLREEL
 526 : C
 527 : C******* Dans le calcul, c'est plus utile ACV dans la forme
 528 : C        ACV(,exponente,espece)
 529 : C
 530 :             DO I2 = 1, NORDP1
 531 :                PROPHY.ACV(I2,I1)= MLREEL.PROG(I2)
 532 :             ENDDO
 533 :             SEGDES MLREEL
 534 :          ENDDO
 535 :          SEGDES MLMOT2
 536 : C
 537 : C**** La table IPGAZ donc a ete controllee et PROPHY est rempli
 538 : C
 539 : C
 540 : C**** On va lire les pointeurs des MCHAMLs
 541 : C     Lecture du MCHAML 'FACEL' densité
 542 : C
 543 :       TYPE='MCHAML  '
 543 :       CALL  LIROBJ(TYPE,IROF,1,IRET)
 544 :       IF(IERR.NE.0) GOTO 9999
 545 : C
 546 : C**** Lecture du MCHAML 'FACEL' vitesse
 547 : C   
 548 :       TYPE='MCHAML  '
 548 :       CALL  LIROBJ(TYPE,IVITF,1,IRET)
 549 :       IF(IERR .NE. 0) GOTO 9999
 550 : C
 551 : C**** Lecture du MCHAML 'FACEL' contenant la pression
 552 : C    
 553 :       TYPE='MCHAML  '
 553 :       CALL  LIROBJ(TYPE,IPF,1,IRET)
 554 :       IF(IERR .NE. 0) GOTO 9999
 555 : C
 556 : C**** Lecture du MCHAML 'FACEL' contenant les fractions massiques
 557 : C
 558 :       IF(LOGME)THEN
 559 :          TYPE='MCHAML  '
 559 :          CALL  LIROBJ(TYPE,IFRMAF,1,IRET)
 560 :          IF(IERR .NE. 0) GOTO 9999
 561 :       ENDIF
 562 : C
 563 : C**** Lecture du MCHAML 'FACEL' contenant les scalaires passifs
 564 : C
 565 :       IF(LOGSCA)THEN
 566 :          TYPE='MCHAML  '
 566 :          CALL  LIROBJ(TYPE,ISCAF,1,IRET)
 567 :          IF(IERR .NE. 0) GOTO 9999
 568 :       ENDIF
 569 : C
 570 : C**** NINC = nombre d'inconnues
 571 : C
 572 :       NINC=IDIM+2+NESP+NSCA
 573 : C
 574 :       TYPE='LISTMOTS'
 574 :       CALL LIROBJ(TYPE,ILIINC,1,IRET)
 575 :       IF(IERR .NE. 0) GOTO 9999
 576 :       MLMOTS = ILIINC
 577 :       SEGACT MLMOTS
 578 :       NC = MLMOTS.MOTS(/2)
 579 :       SEGDES MLMOTS
 580 :       IF(NC .NE. NINC)THEN
 581 :          MOTERR(1:40) = 'LISTINCO = ???'
 582 :          WRITE(IOIMP,*) MOTERR
 583 : C
 584 : C******* Message d'erreur standard
 585 : C        21 2
 586 : C        Données incompatibles
 587 : C
 587 :          CALL ERREUR(21)
 588 :          GOTO 9999
 589 :       ENDIF
 590 : C
 591 : C**** Boundary condition
 592 : C
 593 :       IRET=0
 594 :       TYPE='MAILLAGE'
 594 :       CALL LIROBJ(TYPE,IFLIM,0,IRET)
 595 :       IF(IERR.NE.0)GOTO 9999
 596 :       IF(IRET .EQ. 0)THEN
 597 :          MELLIM = 0
 598 :       ELSE
 599 :          MELEME=IFLIM
 600 :          SEGACT MELEME
 601 :          ICACCA=MELEME.NUM(/2)
 602 :          IF(ICACCA .EQ. 0)THEN
 603 :             MELLIM = 0
 604 :          ELSE
 605 :             MELLIM = IFLIM
 606 :          ENDIF
 607 :          SEGDES MELEME
 608 :       ENDIF
 609 : C
 610 : C**** Creation des flux aux interfaces
 611 : C
 612 :       TYPE = 'CHPOINT '
 612 :       CALL KRCHP1(TYPE, MELEMF, ICHFLU, MLMOTS)
 613 : C
 614 : C     
 615 : C**** Calcul des flux et du pas du temps.
 616 : C
 617 :       IF( IDIM .EQ. 2)THEN
 617 :          CALL KONFL2(LOGME,LOGSCA,INDMET,NORDP1,
 618 :      &        IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
 619 :      &        ICHPSU,ICHPDI,
 620 :      &        MELEMC,MELEMF,MELEFE,MELLIM,
 621 :      &        ICHFLU,
 622 :      &        DT,
 623 :      &        LOGNC,LOGAN,MESERR)
 624 :       ELSE
 624 :          CALL KONFL4(LOGME,LOGSCA,INDMET,NORDP1,
 625 :      &        IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
 626 :      &        ICHPSU,ICHPDI,
 627 :      &        MELEMC,MELEMF,MELEFE,MELLIM,
 628 :      &        ICHFLU,
 629 :      &        DT,
 630 :      &        LOGNC,LOGAN,MESERR)
 631 :       ENDIF
 632 : C
 633 :       IF(LOGAN)THEN
 634 : C
 635 : C******* Anomalie detectée
 636 : C
 637 : C
 638 : C******* Message d'erreur standard
 639 : C        -301 0
 640 : C        %m1:40
 641 : C
 642 :          MOTERR(1:40) =  MESERR(1:40)
 643 :          WRITE(IOIMP,*) MOTERR(1:40)
 644 : C
 645 : C******* Message d'erreur standard
 646 : C        5 3
 647 : C        Erreur anormale.contactez votre support
 648 : C         
 648 :          CALL ERREUR(5)
 649 :          GOTO 9999
 650 :       ENDIF
 651 :       IF(LOGNC)THEN
 652 : C
 653 : C******* Message d'erreur standard
 654 : C        -301 0
 655 : C        %m1:40
 656 : C
 657 :          MOTERR(1:40) =  MESERR(1:40)
 658 :          WRITE(IOIMP,*) MOTERR(1:40)
 659 : C
 660 : C******* Message d'erreur standard
 661 : C        460 2
 662 : C        Pas de convergence dans les itérations internes
 663 : C
 663 :          CALL ERREUR(460)
 664 :          GOTO 9999
 665 :       ENDIF
 666 : C
 667 : C**** Calcul de residu (si LOGRES = .TRUE.)         
 668 : C
 669 :       IF(LOGRES)THEN
 670 :          TYPE = 'CHPOINT '
 670 :          CALL KRCHP1(TYPE, MELEMC, ICHRES, MLMOTS)
 671 : C
 671 :          CALL KONRE1(MELEMC,MELEMF,MELEFE,ICHPVO,
 672 :      &        ICHFLU, ICHRES,
 673 :      &        LOGAN,MESERR)
 674 :          IF(LOGAN)THEN
 675 : C
 676 : C******* Anomalie detectée
 677 : C
 678 : C
 679 : C******* Message d'erreur standard
 680 : C        -301 0
 681 : C        %m1:40
 682 : C
 683 :             MOTERR(1:40) =  MESERR(1:40)
 684 :             WRITE(IOIMP,*) MOTERR(1:40)
 685 : C
 686 : C******* Message d'erreur standard
 687 : C        5 3
 688 : C        Erreur anormale.contactez votre support
 689 : C         
 689 :             CALL ERREUR(5)
 690 :             GOTO 9999
 691 :          ENDIF         
 692 :       ELSE
 693 :          ICHRES = 0
 694 :       ENDIF
 695 : C
 696 : C**** Ecriture des resultats
 697 : C
 697 :       CALL ECRREE(DT)
 698 :       TYPE = 'CHPOINT '
 698 :       IF(ICHRES .NE. 0) CALL ECROBJ(TYPE,ICHRES)
 698 :       IF(ICHFLU .NE. 0) CALL ECROBJ(TYPE,ICHFLU)
 699 : C
 700 :       SEGDES PROPHY
 701 :       IF(LOGME) SEGDES MLMOEU
 702 :       IF(LOGSCA) SEGDES MLMOSC
 703 : C
 704 :  9999 CONTINUE
 705 :       RETURN
 706 :       END
 707 :       
 708 :  
 709 :  
 710 :  
 711 :  
 712 :  
 713 :  
 714 :  
 715 :  
 716 :  
 717 :  
 718 :  
 719 :  

© Cast3M 2003 - All rights reserved.
Disclaimer