Download pre321.eso

Back to the list

   1 : C PRE321    SOURCE    PV        09/03/12    21:30:57     6325           
   2 :       SUBROUTINE PRE321(LOGTEM,LGAMC,LYC,LSCAC,
   3 :      &                  ICEN,IFACE,IFACEL,INORM,
   4 :      &                  IROC, IGRROC, IALROC,
   5 :      &                  IVITC, IGRVC, IALVC,
   6 :      &                  IPC ,IGRPC, IALPC,
   7 :      &                  IYC ,IGRYC, IALYC,
   8 :      &                  ISCAC ,IGRSC, IALSC,
   9 :      &                  IGAMC,
  10 :      &                  DELTAT,
  11 :      &                  IROF,IVITF,IPF,IYF,ISCAF,
  12 :      &                  LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  13 : C************************************************************************
  14 : C
  15 : C PROJET            :  CASTEM 2000
  16 : C
  17 : C NOM               :  PRE321
  18 : C
  19 : C DESCRIPTION       :  Voir PRE32
  20 : C
  21 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  22 : C      
  23 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/TTMF
  24 : C     
  25 : C************************************************************************
  26 : C
  27 : C
  28 : C APPELES (Outils)  :  KRIPAD, LICHT  
  29 : C
  30 : C APPELES (Calcul)  :  AUCUN 
  31 : C     
  32 : C
  33 : C************************************************************************
  34 : C
  35 : C ENTREES
  36 : C
  37 : C     LOGTEM  : LOGICAL; si .TRUE. 2em ordre en temps
  38 : C                        sinon 1er ordre en temps
  39 : C     LGAMC,LYC,LSCAC : LOGICAL : si .TRUE. IGAMC, IYC, ISCAC sont
  40 : C                       pointeurs de CHPOINTS
  41 : C
  42 : C     1) Pointeurs de MELEMEs et de CHPOINTs de la table DOMAINE
  43 : C
  44 : C     ICEN    : MELEME de 'POI1' SPG des CENTRES
  45 : C
  46 : C     IFACE   : MELEME de 'POI1' SPG des FACES
  47 : C
  48 : C     IFACEL  : MELEME de 'SEG3' avec
  49 : C               CENTRE d'Elt "gauche"
  50 : C               CENTRE de Face
  51 : C               CENTRE d'Elt "droite"
  52 : C
  53 : C               N.B. = IFACE.NUM(i,1) = IFACEL.NUM(i,2)
  54 : C
  55 : C     INORM   : CHPOINT des cosinus directeurs de normales aux faces
  56 : C     
  57 : C     2) Autres pointeurs 
  58 : C
  59 : C     IROC    : CHPOINT "CENTRE" contenant la masse volumique RHO
  60 : C
  61 : C     IGRROC  : CHPOINT "CENTRE" contenant le gradient de la
  62 : C               masse volumique RHO (2 composantes)
  63 : C
  64 : C     IALROC  : CHPOINT "CENTRE" contenant le limiteur du gradient
  65 : C               de la masse volumique
  66 : C
  67 : C     IVITC   : CHPOINT "CENTRE" contenant la vitesse UX, UY ;
  68 : C
  69 : C     IGRVC   : CHPOINT "CENTRE" contenant le gradient de la
  70 : C               vitesse (4 composantes)
  71 : C
  72 : C     IALVC  :  CHPOINT "CENTRE" contenant le limiteur du gradient
  73 : C               de la vitesse (2 composantes)
  74 : C
  75 : C     IPC     : CHPOINT "CENTRE" contenat la pression P;
  76 : C                    
  77 : C     IGRPC   : CHPOINT "CENTRE" contenant le gradient de la
  78 : C               pression (2 composantes)
  79 : C
  80 : C     IALPC   : CHPOINT "CENTRE" contenant le limiteur du gradient
  81 : C               de la pression
  82 : C     
  83 : C     IYC     : CHPOINT "CENTRE" contenat les fractions massiques ;
  84 : C                    
  85 : C     IGRYC   : CHPOINT "CENTRE" contenant les gradient des fr.mass ;
  86 : C
  87 : C     IALPC   : CHPOINT "CENTRE" contenant les limiteurs des gradients
  88 : C               des fr.mass. ;
  89 : C
  90 : C     ISCAC   : CHPOINT "CENTRE" contenat les scalaires passifs ;
  91 : C                    
  92 : C     IGRSC   : CHPOINT "CENTRE" contenant les gradient des scalaires passifs;
  93 : C
  94 : C     IALPC   : CHPOINT "CENTRE" contenant les limiteurs des gradients
  95 : C               des  scalaires passifs ;
  96 : C
  97 : C
  98 : C     IGAMC   : CHPOINT "CENTRE" contenat le "Gamma" du gaz
  99 : C
 100 : C     3)
 101 : C
 102 : C     DELTAT  : REAL*8, encrement en temps pour calculer la prediction
 103 : C
 104 : C   
 105 : C SORTIES
 106 : C
 107 : C
 108 : C     IROF    : MCHAML  defini sur le MELEME de pointeur IFACEL,
 109 : C               contenant la masse volumique RHO       
 110 : C
 111 : C     IVITF   : MCHAML  defini sur le MELEME de pointeur IFACEL,
 112 : C               contenant la vitesse UN, UT dans le repaire local
 113 : C               (n,t) et defini sur le MELEME de pointeur IFACE,
 114 : C               contenant les cosinus directeurs du repere local 
 115 : C      
 116 : C     IPF     : MCHAML  defini sur le MELEME de pointeur IFACEL,
 117 : C               contenant la pression P
 118 : C      
 119 : C     IYF     : MCHAML  defini sur le MELEME de pointeur IFACEL,
 120 : C               contenant les  fractions massiques; 
 121 : C
 122 : C     ISCAF   : MCHAML  defini sur le MELEME de pointeur IFACEL,
 123 : C               contenant les  scalaires passifs; 
 124 : C
 125 : C     LOGAN   : anomalie detectee 
 126 : C
 127 : C     LOGNEG  : (LOGICAL): si .TRUE. une pression ou une densité
 128 : C               negative a été detectée -> en interactif le
 129 : C               programme s'arrete  en GIBIANE 
 130 : C               (erreur stocké en MESERR et VALER)
 131 : C
 132 : C     LOGBOR  : (LOGICAL): si .TRUE. un y a ete detecte
 133 : C               dehor 1 et 3 (sa valeur stockée en MESERR et VALER;
 134 : C               en VAL1 et en VAL2 on stocke 1.0 et 3.0)
 135 : C
 136 : C     MESERR
 137 : C     VALER
 138 : C     VAL1,
 139 : C     VAL2    : pour les messages d'erreur
 140 : C
 141 : C************************************************************************
 142 : C
 143 : C HISTORIQUE (Anomalies et modifications éventuelles)
 144 : C
 145 : C HISTORIQUE :  Créée le 21.12.98.
 146 : C               
 147 : C               17.02.2000: transport des scalaires passifs
 148 : C 
 149 : C************************************************************************
 150 : C
 151 : C      
 152 : C ATTENTION: Cet programme marche si le MAILLAGE est convex;
 153 : C            si non il faut changer l'algoritme de calcul de
 154 : C            l'orientation des normales aux faces.
 155 : C
 156 : C            La positivité n'est pas controlle parce que c'est déjà fait
 157 : C            dans l'operateur PRIM
 158 : C
 159 : C 
 160 : C************************************************************************
 161 : C
 162 : C**** Variables de COOPTIO
 163 : C
 164 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 165 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 166 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 167 : C     &        ,IECHO,   IIMPI,  IOSPI
 168 : C     &        ,IDIM
 169 : CC     &        ,MCOORD      
 170 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 171 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 172 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
 173 : C     &        ,NUCROU, IPSAUV
 174 : C
 175 : C**** Les variables
 176 : C
 177 :       IMPLICIT INTEGER(I-N)
 178 :       INTEGER ICEN, IFACE, IFACEL, INORM,IROC, IGRROC, IALROC
 179 :      &       , IVITC, IGRVC, IALVC
 180 :      &       , IPC ,IGRPC, IALPC
 181 :      &       , IYC, IGRYC, IALYC
 182 :      &       , ISCAC, IGRSC, IALSC
 183 :      &       , IGAMC
 184 :      &       , IROF, IVITF, IPF, IYF, ISCAF
 185 :      &       , IGEOM, NFAC, NCEN
 186 :      &       , N1PTEL, N1EL, N2PTEL, N2EL, N2, N1, N3, L1, NLCE
 187 :      &       , NLCF, NGCF, NGCEG, NLCEG, NGCED, NLCED, NGCF1
 188 :      &       , IDIMP1, INDCEL, I1, NESP, NSCA, NMA
 189 :       REAL*8 VALER, VAL1, VAL2, XG, YG, XC, YC, XD, YD, DELTAT
 190 :      &        ,DXG, DYG, DXD, DYD
 191 :      &       , CNX, CNY, CTX, CTY, ORIENT
 192 :      &       , ROG, PG, GAMG, UXG, UYG, UNG, UTG
 193 :      &       , ROD, PD, UXD, UYD, UND, UTD
 194 :      &       , VALCEL, DCEL, ALCEL
 195 :      &       , DROX, DROY, DUXX, DUXY, DUYX, DUYY, DPX, DPY
 196 :      &       , DRO, DUX, DUY, DP
 197 :      &       , ALPHA,  DYMAS, SUMY
 198 :       CHARACTER*(40) MESERR
 199 :       CHARACTER*(8) TYPE, CARCEL
 200 :       LOGICAL LOGAN,LOGNEG, LOGBOR, LOGTEM, LOGI1, LOGI2
 201 :      &       ,LGAMC,LYC,LSCAC
 202 : C
 203 : C**** Les Includes
 204 : C
 205 : -INC SMCOORD
 206 : -INC CCOPTIO
 207 : -INC SMCHPOI
 208 :       POINTEUR MPROC.MPOVAL,  MPGRR.MPOVAL,
 209 :      &         MPVITC.MPOVAL, MPGRV.MPOVAL,
 210 :      &         MPPC.MPOVAL,   MPGRP.MPOVAL,
 211 :      &         MPYC.MPOVAL,   MPGRY.MPOVAL,
 212 :      &         MPSCAC.MPOVAL, MPGRS.MPOVAL,
 213 :      &         MPGAMC.MPOVAL, MPNORM.MPOVAL, 
 214 :      &         MPROP.MPOVAL,  MPPP.MPOVAL, MPVITP.MPOVAL,
 215 :      &         MPYP.MPOVAL,   MPSCAP.MPOVAL
 216 : -INC SMCHAML
 217 :       POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
 218 :       POINTEUR MELVNX.MELVAL, MELVNY.MELVAL, 
 219 :      &         MELT1X.MELVAL, MELT1Y.MELVAL
 220 :       POINTEUR MELVUN.MELVAL, MELVUT.MELVAL
 221 :       POINTEUR MELRO.MELVAL, MELP.MELVAL
 222 :       POINTEUR MELALR.MPOVAL,
 223 :      &         MELALV.MPOVAL,
 224 :      &         MELALP.MPOVAL,
 225 :      &         MELALY.MPOVAL,
 226 :      &         MELALS.MPOVAL
 227 : -INC SMLENTI
 228 : -INC SMELEME
 229 : C
 230 : C**** Segments des fractions massiques gauche et droit
 231 : C
 232 :       SEGMENT FRAMAS
 233 :          REAL*8 FRAMG(NMA), FRAMD(NMA)
 234 :       ENDSEGMENT
 235 :       POINTEUR SCALPA.FRAMAS
 236 : C
 237 : C
 238 : C**** Initialisation des parametres d'erreur déjà faite, i.e.
 239 : C
 240 : C     LOGNEG  = .FALSE.
 241 : C     LOGBOR  = .FALSE.
 242 : C     MESERR = '                                        '
 243 : C     MOTERR(1:40) = MESERR(1:40)
 244 : C     VALER = 0.0D0
 245 : C     VAL1 = 0.0D0
 246 : C     VAL2 = 0.0D0
 247 : C
 248 : C
 249 : C**** KRIPAD pour la correspondance global/local de centre
 250 : C
 250 :       CALL KRIPAD(ICEN,MLENT1)
 251 : C
 252 : C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
 253 : C
 254 : C     Si i est le numero global d'un noeud de ICEN,
 255 : C     MLENT1.LECT(i) contient sa position, i.e.
 256 : C
 257 : C     I              = numero global du noeud centre      
 258 : C     MLENT1.LECT(i) = numero local du noeud centre
 259 : C
 260 : C     MLENT1 déjà activé, i.e.
 261 : C
 262 : C     SEGACT MLENT1
 263 : C
 264 : C**** Activation de CHPOINTs
 265 : C
 266 : C     densité  + grad + limiteur
 267 : C     vitesse  + grad + limiteur
 268 : C     pression + grad + limiteur
 269 : C     fract.mass + grad + limiteur
 270 : C     gamma
 271 : C     cosinus directeurs des normales aux surface
 272 : C      
 272 :       CALL LICHT(IROC  , MPROC  , TYPE, IGEOM)
 272 :       CALL LICHT(IGRROC, MPGRR  , TYPE, IGEOM)
 272 :       CALL LICHT(IVITC,  MPVITC , TYPE, IGEOM)
 272 :       CALL LICHT(IGRVC,  MPGRV  , TYPE, IGEOM)
 272 :       CALL LICHT(IPC  ,  MPPC   , TYPE, IGEOM)
 272 :       CALL LICHT(IGRPC,  MPGRP  , TYPE, IGEOM)
 272 :       IF(LGAMC) CALL LICHT(IGAMC,  MPGAMC , TYPE, IGEOM)
 272 :       CALL LICHT(INORM,  MPNORM , TYPE, IGEOM)
 273 : C
 274 : C**** Les MPOVALs 'Prediction'
 275 : C
 276 :       IF(LOGTEM)THEN
 277 :          SEGINI, MPROP = MPROC
 278 :          SEGINI, MPPP = MPPC
 279 :          SEGINI, MPVITP = MPVITC
 280 :       ELSE
 281 :          MPROP = MPROC
 282 :          MPPP = MPPC
 283 :          MPVITP = MPVITC
 284 :       ENDIF         
 285 : C
 286 : C**** Les Limiteurs
 287 : C
 287 :       CALL LICHT(IALROC, MELALR , TYPE, IGEOM)
 287 :       CALL LICHT(IALVC,  MELALV , TYPE, IGEOM)
 287 :       CALL LICHT(IALPC,  MELALP , TYPE, IGEOM)
 288 : C
 289 : C
 290 : C**** Les MPOVAL sont déjà activés i.e.:
 291 : C     
 292 : C     SEGACT MPROC
 293 : C     SEGACT MPGRR
 294 : C     SEGACT MPIALR
 295 : C     SEGACT MPVITC
 296 : C     SEGACT MPGRV
 297 : C     SEGACT MPIALV
 298 : C     SEGACT MPPC
 299 : C     SEGACT MPGRP
 300 : C     SEGACT MPIALP
 301 : C     SEGACT MPGAMC (si LGAMC)
 302 : C     SEGACT MPNORM
 303 : C
 304 : C**** Le MELEME FACEL
 305 : C
 306 :       IPT1 = IFACEL
 307 :       IPT2 = IFACE
 308 :       SEGACT IPT1
 309 :       SEGACT IPT2
 310 :       NFAC = IPT1.NUM(/2)
 311 : C      
 312 : C**** Creation de MCHAMLs contenant les etats gauche et droite,
 313 : C
 314 : C     i.e.:
 315 : C       
 316 : C     vitesse + cosinus directors du repere local      
 317 : C     densité
 318 : C     pression
 319 : C
 320 : C**** Cosinus directors du repere local et vitesse
 321 : C      
 322 : C     Les cosinus directeurs
 323 : C
 324 :       N1 = 2
 325 :       N3 = 6
 326 :       L1 = 28
 327 :       SEGINI MCHEL1
 328 :       IVITF = MCHEL1
 329 :       MCHEL1.TITCHE = 'U  '
 330 :       MCHEL1.IMACHE(1) = IFACE
 331 :       MCHEL1.IMACHE(2) = IFACEL
 332 :       MCHEL1.CONCHE(1) = ' (n,t) in (x,y) '
 333 :       MCHEL1.CONCHE(2) = ' U in (n,t)     '
 334 : C
 335 : C**** Valeurs des cosinus definies par respect au repair global, i.e.
 336 : C      
 337 :       MCHEL1.INFCHE(1,1) = 2
 338 :       MCHEL1.INFCHE(1,3) = NIFOUR
 339 :       MCHEL1.INFCHE(1,4) = 0
 340 :       MCHEL1.INFCHE(1,5) = 0
 341 :       MCHEL1.INFCHE(1,6) = 0
 342 :       MCHEL1.IFOCHE = IFOUR
 343 : C
 344 : C**** Valeurs de vitesse definies par respect au repair local, i.e.
 345 : C      
 346 :       MCHEL1.INFCHE(2,1) = 1
 347 :       MCHEL1.INFCHE(2,3) = NIFOUR
 348 :       MCHEL1.INFCHE(2,4) = 0
 349 :       MCHEL1.INFCHE(2,5) = 0
 350 :       MCHEL1.INFCHE(2,6) = 0
 351 : C
 352 : C**** Le cosinus directeurs
 353 : C
 354 :       N1PTEL = 1
 355 :       N1EL = NFAC
 356 :       N2PTEL = 0
 357 :       N2EL =   0
 358 : C
 359 : C**** MCHAML a N2 composantes:
 360 : C      
 361 : C     cosinus directeurs du repere local (n,t1)
 362 : C
 363 : C     IDIM = 2 -> 4 composantes
 364 : C
 365 :       N2 = 4
 366 :       SEGINI MCHAM1
 367 :       MCHEL1.ICHAML(1) = MCHAM1
 368 :       MCHAM1.NOMCHE(1) = 'NX      '
 369 :       MCHAM1.NOMCHE(2) = 'NY      '
 370 :       MCHAM1.NOMCHE(3) = 'TX      '
 371 :       MCHAM1.NOMCHE(4) = 'TY      '
 372 :       MCHAM1.TYPCHE(1) = 'REAL*8          '
 373 :       MCHAM1.TYPCHE(2) = 'REAL*8          '
 374 :       MCHAM1.TYPCHE(3) = 'REAL*8          '
 375 :       MCHAM1.TYPCHE(4) = 'REAL*8          '
 376 :       SEGINI MELVNX
 377 :       SEGINI MELVNY
 378 :       SEGINI MELT1X
 379 :       SEGINI MELT1Y
 380 :       MCHAM1.IELVAL(1) = MELVNX
 381 :       MCHAM1.IELVAL(2) = MELVNY
 382 :       MCHAM1.IELVAL(3) = MELT1X
 383 :       MCHAM1.IELVAL(4) = MELT1Y
 384 :       SEGDES MCHAM1
 385 : C
 386 : C**** Vitesse
 387 : C
 388 :       N1EL = NFAC
 389 :       N1PTEL = 3
 390 :       N2EL = 0
 391 :       N2PTEL = 0
 392 : C
 393 : C**** MCHAML a N2 composantes:
 394 : C      
 395 : C     IDIM = 2 -> 2 composantes
 396 : C
 397 :       N2 = 2
 398 :       SEGINI MCHAM1
 399 :       MCHEL1.ICHAML(2) = MCHAM1
 400 :       SEGDES MCHEL1
 401 :       MCHAM1.NOMCHE(1) = 'UN      '
 402 :       MCHAM1.NOMCHE(2) = 'UT      '
 403 :       MCHAM1.TYPCHE(1) = 'REAL*8          '
 404 :       MCHAM1.TYPCHE(2) = 'REAL*8          '
 405 :       SEGINI MELVUN
 406 :       SEGINI MELVUT
 407 :       MCHAM1.IELVAL(1) = MELVUN
 408 :       MCHAM1.IELVAL(2) = MELVUT
 409 :       SEGDES MCHAM1
 410 : C
 411 : C**** Densite
 412 : C
 413 :       N1 = 1
 414 :       N3 = 6
 415 :       L1 = 15
 416 :       SEGINI MCHEL2
 417 :       IROF = MCHEL2
 418 :       MCHEL2.IMACHE(1) = IFACEL
 419 :       MCHEL2.TITCHE = 'RO             '
 420 :       MCHEL2.CONCHE(1) = '                '
 421 : C
 422 : C**** Valeurs independente du repére, i.e.
 423 : C      
 424 :       MCHEL2.INFCHE(1,1) = 0
 425 :       MCHEL2.INFCHE(1,3) = NIFOUR
 426 :       MCHEL2.INFCHE(1,4) = 0
 427 :       MCHEL2.INFCHE(1,5) = 0
 428 :       MCHEL2.INFCHE(1,6) = 0
 429 :       MCHEL2.IFOCHE = IFOUR
 430 :       N2 = 1
 431 :       SEGINI MCHAM1
 432 :       MCHEL2.ICHAML(1) = MCHAM1
 433 :       SEGDES MCHEL2
 434 :       MCHAM1.NOMCHE(1) = 'SCAL    '
 435 :       MCHAM1.TYPCHE(1) = 'REAL*8          '
 436 :       SEGINI MELRO
 437 :       MCHAM1.IELVAL(1) = MELRO
 438 :       SEGDES MCHAM1
 439 : C
 440 : C**** Pression
 441 : C
 442 :       MCHEL1 = IROF
 443 :       SEGINI, MCHEL2 = MCHEL1
 444 :       IPF = MCHEL2
 445 :       MCHEL2.TITCHE = 'P            '
 446 : C
 447 : C**** MCHAM1 = MCHAML de la densite
 448 : C
 449 :       SEGINI, MCHAM2 = MCHAM1
 450 :       MCHEL2.ICHAML(1) = MCHAM2
 451 :       SEGDES MCHEL2
 452 :       SEGINI MELP
 453 :       MCHAM2.IELVAL(1) = MELP
 454 :       SEGDES MCHAM2
 455 : C
 456 : C**** Le CHAMELEM des fractions massiques
 457 : C
 458 :       IF(LYC)THEN
 459 :          MCHPO1 = IYC
 460 :          SEGACT MCHPO1
 461 :          MSOUP1 = MCHPO1.IPCHP(1)
 462 :          SEGDES MCHPO1
 463 :          SEGACT MSOUP1
 464 :          MPYC = MSOUP1.IPOVAL
 465 :          SEGACT MPYC
 466 :          NESP = MPYC.VPOCHA(/2)
 467 :          MCHEL1 = IROF
 468 :          SEGINI, MCHEL2 = MCHEL1
 469 :          IYF = MCHEL2
 470 :          MCHEL2.TITCHE = 'Y            '
 471 :          N2 = NESP
 472 :          SEGINI MCHAMY
 473 :          MCHEL2.ICHAML(1) = MCHAMY
 474 :          SEGDES MCHEL2
 475 :          N1EL = NFAC
 476 :          N1PTEL = 3
 477 :          N2EL = 0
 478 :          N2PTEL = 0      
 479 :          DO I1 = 1, NESP
 480 :             SEGINI MELVA1
 481 :             MCHAMY.IELVAL(I1) = MELVA1
 482 :             CARCEL = '        '
 483 :             CARCEL(1:4) = MSOUP1.NOCOMP(I1)
 484 :             MCHAMY.NOMCHE(I1) = CARCEL
 485 :             MCHAMY.TYPCHE(I1) = 'REAL*8          '
 486 :          ENDDO
 487 :          SEGDES MSOUP1
 488 : C
 488 :          CALL LICHT(IGRYC,  MPGRY  , TYPE, IGEOM)
 488 :          CALL LICHT(IALYC,  MELALY , TYPE, IGEOM)
 489 :          NMA = NESP
 490 :          SEGINI FRAMAS
 491 :          IF(LOGTEM)THEN
 492 :             SEGINI, MPYP = MPYC
 493 :          ELSE
 494 :             MPYP = MPYC
 495 :          ENDIF         
 496 :       ELSE
 497 :          NESP = 0
 498 :          IYF = 0
 499 :       ENDIF
 500 : C
 501 : C**** Le CHAMELEM des scalaires passifs
 502 : C
 503 :       IF(LSCAC)THEN
 504 :          MCHPO1 = ISCAC
 505 :          SEGACT MCHPO1
 506 :          MSOUP1 = MCHPO1.IPCHP(1)
 507 :          SEGDES MCHPO1
 508 :          SEGACT MSOUP1
 509 :          MPSCAC = MSOUP1.IPOVAL
 510 :          SEGACT MPSCAC
 511 :          NSCA = MPSCAC.VPOCHA(/2)
 512 :          MCHEL1 = IROF
 513 :          SEGINI, MCHEL2 = MCHEL1
 514 :          ISCAF = MCHEL2
 515 :          MCHEL2.TITCHE = 'SCALPASS     '
 516 :          N2 = NSCA
 517 :          SEGINI MCHAMS
 518 :          MCHEL2.ICHAML(1) = MCHAMS
 519 :          SEGDES MCHEL2
 520 :          N1EL = NFAC
 521 :          N1PTEL = 3
 522 :          N2EL = 0
 523 :          N2PTEL = 0      
 524 :          DO I1 = 1, NSCA
 525 :             SEGINI MELVA1
 526 :             MCHAMS.IELVAL(I1) = MELVA1
 527 :             CARCEL = '        '
 528 :             CARCEL(1:4) = MSOUP1.NOCOMP(I1)
 529 :             MCHAMS.NOMCHE(I1) = CARCEL
 530 :             MCHAMS.TYPCHE(I1) = 'REAL*8          '
 531 :          ENDDO
 532 :          SEGDES MSOUP1
 533 : C
 533 :          CALL LICHT(IGRSC,  MPGRS  , TYPE, IGEOM)
 533 :          CALL LICHT(IALSC,  MELALS , TYPE, IGEOM)
 534 :          NMA = NSCA
 535 :          SEGINI SCALPA
 536 :          IF(LOGTEM)THEN
 537 :             SEGINI, MPSCAP = MPSCAC
 538 :          ELSE
 539 :             MPSCAP = MPSCAC
 540 :          ENDIF         
 541 :       ELSE
 542 :          NSCA = 0
 543 :          ISCAF = 0
 544 :       ENDIF
 545 : C
 546 : C**** Donc on a aussi actives le chpoints de fractions massiques
 547 : C
 548 : C     SEGACT MPYC 
 549 : C     SEGACT MPGRY 
 550 : C     SEGACT MPIALY
 551 : C
 552 : C     SEGACT MPSCAC
 553 : C     SEGACT MPGRS 
 554 : C     SEGACT MPIALS
 555 : C
 556 : C
 557 : C***********************************************************************
 558 : C********* PREDICTION **************************************************
 559 : C***********************************************************************
 560 : C
 561 : C**** Prediction avec gradients limités
 562 : C
 563 : C
 564 :       IF(LOGTEM)THEN
 565 : C
 566 :          IPT3 = ICEN
 567 :          SEGACT IPT3
 568 :          NCEN = IPT3.NUM(/2)
 569 :          DO NLCE = 1, NCEN
 570 :             ROG = MPROP.VPOCHA(NLCE,1)
 571 :             UXG = MPVITP.VPOCHA(NLCE,1)
 572 :             UYG = MPVITP.VPOCHA(NLCE,2)
 573 :             PG = MPPP.VPOCHA(NLCE,1)
 574 :             DROX = MPGRR.VPOCHA(NLCE,1)*MELALR.VPOCHA(NLCE,1)
 575 :             DROY = MPGRR.VPOCHA(NLCE,2)*MELALR.VPOCHA(NLCE,1)
 576 :             DUXX = MPGRV.VPOCHA(NLCE,1)*MELALV.VPOCHA(NLCE,1)
 577 :             DUXY = MPGRV.VPOCHA(NLCE,2)*MELALV.VPOCHA(NLCE,1)
 578 :             DUYX = MPGRV.VPOCHA(NLCE,3)*MELALV.VPOCHA(NLCE,2)
 579 :             DUYY = MPGRV.VPOCHA(NLCE,4)* MELALV.VPOCHA(NLCE,2)
 580 :             DPX  = MPGRP.VPOCHA(NLCE,1)* MELALP.VPOCHA(NLCE,1)
 581 :             DPY  = MPGRP.VPOCHA(NLCE,2)* MELALP.VPOCHA(NLCE,1)
 582 :             GAMG = MPGAMC.VPOCHA(NLCE,1)
 583 :             DRO  = UXG * DROX + ROG * ( DUXX + DUYY )
 584 :      &           + UYG * DROY 
 585 :             DUX  = UXG * DUXX + DPX / ROG + UYG * DUXY
 586 :             DUY  = UXG * DUYX + UYG * DUYY + DPY / ROG
 587 :             DP   = GAMG * PG * (DUXX + DUYY) 
 588 :      &           + UXG * DPX + UYG * DPY
 589 : C
 590 :             MPROP.VPOCHA(NLCE,1) = ROG - DELTAT * DRO 
 591 :             MPVITP.VPOCHA(NLCE,1) = UXG - DELTAT * DUX
 592 :             MPVITP.VPOCHA(NLCE,2) = UYG - DELTAT * DUY
 593 :             MPPP.VPOCHA(NLCE,1) = PG - DELTAT * DP
 594 :             DO I1 = 1, NESP, 1
 595 :                INDCEL = 2 * I1 - 1
 596 :                ALPHA = MELALY.VPOCHA(NLCE,I1)
 597 :                DYMAS = UXG * MPGRY.VPOCHA(NLCE,INDCEL) * ALPHA +
 598 :      &              UYG * MPGRY.VPOCHA(NLCE,INDCEL+1) * ALPHA 
 599 :                MPYP.VPOCHA(NLCE,I1) = MPYC.VPOCHA(NLCE,I1) - 
 600 :      &              DELTAT * DYMAS
 601 :             ENDDO
 602 :             DO I1 = 1, NSCA, 1
 603 :                INDCEL = 2 * I1 - 1
 604 :                ALPHA = MELALS.VPOCHA(NLCE,I1)
 605 :                DYMAS = UXG * MPGRS.VPOCHA(NLCE,INDCEL) * ALPHA +
 606 :      &              UYG * MPGRS.VPOCHA(NLCE,INDCEL+1) * ALPHA 
 607 :                MPSCAP.VPOCHA(NLCE,I1) = MPSCAC.VPOCHA(NLCE,I1) - 
 608 :      &              DELTAT * DYMAS
 609 :             ENDDO
 610 :          ENDDO
 611 : C
 612 :       ENDIF
 613 : C         
 614 : C
 615 : C***********************************************************************
 616 : C********* CORRECTION **************************************************
 617 : C***********************************************************************
 618 : C            
 619 : C**** Boucle sur le faces
 620 : C     
 621 :       IDIMP1 = IDIM + 1
 622 :       DO NLCF = 1, NFAC
 623 : C
 624 : C******* NLCF  = numero local du centre de face
 625 : C        NGCF  = numero global du centre de face
 626 : C        NGCEG = numero global du centre ELT "gauche"
 627 : C        NLCEG = numero local du centre ELT "gauche"
 628 : C        NGCED = numero global du centre ELT "droite"
 629 : C        NLCED = numero local du centre ELT "droite"
 630 : C
 631 :          NGCEG = IPT1.NUM(1,NLCF)
 632 :          NGCF  = IPT1.NUM(2,NLCF)
 633 :          NGCED = IPT1.NUM(3,NLCF)
 634 :          NLCEG = MLENT1.LECT(NGCEG)
 635 :          NLCED = MLENT1.LECT(NGCED)
 636 : C
 637 : C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF)
 638 : C
 639 :          NGCF1 = IPT2.NUM(1,NLCF)
 640 :          IF( NGCF1 .NE. NGCF) THEN
 641 :             LOGAN = .TRUE.
 642 :             MESERR(1:40) = 'PRET, subroutine pre321.eso             '
 643 :             GOTO 9999
 644 :          ENDIF
 645 : C
 646 : C******* Cosinus directeurs des NORMALES aux faces
 647 : C
 648 : C        On impose que les normales sont direct "Gauche" -> "Centre"
 649 : C
 650 :          INDCEL = (NGCEG-1)*IDIMP1
 651 :          XG = XCOOR(INDCEL+1)
 652 :          YG = XCOOR(INDCEL+2)
 653 :          INDCEL = (NGCF-1)*IDIMP1
 654 :          XC = XCOOR(INDCEL + 1)
 655 :          YC = XCOOR(INDCEL + 2)
 656 :          INDCEL = (NGCED-1)*IDIMP1
 657 :          XD = XCOOR(INDCEL+1)
 658 :          YD = XCOOR(INDCEL+2)
 659 :          DXG = XC - XG
 660 :          DYG = YC - YG
 661 :          DXD = XC - XD
 662 :          DYD = YC - YD            
 663 : C
 664 : C******* On calcule le sign du pruduit scalare 
 665 : C        (Normales de Castem) * (vecteur "gauche" -> "centre")
 666 : C
 667 :          CNX = MPNORM.VPOCHA(NLCF,1)
 668 :          CNY = MPNORM.VPOCHA(NLCF,2)
 669 :          ORIENT = CNX * DXG + CNY * DYG
 670 :          ORIENT = SIGN(1.0D0,ORIENT)
 671 :          IF(ORIENT .NE. 1.0D0)THEN
 672 :             LOGAN = .TRUE. 
 673 :             MESERR(1:30)=
 674 :      &           'PRET , subroutine pre321.eso. '               
 675 :             GOTO 9999
 676 :          ENDIF
 677 :          CNX = CNX * ORIENT
 678 :          CNY = CNY * ORIENT
 679 : C
 680 : C********** Cosinus directeurs de tangent 2D
 681 : C
 682 :          CTX = -1.0D0 * CNY
 683 :          CTY = CNX
 684 : C
 685 : C
 686 : C******* Les autres MELVALs
 687 : C
 688 : C
 689 : C******* N.B.: On suppose qu'on a déjà controlle RO, P > 0
 690 : C              y_i \in (0,1)
 691 : C              Si non il faut le faire, en utilisant LOGBOR, 
 692 : C              LOGNEG, VALER, VAL1, VAL2
 693 : C
 694 : C
 695 : C
 696 : C******* NGCEG = NGCED -> Mur
 697 : C
 698 :          IF( NGCEG .EQ. NGCED)THEN
 699 : C
 700 : C********** Sur le mur on fait de reconstruction sur l'etat gauche
 701 : C
 702 : C
 703 : C********** Etat gauche
 704 : C
 705 :             VALCEL = MPROP.VPOCHA(NLCEG, 1)
 706 :             ALCEL = MELALR.VPOCHA(NLCEG, 1)
 707 :             DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG + 
 708 :      &             MPGRR.VPOCHA(NLCEG, 2)*DYG 
 709 :             ROG = VALCEL + ALCEL * DCEL
 710 : C
 711 :             VALCEL = MPPP.VPOCHA(NLCEG, 1)
 712 :             ALCEL =  MELALP.VPOCHA(NLCEG, 1)
 713 :             DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG + 
 714 :      &             MPGRP.VPOCHA(NLCEG, 2)*DYG 
 715 :             PG = VALCEL + ALCEL * DCEL
 716 : C
 717 :             LOGI2 = .FALSE.
 718 :             SUMY = 0.0D0
 719 :             DO I1 = 1, NESP, 1
 720 :                INDCEL = 2 * I1 - 1
 721 :                VALCEL = MPYP.VPOCHA(NLCEG,I1)
 722 :                ALCEL =  MELALY.VPOCHA(NLCEG, I1)
 723 :                DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG + 
 724 :      &              MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG 
 725 :                ALCEL = VALCEL + ALCEL * DCEL
 726 :                SUMY = SUMY + ALCEL
 727 :                LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
 728 :                FRAMAS.FRAMG(I1) = ALCEL
 729 :             ENDDO
 730 :             LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
 731 : C
 732 :             DO I1 = 1, NSCA, 1
 733 :                INDCEL = 2 * I1 - 1
 734 :                VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
 735 :                ALCEL =  MELALS.VPOCHA(NLCEG, I1)
 736 :                DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG + 
 737 :      &              MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG 
 738 :                ALCEL = VALCEL + ALCEL * DCEL
 739 :                SCALPA.FRAMG(I1) = ALCEL
 740 :             ENDDO
 741 : C
 742 :             VALCEL = MPVITP.VPOCHA(NLCEG, 1)
 743 :             ALCEL = MELALV.VPOCHA(NLCEG, 1)
 744 :             DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG + 
 745 :      &             MPGRV.VPOCHA(NLCEG, 2)*DYG 
 746 :             UXG = VALCEL + ALCEL * DCEL
 747 : C
 748 :             VALCEL = MPVITP.VPOCHA(NLCEG, 2)
 749 :             ALCEL = MELALV.VPOCHA(NLCEG, 2)
 750 :             DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG + 
 751 :      &             MPGRV.VPOCHA(NLCEG, 4)*DYG 
 752 :             UYG = VALCEL + ALCEL * DCEL
 753 : C
 754 :             UNG = UXG * CNX + UYG * CNY
 755 :             UTG = UXG * CTX + UYG * CTY
 756 : C
 757 : C********** Si l'on fait pas de prediction, ce n'est pas necessaire de
 758 : C           controller la positivite' de la pression et de la densité; elle
 759 : C           est déjà garantie par la proprieté LED de limiteur; mais, vu
 760 : C           que le limiteur n'est pas calculé ici, mais dans un autre
 761 : C           operateur, on le fait
 762 : C
 763 :             LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
 764 : C
 765 :             IF(LOGI1)THEN
 766 : C
 767 : C************* Premier ordre en espace local
 768 : C               
 769 :                ROG = MPROC.VPOCHA(NLCEG,1)
 770 :                ROD = ROG
 771 :                PG  = MPPC.VPOCHA(NLCEG,1)
 772 :                PD = PG
 773 :                UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
 774 :      &              MPVITC.VPOCHA(NLCEG,2)*CNY
 775 :                UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
 776 :      &              MPVITC.VPOCHA(NLCEG,2)*CTY
 777 :                UND = -1.0D0 * UNG
 778 :                UTD = UTG
 779 :                DO I1 = 1, NESP, 1
 780 :                   FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
 781 :                   FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
 782 :                ENDDO
 783 :                DO I1 = 1, NSCA, 1
 784 :                   SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
 785 :                   SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
 786 :                ENDDO
 787 :             ELSE
 788 : C              
 789 : C********** Son etat droite
 790 : C
 791 :                ROD = ROG
 792 :                PD = PG
 793 :                UND = -1.0D0 * UNG
 794 :                UTD = UTG
 795 :                DO I1 = 1, NESP, 1
 796 :                   FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
 797 :                ENDDO
 798 :                DO I1 = 1, NSCA, 1
 799 :                   SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
 800 :                ENDDO
 801 :             ENDIF
 802 : C     
 803 : C************* Fin cas mur
 804 : C
 805 :          ELSE
 806 : C
 807 : C************* Etat gauche
 808 : C
 809 :             VALCEL = MPROP.VPOCHA(NLCEG, 1)
 810 :             ALCEL = MELALR.VPOCHA(NLCEG, 1)
 811 :             DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG + 
 812 :      &             MPGRR.VPOCHA(NLCEG, 2)*DYG 
 813 :             ROG = VALCEL + ALCEL * DCEL
 814 : C
 815 :             VALCEL = MPPP.VPOCHA(NLCEG, 1)
 816 :             ALCEL =  MELALP.VPOCHA(NLCEG, 1)
 817 :             DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG + 
 818 :      &             MPGRP.VPOCHA(NLCEG, 2)*DYG 
 819 :             PG = VALCEL + ALCEL * DCEL
 820 : C
 821 :             LOGI2 = .FALSE.
 822 :             SUMY = 0.0D0
 823 :             DO I1 = 1, NESP, 1
 824 :                INDCEL = 2 * I1 - 1
 825 :                VALCEL = MPYP.VPOCHA(NLCEG,I1)
 826 :                ALCEL =  MELALY.VPOCHA(NLCEG, I1)
 827 :                DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG + 
 828 :      &              MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG 
 829 :                ALCEL = VALCEL + ALCEL * DCEL
 830 :                SUMY = SUMY + ALCEL
 831 :                LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
 832 :                FRAMAS.FRAMG(I1) = ALCEL
 833 :             ENDDO
 834 :             LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
 835 : C
 836 :             DO I1 = 1, NSCA, 1
 837 :                INDCEL = 2 * I1 - 1
 838 :                VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
 839 :                ALCEL =  MELALS.VPOCHA(NLCEG, I1)
 840 :                DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG + 
 841 :      &              MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG 
 842 :                ALCEL = VALCEL + ALCEL * DCEL
 843 :                SCALPA.FRAMG(I1) = ALCEL
 844 :             ENDDO
 845 : C
 846 :             VALCEL = MPVITP.VPOCHA(NLCEG, 1)
 847 :             ALCEL = MELALV.VPOCHA(NLCEG, 1)
 848 :             DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG + 
 849 :      &             MPGRV.VPOCHA(NLCEG, 2)*DYG 
 850 :             UXG = VALCEL + ALCEL * DCEL
 851 : C
 852 :             VALCEL = MPVITP.VPOCHA(NLCEG, 2)
 853 :             ALCEL = MELALV.VPOCHA(NLCEG, 2)
 854 :             DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG + 
 855 :      &             MPGRV.VPOCHA(NLCEG, 4)*DYG 
 856 :             UYG = VALCEL + ALCEL * DCEL
 857 : C
 858 :             UNG = UXG * CNX + UYG * CNY
 859 :             UTG = UXG * CTX + UYG * CTY
 860 : C
 861 : C********** Positivite
 862 : C
 863 :             LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
 864 : C
 865 :             IF(LOGI1)THEN
 866 : C
 867 : C************* Premier ordre en espace local
 868 : C               
 869 :                ROG = MPROC.VPOCHA(NLCEG,1)
 870 :                PG  = MPPC.VPOCHA(NLCEG,1)
 871 :                UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
 872 :      &              MPVITC.VPOCHA(NLCEG,2)*CNY
 873 :                UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
 874 :      &              MPVITC.VPOCHA(NLCEG,2)*CTY
 875 :                DO I1 = 1, NESP, 1
 876 :                   FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
 877 :                ENDDO
 878 :                DO I1 = 1, NSCA, 1
 879 :                   SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
 880 :                ENDDO
 881 :             ENDIF
 882 : C
 883 : C********** Etat droite
 884 : C
 885 :             VALCEL = MPROP.VPOCHA(NLCED, 1)
 886 :             ALCEL = MELALR.VPOCHA(NLCED, 1)
 887 :             DCEL = MPGRR.VPOCHA(NLCED, 1)*DXD + 
 888 :      &             MPGRR.VPOCHA(NLCED, 2)*DYD 
 889 :             ROD = VALCEL + ALCEL * DCEL
 890 : C
 891 :             VALCEL = MPPP.VPOCHA(NLCED, 1)
 892 :             ALCEL =  MELALP.VPOCHA(NLCED, 1)
 893 :             DCEL = MPGRP.VPOCHA(NLCED, 1)*DXD + 
 894 :      &             MPGRP.VPOCHA(NLCED, 2)*DYD 
 895 :             PD = VALCEL + ALCEL * DCEL
 896 : C            
 897 :             LOGI2 = .FALSE.
 898 :             SUMY = 0.0D0
 899 :             DO I1 = 1, NESP, 1
 900 :                INDCEL = 2 * I1 - 1
 901 :                VALCEL = MPYP.VPOCHA(NLCED,I1)
 902 :                ALCEL =  MELALY.VPOCHA(NLCED, I1)
 903 :                DCEL = MPGRY.VPOCHA(NLCED, INDCEL)*DXD + 
 904 :      &              MPGRY.VPOCHA(NLCED,INDCEL + 1 )*DYD 
 905 :                ALCEL = VALCEL + ALCEL * DCEL
 906 :                SUMY = SUMY + ALCEL
 907 :                LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
 908 :                FRAMAS.FRAMD(I1) = ALCEL
 909 :             ENDDO
 910 :             LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
 911 : C            
 912 :             DO I1 = 1, NSCA, 1
 913 :                INDCEL = 2 * I1 - 1
 914 :                VALCEL = MPSCAP.VPOCHA(NLCED,I1)
 915 :                ALCEL =  MELALS.VPOCHA(NLCED, I1)
 916 :                DCEL = MPGRS.VPOCHA(NLCED, INDCEL)*DXD + 
 917 :      &              MPGRS.VPOCHA(NLCED,INDCEL + 1 )*DYD 
 918 :                ALCEL = VALCEL + ALCEL * DCEL
 919 :                SCALPA.FRAMD(I1) = ALCEL
 920 :             ENDDO
 921 : C
 922 :             VALCEL = MPVITP.VPOCHA(NLCED, 1)
 923 :             ALCEL = MELALV.VPOCHA(NLCED, 1)
 924 :             DCEL = MPGRV.VPOCHA(NLCED, 1)*DXD + 
 925 :      &             MPGRV.VPOCHA(NLCED, 2)*DYD 
 926 :             UXD = VALCEL + ALCEL * DCEL
 927 : C
 928 :             VALCEL = MPVITP.VPOCHA(NLCED, 2)
 929 :             ALCEL = MELALV.VPOCHA(NLCED, 2)
 930 :             DCEL = MPGRV.VPOCHA(NLCED, 3)*DXD + 
 931 :      &             MPGRV.VPOCHA(NLCED, 4)*DYD 
 932 :             UYD = VALCEL + ALCEL * DCEL
 933 : C
 934 :             UND = UXD * CNX + UYD * CNY
 935 :             UTD = UXD * CTX + UYD * CTY
 936 : C
 937 : C********** Positivite
 938 : C
 939 :             LOGI1 = (PD .LT. 0.0D0) .OR. (ROD .LT. 0.0D0) .OR. LOGI2
 940 : C
 941 :             IF(LOGI1)THEN
 942 : C
 943 : C************* Premier ordre en espace local
 944 : C               
 945 :                ROD = MPROC.VPOCHA(NLCED,1)
 946 :                PD  = MPPC.VPOCHA(NLCED,1)
 947 :                UND = MPVITC.VPOCHA(NLCED,1)*CNX +
 948 :      &              MPVITC.VPOCHA(NLCED,2)*CNY
 949 :                UTD = MPVITC.VPOCHA(NLCED,1)*CTX +
 950 :      &              MPVITC.VPOCHA(NLCED,2)*CTY
 951 :                DO I1 = 1, NESP, 1
 952 :                   FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1)
 953 :                ENDDO
 954 :                DO I1 = 1, NSCA, 1
 955 :                   SCALPA.FRAMD(I1) = MPSCAC.VPOCHA(NLCED,I1)
 956 :                ENDDO
 957 :             ENDIF
 958 :          ENDIF
 959 : C
 960 : C******** Les MELVALs
 961 : C
 962 :          MELRO.VELCHE(1,NLCF) = ROG
 963 :          MELRO.VELCHE(3,NLCF) = ROD
 964 :          MELP.VELCHE(1,NLCF) = PG
 965 :          MELP.VELCHE(3,NLCF) = PD
 966 :          MELVUN.VELCHE(1,NLCF) = UNG
 967 :          MELVUN.VELCHE(3,NLCF) = UND
 968 :          MELVUT.VELCHE(1,NLCF) = UTG
 969 :          MELVUT.VELCHE(3,NLCF) = UTD
 970 :          MELVNX.VELCHE(1,NLCF) = CNX
 971 :          MELVNY.VELCHE(1,NLCF) = CNY
 972 :          MELT1X.VELCHE(1,NLCF) = CTX
 973 :          MELT1Y.VELCHE(1,NLCF) = CTY
 974 :          DO I1 = 1, NESP, 1
 975 :             MELVA1 = MCHAMY.IELVAL(I1)
 976 :             MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1)
 977 :             MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1)
 978 :          ENDDO
 979 :          DO I1 = 1, NSCA, 1
 980 :             MELVA1 = MCHAMS.IELVAL(I1)
 981 :             MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1)
 982 :             MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1)
 983 :          ENDDO
 984 :       ENDDO                  
 985 : C
 986 : C**** Desactivation des SEGMENTs
 987 : C
 988 :       SEGDES IPT1
 989 :       SEGDES IPT2
 990 : C
 991 : C**** Le MPOVALs 'Prediction' sont detruits (si existentes)
 992 : C
 993 :       IF(LOGTEM)THEN
 994 :          SEGSUP MPROP
 995 :          SEGSUP MPVITP
 996 :          SEGSUP MPPP
 997 :          IF(LYC) SEGSUP MPYP
 998 :          IF(LSCAC) SEGSUP MPSCAP
 999 :          SEGDES MPGAMC
