Download konf22.eso

Back to the list

   1 : C KONF22    SOURCE    PV        09/03/12    21:26:24     6325           
   2 :       SUBROUTINE KONF22(INDMET,
   3 :      &                  IALPF,IUVF,IULF,IPF,
   4 :      &                  ITVF,ITLF,IRVF,IRLF,
   5 :      &                  ICHPSU,ICHPDI,
   6 :      &                  MELEMC,MELEMF,MELEFE,
   7 :      &                  ICHFLU,DT,
   8 :      &                  LOGNC,LOGAN,MESERR)
   9 : C************************************************************************
  10 : C
  11 : C PROJET            :  CASTEM 2000
  12 : C
  13 : C NOM               :  KONFL9
  14 : C
  15 : C DESCRIPTION       :  Voir KONV15
  16 : C
  17 : C                      3D two phase flow
  18 : C     
  19 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (AVEC ESTENSIONS CISI)
  20 : C      
  21 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/TTMF
  22 : C                      MODIFIED FOR TWO PHASE FLOW BY
  23 : C                      JOSÉ R.                                               
  24 : C
  25 : C************************************************************************
  26 : C
  27 : C
  28 : C APPELES (OUTILS
  29 : C          CASTEM)  :  KRIPAD, LICHT
  30 : C      
  31 : C APPELES (CALCUL)  :  FLURIE, FLUXVL, FLUVLH, FLHUS1, FLHUS2
  32 : C
  33 : C
  34 : C************************************************************************
  35 : C
  36 : C ENTREES
  37 : C
  38 : C
  39 : C  1) PARAMETRES
  40 : C      
  41 : C     INDMET  :     6        AUSM+
  42 : C
  43 : C
  44 : C  2) POINTEURS DES MCHAMLS
  45 : C
  46 : C     IALPF   : MCHAML SUR "FACEL" CONTAINING VOID FRACTION
  47 : C
  48 : C     IUVF    : MCHAML SUR "FACEL" CONTAINING VAPOUR VELOCITY
  49 : C
  50 : C     IULF    : MCHAML SUR "FACEL" CONTAINING LIQUID VELOCITY
  51 : C
  52 : C     IPF     : MCHAML SUR "FACEL" CONTAINING PRESSURE
  53 : C
  54 : C     ITVF    : MCHAML SUR "FACEL" CONTAINING VAPOUR TEMPERATURE
  55 : C
  56 : C     ITLF    : MCHAML SUR "FACEL" CONTAINING LIQUID TEMPERATURE
  57 : C
  58 : C     IRVF    : MCHAML SUR "FACEL" CONTAINING VAPOUR DENSITY
  59 : C
  60 : C     IRLF    : MCHAML SUR "FACEL" CONTAINING LIQUID DENSITY
  61 : C
  62 : C
  63 : C  3) POINTEURS DE CHPOINTS DE LA TABLE DOMAINE
  64 : C
  65 : C     ICHPSU  : CHPOINT "FACE" CONTENANT LA SURFACE DES FACES
  66 : C
  67 : C     ICHPDI  : CHPOINT "CENTRE" CONTENANT LE DIAMETRE MINIMUM
  68 : C               DE CHAQUE ELEMENT
  69 : C
  70 : C     
  71 : C  4) POINTEURS DE MELEME DE LA TABLE DOMAINE
  72 : C
  73 : C     MELEMC  : MELEME 'CENTRE' DU SPG DES CENTRES
  74 : C
  75 : C     MELEMF  : MELEME 'FACE' DU SPG DES FACES
  76 : C
  77 : C     MELEFE  : MELEME 'FACEL' DU CONNECTIVITÉ FACES -> ELEM
  78 : C
  79 : C SORTIES 
  80 : C
  81 : C     ICHFLU     : POINTEURS DE CHPOINTS "FACE" DES FLUX AUX INTERFACES:
  82 : C
  83 : C     DT      : PAS DE TEMPS POUR LE RESPECT DE LA CFL-LIKE CONDITION
  84 : C               DT < DIAMMIN /2 /MAX(LAMBDA_I)
  85 : C               EN MAILLAGE REGULIER CETTE CONDITION GARANTIE LA
  86 : C               NON-INTERACTION DES ONDES
  87 : C
  88 : C
  89 : C     LOGNC   : (LOGICAL): SI .TRUE. LA METHODE DE NEWTON-RAPSON, UTILISÉE
  90 : C               DANS POUR LA SOLUTION DU PROBLEME RIEMANN EXACTE OU DANS
  91 : C               L'ALGORITHM HUS, N'A PAS BIEN MARCHÉEE; MESERR = 'GOUDUNOV'
  92 : C               OU 'HUS'.
  93 : C
  94 : C     LOGAN   : (LOGICAL): SI .TRUE. UNE ANOMALIE À ÉTÉ DETECTÉE
  95 : C
  96 : C     MESERR  : POUR L'ECRITURE DES MESSAGES D'ERREURS
  97 : C
  98 : C************************************************************************
  99 : C
 100 : C HISTORIQUE (ANOMALIES ET MODIFICATIONS ÉVENTUELLES)
 101 : C
 102 : C HISTORIQUE :
 103 : C      
 104 : C************************************************************************
 105 : C
 106 : C
 107 : C N.B.: ON SUPPOSE QU'ON A DÉJÀ CONTROLLÉ RO, P > 0
 108 : C                                         GAMMA \IN (1,3)
 109 : C                                         Y \IN (0,1)      
 110 : C       SI NON IL FAUT LE FAIRE!!!
 111 : C
 112 : C************************************************************************
 113 : C               
 114 : C
 115 : C**** VARIABLES DE COOPTIO
 116 : C
 117 :       INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 118 :      &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 119 :      &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 120 :      &        ,IECHO,   IIMPI,  IOSPI
 121 :      &        ,IDIM,    IFICLE, IPREFI 
 122 :      &        ,MCOORD      
 123 :      &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 124 :      &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 125 :      &        ,NORINC,NORVAL,NORIND,NORVAD
 126 :      &        ,NUCROU, IPSAUV
 127 : C
 128 :       INTEGER I1
 129 :      &       ,INDMET
 130 :      &       ,IALPF,IUVF,IULF,IPF,ITVF,ITLF,IRVF,IRLF
 131 :      &       ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
 132 :      &       ,IGEOMC,IGEOMF
 133 :      &       ,ICHFLU
 134 :      &       ,NESP, NFAC
 135 :      &       ,NLCF, NGCEG,  NGCED, NLCEG, NLCED
 136 :      &       ,NGCF, NLCF1, SPG1, SPG2
 137 :       REAL*8 DT, UNSDT
 138 :      &     , ALPG, UVNG, UVTG, UVVG, ULNG, ULTG, ULVG, PG, TVG, TLG
 139 :      &     , RVG,  RLG
 140 :      &     , ALPD, UVND, UVTD, UVVD, ULND, ULTD, ULVD, PD, TVD, TLD
 141 :      &     , RVD,  RLD
 142 :      &     , SURF, CNX, CNY, CNZ, CTX , CTY, CTZ, CVX, CVY, CVZ
 143 :      &     , CELL, DIAMG, DIAMD, DIAM
 144 :      &     , AVSON, LAMDAV, ALSON, LAMDAL, kk
 145 :       LOGICAL LOGNC, LOGAN
 146 :       CHARACTER*(40) MESERR
 147 :       CHARACTER*(8) TYPE
 148 : C
 149 : C**** LES INCLUDES
 150 : C
 151 : -INC CCOPTIO
 152 : -INC SMCHAML
 153 :       POINTEUR MELALP.MELVAL, MELP.MELVAL, 
 154 :      &         MELTV.MELVAL,  MELTL.MELVAL, 
 155 :      &         MELRV.MELVAL,  MELRL.MELVAL
 156 :       POINTEUR MELUVN.MELVAL, MELUVT.MELVAL, MELUVV.MELVAL,
 157 :      &         MELULN.MELVAL, MELULT.MELVAL, MELULV.MELVAL,
 158 :      &         MLVNX.MELVAL,  MLVNY.MELVAL,  MLVNZ.MELVAL,
 159 :      &         MLVT1X.MELVAL, MLVT1Y.MELVAL, MLVT1Z.MELVAL,
 160 :      &         MLVT2X.MELVAL, MLVT2Y.MELVAL, MLVT2Z.MELVAL,
 161 :      &         MLLNX.MELVAL,  MLLNY.MELVAL,  MLLNZ.MELVAL,
 162 :      &         MLLT1X.MELVAL, MLLT1Y.MELVAL, MLLT1Z.MELVAL,
 163 :      &         MLLT2X.MELVAL, MLLT2Y.MELVAL, MLLT2Z.MELVAL
 164 : -INC SMCHPOI      
 165 :       POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
 166 :      &        , MPOFLU.MPOVAL
 167 :       POINTEUR MCHAMY.MCHAML
 168 : -INC SMELEME
 169 : -INC SMLMOTS
 170 : -INC SMLENTI
 171 : C
 172 : C**** FLUX AT EACH INTERFACE AND EACH REFERENCE FRAMEWORK
 173 : C
 174 :       SEGMENT IFLUX
 175 :          REAL*8 FLUX(10)
 176 :       ENDSEGMENT
 177 :       POINTEUR IFLU1.IFLUX
 178 : C
 179 : C**** INITIALISATION DES MCHAMLS
 180 : C
 181 : C**** VOID FRACTION
 182 : C
 183 :       MCHEL1 = IALPF
 184 :       SEGACT MCHEL1
 185 :       MCHAM1 = MCHEL1.ICHAML(1)
 186 :       SEGACT MCHAM1
 187 :       MELALP = MCHAM1.IELVAL(1) 
 188 :       SEGDES MCHEL1
 189 :       SEGDES MCHAM1
 190 : C
 191 : C**** VAPOUR VELOCITY AND DIRECTOR COSINES (COSENOS DIRECTORES VAMOS??)
 192 : C
 193 :       MCHEL1 = IUVF
 194 :       SEGACT MCHEL1
 195 : C
 196 : C**** LA VITESSE A COMME SPG MELEFE
 197 : C     LE COSINUS DIRECTEURS ONT COMME SPG MELEMF
 198 : C
 199 : C     MCHAM1 -> COSINUS DIRECTEURS
 200 : C     MCHAM2 -> VITESSE
 201 : C      
 202 :       SPG1 = MCHEL1.IMACHE(1)
 203 :       SPG2 = MCHEL1.IMACHE(2)
 204 :       IF((SPG1 .EQ. MELEMF)  .AND. (SPG2 .EQ. MELEFE))THEN
 205 :          MCHAM1 = MCHEL1.ICHAML(1)
 206 :          MCHAM2 = MCHEL1.ICHAML(2)
 207 :       ELSEIF((SPG1 .EQ. MELEFE)  .AND. (SPG2 .EQ. MELEMF))THEN
 208 :          MCHAM1 = MCHEL1.ICHAML(2)
 209 :          MCHAM2 = MCHEL1.ICHAML(1)
 210 :       ELSE
 211 :          LOGAN = .TRUE.
 212 :          GOTO 9999
 213 :       ENDIF
 214 :       SEGACT MCHAM1
 215 :       MLVNX  = MCHAM1.IELVAL(1)
 216 :       MLVNY  = MCHAM1.IELVAL(2)
 217 :       MLVNZ  = MCHAM1.IELVAL(3)
 218 :       MLVT1X = MCHAM1.IELVAL(4)
 219 :       MLVT1Y = MCHAM1.IELVAL(5)
 220 :       MLVT1Z = MCHAM1.IELVAL(6)
 221 :       MLVT2X = MCHAM1.IELVAL(7)
 222 :       MLVT2Y = MCHAM1.IELVAL(8)
 223 :       MLVT2Z = MCHAM1.IELVAL(9)
 224 : 
 225 :       SEGDES MCHAM1
 226 :       SEGACT MCHAM2
 227 :       MELUVN = MCHAM2.IELVAL(1)
 228 :       MELUVT = MCHAM2.IELVAL(2)
 229 :       MELUVV = MCHAM2.IELVAL(3)
 230 :       SEGDES MCHAM2      
 231 :       SEGDES MCHEL1
 232 : C
 233 : C**** LIQUID VELOCITY AND DIRECTOR COSINES (COSENOS DIRECTORES VAMOS??)
 234 : C     CLARAMENTE TENGO QUE ELIMINAR LOS COSENOS DIRECTORES DE LA
 235 : C     VELOCIDAD DEL LIQUIDO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 236 : C
 237 :       MCHEL1 = IULF
 238 :       SEGACT MCHEL1
 239 : C
 240 : C**** LA VITESSE A COMME SPG MELEFE
 241 : C     LE COSINUS DIRECTEURS ONT COMME SPG MELEMF
 242 : C
 243 : C     MCHAM1 -> COSINUS DIRECTEURS
 244 : C     MCHAM2 -> VITESSE
 245 : C      
 246 :       SPG1 = MCHEL1.IMACHE(1)
 247 :       SPG2 = MCHEL1.IMACHE(2)
 248 :       IF((SPG1 .EQ. MELEMF)  .AND. (SPG2 .EQ. MELEFE))THEN
 249 :          MCHAM1 = MCHEL1.ICHAML(1)
 250 :          MCHAM2 = MCHEL1.ICHAML(2)
 251 :       ELSEIF((SPG1 .EQ. MELEFE)  .AND. (SPG2 .EQ. MELEMF))THEN
 252 :          MCHAM1 = MCHEL1.ICHAML(2)
 253 :          MCHAM2 = MCHEL1.ICHAML(1)
 254 :       ELSE
 255 :          LOGAN = .TRUE.
 256 :          GOTO 9999
 257 :       ENDIF
 258 :       SEGACT MCHAM1
 259 :       MLLNX  = MCHAM1.IELVAL(1)
 260 :       MLLNY  = MCHAM1.IELVAL(2)
 261 :       MLLNZ  = MCHAM1.IELVAL(3)
 262 :       MLLT1X = MCHAM1.IELVAL(4)
 263 :       MLLT1Y = MCHAM1.IELVAL(5)
 264 :       MLLT1Z = MCHAM1.IELVAL(6)
 265 :       MLLT2X = MCHAM1.IELVAL(7)
 266 :       MLLT2Y = MCHAM1.IELVAL(8)
 267 :       MLLT2Z = MCHAM1.IELVAL(9)
 268 :       SEGDES MCHAM1
 269 :       SEGACT MCHAM2
 270 :       MELULN = MCHAM2.IELVAL(1)
 271 :       MELULT = MCHAM2.IELVAL(2)
 272 :       MELULV = MCHAM2.IELVAL(3)
 273 :       SEGDES MCHAM2      
 274 :       SEGDES MCHEL1
 275 : C
 276 : C**** PRESSURE
 277 : C
 278 :       MCHEL1 = IPF
 279 :       SEGACT MCHEL1
 280 :       MCHAM1 = MCHEL1.ICHAML(1)
 281 :       SEGACT MCHAM1
 282 :       MELP = MCHAM1.IELVAL(1) 
 283 :       SEGDES MCHEL1
 284 :       SEGDES MCHAM1
 285 : C
 286 : C**** VAPOUR TEMPERATURE
 287 : C
 288 :       MCHEL1 = ITVF
 289 :       SEGACT MCHEL1
 290 :       MCHAM1 = MCHEL1.ICHAML(1)
 291 :       SEGACT MCHAM1
 292 :       MELTV = MCHAM1.IELVAL(1) 
 293 :       SEGDES MCHEL1
 294 :       SEGDES MCHAM1
 295 : C
 296 : C**** LIQUID TEMPERATURE
 297 : C
 298 :       MCHEL1 = ITLF
 299 :       SEGACT MCHEL1
 300 :       MCHAM1 = MCHEL1.ICHAML(1)
 301 :       SEGACT MCHAM1
 302 :       MELTL = MCHAM1.IELVAL(1) 
 303 :       SEGDES MCHEL1
 304 :       SEGDES MCHAM1
 305 : C
 306 : C**** VAPOUR DENSITY
 307 : C
 308 :       MCHEL1 = IRVF
 309 :       SEGACT MCHEL1
 310 :       MCHAM1 = MCHEL1.ICHAML(1)
 311 :       SEGACT MCHAM1
 312 :       MELRV = MCHAM1.IELVAL(1) 
 313 :       SEGDES MCHEL1
 314 :       SEGDES MCHAM1
 315 : C
 316 : C**** LIQUID DENSITY
 317 : C
 318 :       MCHEL1 = IRLF
 319 :       SEGACT MCHEL1
 320 :       MCHAM1 = MCHEL1.ICHAML(1)
 321 :       SEGACT MCHAM1
 322 :       MELRL = MCHAM1.IELVAL(1) 
 323 :       SEGDES MCHEL1
 324 :       SEGDES MCHAM1
 325 : C
 326 : C**** INITIALISATION DES MELEMES
 327 : C
 328 : C     'CENTRE', 'FACEL'
 329 : C
 330 :       IPT2 = MELEFE
 331 :       SEGACT IPT2
 332 :       NFAC = IPT2.NUM(/2)
 333 : C
 334 : C**** KRIPAD POUR LA CORRESPONDANCE GLOBAL/LOCAL DE CENTRE
 335 : C
 335 :       CALL KRIPAD(MELEMC,MLENT1)
 336 : C
 337 : C**** MLENTI1 A MCORD.XCOORD(/1)/(IDIM+1) ELEMENTS
 338 : C
 339 : C     SI I EST LE NUMERO GLOBAL D'UN NOEUD DE ICEN,
 340 : C     MLENT1.LECT(I) CONTIENT SA POSITION, I.E.
 341 : C
 342 : C     I              = NUMERO GLOBAL DU NOEUD CENTRE      
 343 : C     MLENT1.LECT(I) = NUMERO LOCAL DU NOEUD CENTRE
 344 : C
 345 : C     MLENT1 DÉJÀ ACTIVÉ, I.E.
 346 : C
 347 : C     SEGACT MLENT1
 348 : C      
 349 : C
 350 : C**** KRIPAD POUR LA CORRESPONDANCE GLOBAL/LOCAL DE 'FACE'
 351 : C
 351 :       CALL KRIPAD(MELEMF,MLENT2)
 352 : C     SEGACT MELNT2
 353 : C
 354 : C**** INITIALISATION DE FLUX
 355 : C
 356 :       SEGINI IFLU1                 
 357 : C
 358 : C**** CHPOINTS DE LA TABLE DOMAINE
 359 : C 
 359 :       CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
 359 :       CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
 360 : C
 361 : C**** LICHT ACTIVE LES MPOVALS EN *MOD
 362 : C
 363 : C     I.E.
 364 : C
 365 : C     SEGACT MPOVSU*MOD
 366 : C     SEGACT MPOVDI*MOD
 367 : C
 368 :       IF(IGEOMF .NE. MELEMF)THEN
 369 :          MESERR = 'IL NE FAUT PAS JOUER AVEC LA CONSOLE.   '
 370 :          LOGAN = .TRUE.
 371 :          GOTO 9999
 372 :       ENDIF 
 373 :       IF(IGEOMC .NE. MELEMC)THEN
 374 :          MESERR = 'IL NE FAUT PAS JOUER AVEC LA CONSOLE.   '
 375 :          LOGAN = .TRUE.
 376 :          GOTO 9999
 377 :       ENDIF 
 378 : C
 379 : C**** LES FLUX AUX FACE
 380 : C
 381 : C     LA DENSITÉ
 382 : C      
 382 :       CALL LICHT(ICHFLU,MPOFLU,TYPE,IGEOMF)
 383 : C
 384 : C     SEGACT MPOFLU*MOD
 385 : C
 386 :       IF(IGEOMC .NE. MELEMC)THEN
 387 :          MESERR = 'IL NE FAUT PAS JOUER AVEC LA CONSOLE.   '
 388 :          LOGAN = .TRUE.
 389 :          GOTO 9999
 390 :       ENDIF 
 391 : C
 392 : C**** ACTIVATION DES MCHAMLS 
 393 : C
 394 :       SEGACT MELALP
 395 :       SEGACT MELP
 396 :       SEGACT MELTV
 397 :       SEGACT MELTL
 398 :       SEGACT MELRV
 399 :       SEGACT MELRL
 400 : 
 401 :       SEGACT MELUVN
 402 :       SEGACT MELUVT
 403 :       SEGACT MELUVV
 404 : 
 405 :       SEGACT MELULN
 406 :       SEGACT MELULT
 407 :       SEGACT MELULV
 408 : 
 409 :       SEGACT MLVNX
 410 :       SEGACT MLVNY
 411 :       SEGACT MLVNZ
 412 :       SEGACT MLVT1X
 413 :       SEGACT MLVT1Y
 414 :       SEGACT MLVT1Z
 415 :       SEGACT MLVT2X
 416 :       SEGACT MLVT2Y
 417 :       SEGACT MLVT2Z
 418 : 
 419 :       SEGACT MLLNX
 420 :       SEGACT MLLNY
 421 :       SEGACT MLLNZ
 422 :       SEGACT MLLT1X
 423 :       SEGACT MLLT1Y
 424 :       SEGACT MLLT1Z
 425 :       SEGACT MLLT2X
 426 :       SEGACT MLLT2Y
 427 :       SEGACT MLLT2Z
 428 : C
 429 : C**** INITIALISATION DE 1/DT
 430 : C
 431 :       UNSDT = 0.0D0
 432 : C
 433 : C**** BOUCLE SUR FACEL POUR LE CALCUL DU FLUX
 434 : C
 435 :       DO NLCF = 1, NFAC
 436 : C
 437 : C******* NLCF  = NUMERO LOCAL DU CENTRE DE FACEL
 438 : C        NGCF  = NUMERO GLOBAL DU CENTRE DE FACEL
 439 : C        NLCF1 = NUMERO LOCAL DU CENTRE DE FACE         
 440 : C        NGCEG = NUMERO GLOBAL DU CENTRE ELT "GAUCHE"
 441 : C        NLCEG = NUMERO LOCAL DU CENTRE ELT "GAUCHE"
 442 : C        NGCED = NUMERO GLOBAL DU CENTRE ELT "DROITE"
 443 : C        NLCED = NUMERO LOCAL DU CENTRE ELT "DROITE"
 444 : C
 445 :          NGCEG = IPT2.NUM(1,NLCF)
 446 :          NGCED = IPT2.NUM(3,NLCF)
 447 :          NGCF  = IPT2.NUM(2,NLCF)
 448 :          NLCF1 = MLENT2.LECT(NGCF)
 449 :          NLCEG = MLENT1.LECT(NGCEG)
 450 :          NLCED = MLENT1.LECT(NGCED)
 451 : C
 452 : C******* NLCF != NLCF1 -> L'AUTEUR (MOI) N'A RIEN COMPRIS.
 453 : C
 454 :          IF(NLCF .NE. NLCF1)THEN
 455 :             MESERR = 'IL NE FAUT PAS JOUER AVEC LA CONSOLE.   '
 456 :             LOGAN = .TRUE.
 457 :             GOTO 9999
 458 :          ENDIF 
 459 : C
 460 : C******* RECUPERATION DES ETATS "GAUCHE" ET "DROITE"
 461 : C
 462 :          ALPG = MELALP.VELCHE(1,NLCF)
 463 :          UVNG = MELUVN.VELCHE(1,NLCF)
 464 :          UVTG = MELUVT.VELCHE(1,NLCF)
 465 :          UVVG = MELUVV.VELCHE(1,NLCF)
 466 :          ULNG = MELULN.VELCHE(1,NLCF)
 467 :          ULTG = MELULT.VELCHE(1,NLCF)
 468 :          ULVG = MELULV.VELCHE(1,NLCF)
 469 :          PG   = MELP.VELCHE(1,NLCF)
 470 :          TVG  = MELTV.VELCHE(1,NLCF)
 471 :          TLG  = MELTL.VELCHE(1,NLCF)
 472 :          RVG  = MELRV.VELCHE(1,NLCF)
 473 :          RLG  = MELRL.VELCHE(1,NLCF)
 474 : C
 475 :          ALPD = MELALP.VELCHE(3,NLCF)
 476 :          UVND = MELUVN.VELCHE(3,NLCF)
 477 :          UVTD = MELUVT.VELCHE(3,NLCF)
 478 :          UVVD = MELUVV.VELCHE(3,NLCF)
 479 :          ULND = MELULN.VELCHE(3,NLCF)
 480 :          ULTD = MELULT.VELCHE(3,NLCF)
 481 :          ULVD = MELULV.VELCHE(3,NLCF)
 482 :          PD   = MELP.VELCHE(3,NLCF)
 483 :          TVD  = MELTV.VELCHE(3,NLCF)
 484 :          TLD  = MELTL.VELCHE(3,NLCF)
 485 :          RVD  = MELRV.VELCHE(3,NLCF)
 486 :          RLD  = MELRL.VELCHE(3,NLCF)
 487 : C
 488 :          CNX = MLVNX.VELCHE(1,NLCF)
 489 :          CNY = MLVNY.VELCHE(1,NLCF)
 490 :          CNZ = MLVNZ.VELCHE(1,NLCF)
 491 :          CTX = MLVT1X.VELCHE(1,NLCF)
 492 :          CTY = MLVT1Y.VELCHE(1,NLCF)
 493 :          CTZ = MLVT1Z.VELCHE(1,NLCF)
 494 :          CVX = MLVT2X.VELCHE(1,NLCF)
 495 :          CVY = MLVT2Y.VELCHE(1,NLCF)
 496 :          CVZ = MLVT2Z.VELCHE(1,NLCF)
 497 : 
 498 : C
 499 : C******* Calcul du flux aux interfaces
 500 : C
 501 : C AUSM+ (1) and "preconditioned" AUSM+ (2)
 502 :          IF((INDMET .EQ. 1) .OR. (INDMET .EQ. 2))THEN
 502 :             CALL fAP32F(INDMET,
 503 :      &                  ALPG, UVNG, UVTG, UVVG, ULNG, ULTG, ULVG, 
 504 :      &                  PG, TVG, TLG, RVG, RLG,
 505 :      &                  ALPD, UVND, UVTD, UVVD, ULND, ULTD, ULVD, 
 506 :      &                  PD, TVD, TLD, RVD, RLD,
 507 :      &                  IFLU1.FLUX)
 508 : C AUSMDV (3) and "preconditioned" AUSMDV (3)
 509 :          ELSE IF((INDMET .EQ. 3) .OR. (INDMET .EQ. 4))THEN
 509 :             CALL fDV32F(INDMET,
 510 :      &                  ALPG, UVNG, UVTG, UVVG, ULNG, ULTG, ULVG,
 511 :      &                  PG, TVG, TLG, RVG, RLG,
 512 :      &                  ALPD, UVND, UVTD, UVVD, ULND, ULTD, ULVD, 
 513 :      &                  PD, TVD, TLD, RVD, RLD,
 514 :      &                  IFLU1.FLUX) 
 515 :          ELSE
 516 : C
 517 : C******** Message d'erreur standard
 518 : C         251 2
 519 : C         Tentative d'utilisation d'une option non implémentée
 520 : C
 520 :             CALL ERREUR(251)
 521 :          END IF
 522 :          IF(LOGAN) GOTO 9999
 523 :          IF(LOGNC) GOTO 9999
 524 : C
 525 : C******* Ecriture des flux
 526 : C
 527 : C        FLUX(1) = alpha rv uvn
 528 : C        FLUX(2) = (1-alpha) rl uln
 529 : C        FLUX(3) = alpha rv uvx uvn + alpha p 
 530 : C        FLUX(4) = alpha rv uvy uvn + alpha p 
 531 : C        FLUX(5) = alpha rv uvz uvn + alpha p 
 532 : C        FLUX(6) = (1-alpha) rl ulx uln + (1-alpha) p
 533 : C        FLUX(7) = (1-alpha) rl uly uln + (1-alpha) p
 534 : C        FLUX(8) = (1-alpha) rl ulz uln + (1-alpha) p
 535 : C        FLUX(9) = alpha rv Hv uvn
 536 : C        FLUX(10) = (1-alpha) rl Hl uln
 537 : C
 538 :          SURF   = MPOVSU.VPOCHA(NLCF,1)
 539 : 
 540 :          MPOFLU.VPOCHA(NLCF,1) = (IFLU1.FLUX(1)*SURF)
 541 : 
 542 :          MPOFLU.VPOCHA(NLCF,2) = (IFLU1.FLUX(2)*SURF)
 543 : 
 544 :          MPOFLU.VPOCHA(NLCF,3) = ((IFLU1.FLUX(3)*CNX + IFLU1.FLUX(5)*CTX
 545 :      &                           + IFLU1.FLUX(7)*CVX)*SURF)
 546 : 
 547 :          MPOFLU.VPOCHA(NLCF,4) = ((IFLU1.FLUX(3)*CNY + IFLU1.FLUX(5)*CTY
 548 :      &                           + IFLU1.FLUX(7)*CVY)*SURF)
 549 : 
 550 :          MPOFLU.VPOCHA(NLCF,5) = ((IFLU1.FLUX(3)*CNZ + IFLU1.FLUX(5)*CTZ
 551 :      &                           + IFLU1.FLUX(7)*CVZ)*SURF)
 552 :   
 553 :          MPOFLU.VPOCHA(NLCF,6) = ((IFLU1.FLUX(4)*CNX + IFLU1.FLUX(6)*CTX
 554 :      &                           + IFLU1.FLUX(8)*CVX)*SURF)
 555 : 
 556 :          MPOFLU.VPOCHA(NLCF,7) = ((IFLU1.FLUX(4)*CNY+IFLU1.FLUX(6)*CTY
 557 :      &                           + IFLU1.FLUX(8)*CVY)*SURF)
 558 : 
 559 :          MPOFLU.VPOCHA(NLCF,8) = ((IFLU1.FLUX(4)*CNZ+IFLU1.FLUX(6)*CTZ
 560 :      &                           + IFLU1.FLUX(8)*CVZ)*SURF)
 561 : 
 562 :          MPOFLU.VPOCHA(NLCF,9) = (IFLU1.FLUX(9)*SURF)
 563 : 
 564 :          MPOFLU.VPOCHA(NLCF,10) = (IFLU1.FLUX(10)*SURF)
 565 : 
 566 : C     
 567 : C******* CALCUL DU PAS DU TEMPS (CFL)
 568 : C
 569 : C******  A) ETAT A L'ITNERFACE
 570 : C         
 571 :          DIAMG = MPOVDI.VPOCHA(NLCEG,1)
 572 :          DIAMD = MPOVDI.VPOCHA(NLCED,1)
 573 :          DIAM  = MIN(DIAMG,DIAMD)
 574 : C         CELL  = 1.0D0/DIAM/CELLT
 575 : C         IF(CELL .GT. UNSDT)THEN
 576 : C            UNSDT  =  CELL
 577 : C         ENDIF            
 578 : C
 579 : C******  B) ETAT GAUCHE
 580 : C       gammav = 1.4D0
 581 : C       Cpv    = 1008.D0   J/(kg·K)
 582 : C       gammal = 2.8D0
 583 : C       Cpl    = 4186.D0   J/(kg·K)
 584 : C       pil    = 8.5D8      Pa
 585 : 
 586 :          AVSON  = DSQRT(1008.d0*(1.4d0 - 1.d0)*TVG)
 587 :          LAMDAV = DABS(UVNG) + AVSON
 588 :          ALSON  = DSQRT(4186.D0*(2.8d0 - 1.d0)*TLG)
 589 :          LAMDAL = DABS(ULNG) + ALSON
 590 :          CELL   = 1.D0/(((1.d0 - ALPG)/LAMDAL + ALPG/LAMDAV)* DIAM)
 591 :          IF(CELL .GT. UNSDT)THEN
 592 :             UNSDT  =  CELL
 593 :          ENDIF            
 594 : C
 595 : C******  C) ETAT DROITE
 596 : C                  
 597 :          AVSON  = DSQRT(1008.d0*(1.4d0 - 1.d0)*TVD)
 598 :          LAMDAV = DABS(UVND) + AVSON
 599 :          ALSON  = DSQRT(4186.D0*(2.8d0 - 1.d0)*TLD)
 600 :          LAMDAL = DABS(ULND) + ALSON
 601 :          CELL   = 1.D0/(((1.d0 - ALPD)/LAMDAL + ALPD/LAMDAV)* DIAM)
 602 :          IF(CELL .GT. UNSDT)THEN
 603 :             UNSDT  =  CELL
 604 :          ENDIF            
 605 : C         
 606 : C
 607 : C**** FIN BOUCLE SUR FACEL
 608 : C         
 609 :       ENDDO
 610 : C
 611 : C**** PAS DU TEMPS (CONDITION DE NON INTERACTION EN 1D)
 612 : C      
 613 :       DT = 1.D0 / UNSDT
 614 : C
 615 : C**** DESACTIVATION DES SEGMENTS ET
 616 : C     ON DETRUIT LES MCHAMLS      
 617 : C
 618 : C**** SEGSUP FRAMAG
 619 : C     SEGSUP FRAMAD
 620 : C     
 621 : C
 622 : C      
 623 :       SEGSUP MLENT1
 624 :       SEGSUP MLENT2
 625 :       SEGDES IPT2
 626 : 
 627 :       SEGSUP IFLU1
 628 : 
 629 :       SEGDES MPOVSU
 630 :       SEGDES MPOVDI
 631 : 
 632 :       SEGDES MPOFLU
 633 : 
 634 :       SEGDES MELALP
 635 :       SEGDES MELP
 636 :       SEGDES MELTV
 637 :       SEGDES MELTL
 638 :       SEGDES MELRV
 639 :       SEGDES MELRL
 640 : 
 641 :       SEGDES MELUVN
 642 :       SEGDES MELUVT
 643 :       SEGDES MELUVV
 644 : 
 645 :       SEGDES MELULN
 646 :       SEGDES MELULT
 647 :       SEGDES MELULV
 648 : 
 649 :       SEGDES MLVNX
 650 :       SEGDES MLVNY
 651 :       SEGDES MLVNZ
 652 :       SEGDES MLVT1X
 653 :       SEGDES MLVT1Y
 654 :       SEGDES MLVT1Z
 655 :       SEGDES MLVT2X
 656 :       SEGDES MLVT2Y
 657 :       SEGDES MLVT2Z
 658 : 
 659 :       SEGDES MLLNX
 660 :       SEGDES MLLNY
 661 :       SEGDES MLLNZ
 662 :       SEGDES MLLT1X
 663 :       SEGDES MLLT1Y
 664 :       SEGDES MLLT1Z
 665 :       SEGDES MLLT2X
 666 :       SEGDES MLLT2Y
 667 :       SEGDES MLLT2Z
 668 : CC
 669 :  9999 CONTINUE
 670 : C      
 671 :       RETURN
 672 :       END
 673 :  
 674 :  

© Cast3M 2003 - All rights reserved.
Disclaimer