1000 :       ENDIF
1001 : C
1002 :       SEGDES MPROC
1003 :       SEGDES MPGRR
1004 :       SEGDES MELALR
1005 :       SEGDES MPVITC
1006 :       SEGDES MPGRV
1007 :       SEGDES MELALV
1008 :       SEGDES MPPC
1009 :       SEGDES MPGRP
1010 :       SEGDES MELALP
1011 :       IF(LYC)THEN
1012 :          SEGDES MPYC
1013 :          SEGDES MPGRY
1014 :          SEGDES MELALY
1015 :          DO I1 = 1, NESP, 1
1016 :             MELVA1 = MCHAMY.IELVAL(I1)
1017 :             SEGDES MELVA1
1018 :          ENDDO
1019 :          SEGDES MCHAMY
1020 :          SEGSUP FRAMAS 
1021 :       ENDIF
1022 :       IF(LSCAC)THEN
1023 :          SEGDES MPSCAC
1024 :          SEGDES MPGRS
1025 :          SEGDES MELALS
1026 :          DO I1 = 1, NSCA, 1
1027 :             MELVA1 = MCHAMS.IELVAL(I1)
1028 :             SEGDES MELVA1
1029 :          ENDDO
1030 :          SEGDES MCHAMS
1031 :          SEGSUP SCALPA 
1032 :       ENDIF
1033 :       SEGDES MPNORM
1034 : C
1035 :       SEGDES MELRO
1036 :       SEGDES MELP
1037 :       SEGDES MELVUN
1038 :       SEGDES MELVUT
1039 :       SEGDES MELVNX
1040 :       SEGDES MELVNY
1041 :       SEGDES MELT1X
1042 :       SEGDES MELT1Y
1043 : C
1044 : C**** Destruction du MELNTI correspondance local/global
1045 : C
1046 :       SEGSUP MLENT1
1047 : C
1048 :  9999 CONTINUE
1049 : C      
1050 :       RETURN                                                                    
1051 :       END
1052 : 
1053 : 
1054 : 
1055 :  
1056 :  
1057 :  
1058 :  
1059 :  
1060 :  
1061 :  
1062 :  
1063 :  

© Cast3M 2003 - All rights reserved.
Disclaimer