Download primme.eso

Back to the list

   1 : C PRIMME    SOURCE    CHAT      06/03/29    21:30:28     5360           
   2 :       SUBROUTINE PRIMME()
   3 : C************************************************************************
   4 : C
   5 : C PROJET            :  CASTEM 2000
   6 : C
   7 : C NOM               :  PRIMME 
   8 : C
   9 : C DESCRIPTION       :  Voir PRIMIT
  10 : C                            
  11 : C                      Calcul des variables primitives (et du "gamma") 
  11 : C                      pour les gaz "calorically perfect" multiespeces
  12 : C    
  13 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  14 : C      
  15 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/TTMF                        
  16 : C
  17 : C************************************************************************
  18 : C
  19 : C
  20 : C APPELES (E/S)     : QUETYP, ACMO, LIROBJ, QUEPOI, ERREUR, ECROBJ, 
  21 : C                     QUEPO1, ACCTAB, LIRCHA, ECRCHA
  22 : C     
  23 : C APPELES (Calcul)  : PRMECA
  24 : C
  25 : C
  26 : C************************************************************************
  27 : C      
  28 : C
  29 : C PHRASE D'APPEL (GIBIANE) :
  30 : C
  31 : C 2) gaz parfait multi-especes (NESP > 1)
  32 : C
  33 : C  RCHPO1 RCHPO2 RCHPO3 RCHPO4 RCHPO5 = 'PRIM' MCLE1  TAB1
  34 : C                CHPO1 CHPO2 CHPO3 CHPO4 (MCLE2) ;
  35 : C
  36 : C
  37 : C ENTREES  : 
  38 : C
  39 : C            MCLE1   : 'PERFMULT'  : mot clé
  40 : C                  
  41 : C
  42 : C            TAB1    : TABLE qui contient :
  43 : C                      * les noms des especes qui apparessent
  44 : C                        explicitement dans les equations d'Euler en
  45 : C                         TAB1 . 'ESPEULE' (list de mots);
  46 : C                      * le nom de l'espece qui n'y est pas (mots);
  47 : C                      * les CP et les CV du gas en
  48 : C                         TAB1 . 'CP' (table)
  49 : C                         TAB1 . 'CV' (table)
  50 : C
  51 : C            CHPO1   : CHPOINT  contenant la masse volumique
  52 : C                      (une composante, 'SCAL').
  53 : C
  54 : C            CHPO2   : CHPOINT  contenant les dèbits
  55 : C                     (2 composantes en 2D, 'UX  ','UY  ');
  56 : C     
  57 : C            CHPO3   : CHPOINT  contenat l'énergie totale per
  58 : C                      unité de volume (RHO Et),
  59 : C                      (une composante, 'SCAL').
  60 : C
  61 : C            CHPO4   : CHPOINT  contenant la masse des especes qui
  62 : C                      explicitement "splitted" dans les equations
  63 : C                      d'Eulers (dont les noms sont dans 
  64 : C                      TAB1 . 'ESPEULE');
  65 : C
  66 : C            i.e.  CHPO1, CHPO2, CHPO3, CHPO4 sont les variables 
  67 : C                  conservatives  des Equations d'Euler.                          
  68 : C
  69 : C            MCLE2   : Option personelle: pas dans la notice
  70 : C                      officielle!!! 
  71 : C                      Mot clé, 'TRICHE' (s'il y a un erreur,
  72 : C                      les resultats ne sont pas
  73 : C                      des type ANNULLE et le programme
  74 : C                      ne s'arrete pas!!!)
  75 : C       
  76 : C SORTIES  : 
  77 : C
  78 : C            RCHPO1  : CHPOINT  contenant la vitesse
  79 : C
  80 : C            RCHPO2  : CHPOINT  contenant la pression du gaz;
  81 : C      
  82 : C            RCHPO3  : CHPOINT  contenant la temperature du  gaz;
  83 : C      
  84 : C            RCHPO4  : CHPOINT  contenant les fractions 
  85 : C                      massiques des differentes especes;
  86 : C
  87 : C            RCHPO5  : CHPOINT  contenat les "gamma" du gaz
  88 : C      
  89 : C            N.B.:-tous les CHPOINTs sont non-partitonees et
  90 : C                  ils ont le meme support geometrique;
  91 : C                  en sortie tous les CHPOINTs ont le support
  92 : C                  geometrique de RO 
  93 : C                 -en sortie RCHPO5 a le composantes ordonnees 
  94 : C                  en tal sens:
  95 : C                  TAB1 . 'ESPEULE' + TAB1 . 'ESPNEULE' 
  96 : C      
  97 : C************************************************************************
  98 : C
  99 : C HISTORIQUE (Anomalies et modifications éventuelles)
 100 : C
 101 : C HISTORIQUE :  Créée le 12.1.98.
 102 : C 
 103 : C               Modifie le 30.7.98 pour ajouter le mot clee personelle
 104 : C               'TRICHE'
 105 : C
 106 : C               Modifie le 1.2.99 pour precedente use impropre de la 
 107 : C               subroutine  ACMM
 108 : C
 109 : C               Modifie le 28.09.00 pour control sur le noms de composantes
 110 : C               (subroutine  QUEPO1)
 111 : C               Variables de CCOPTIO en commentaire
 112 : C               Elimination de ERREUR(-301)
 113 : C
 114 : C************************************************************************
 115 : C
 116 : C
 117 : C**** Variables de COOPTIO
 118 : C
 119 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 120 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 121 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 122 : C     &        ,IECHO,   IIMPI,  IOSPI
 123 : C     &        ,IDIM
 124 : C     &        ,MCOORD      
 125 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 126 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 127 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
 128 : C     &        ,NUCROU, IPSAUV
 129 : C
 130 : C**** Les variables
 131 : C
 132 :       IMPLICIT INTEGER(I-N)
 133 :       INTEGER ICOND, IRETOU, INDIC, NBCOMP, IERR0
 134 :      &       , NESP,  ICEN, IRO, IROVIT, IROET, IROY
 135 :      &       , IPGAS, ICP, ICV
 136 :      &       , IPRES, IVIT, ITEMP, IY, IGAM  
 137 :      &       , I1,  JG, JGM, JGN
 138 :       REAL*8 VALER(2),VAL1,VAL2,CP,CV
 139 :       CHARACTER*(40) MESERR(2),MESCEL
 140 :       CHARACTER*(8) MTYPR
 141 :       CHARACTER*(6) NOMTRI
 142 :       CHARACTER*(4)  MOT1(3), CELLCH
 143 :       LOGICAL LOGNEG, LOGBOR, LOGAN, LOGTRI
 144 : C
 145 : C**** Variables en ACCTAB
 146 : C
 147 :       INTEGER IVALI, IRETI,IVALR, IRETR
 148 :       REAL*8 XVALI,XVALR
 149 :       LOGICAL LOGII, LOGIR
 150 :       CHARACTER*(8) CHARR,MTYPI
 151 : C
 152 : C**** Segment pour ordoner les composantes
 153 : C
 154 :       SEGMENT ORDO
 155 :          INTEGER IORDO(NC)
 156 :       ENDSEGMENT
 157 : C     
 158 : C**** Les Includes
 159 : C
 160 : -INC CCOPTIO
 161 : -INC SMCHPOI      
 162 : -INC SMLMOTS
 163 : -INC SMLREEL
 164 :       POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
 165 : C
 166 : C**** Initialisation des parametres d'erreur
 167 : C
 168 :       LOGAN   = .FALSE.
 169 :       LOGNEG  = .FALSE.
 170 :       LOGBOR  = .FALSE.
 171 :       MESCEL  = '                                        '
 172 :       MESERR(1) = MESCEL
 173 :       MESERR(2) = MESCEL
 174 :       MOTERR(1:40) = MESCEL(1:40)
 175 :       VALER(1) = 0.0D0
 176 :       VALER(2) = 0.0D0
 177 :       VAL1 = 0.0D0
 178 :       VAL2 = 0.0D0
 179 : C
 180 : C**** Initialisation des variables en ACCTAB
 181 : C
 182 :       IVALI = 0
 183 :       IVALR = 0
 184 :       XVALI = 0.0D0
 185 :       XVALR = 0.0D0
 186 :       LOGII = .FALSE.
 187 :       LOGIR = .FALSE.
 188 :       IRETI = 0
 189 :       IRETR = 0
 190 :       CHARR = '        '
 191 : C
 192 : C**** Initialisation des MOT1(1) (noms des composantes)      
 193 : C
 194 :       MOT1(1) = '    '
 195 : C
 196 : C**** N.B. On veut lire les objets sequentiellement. 
 197 : C     Donc on utilise QUETYP pour controler que 
 198 : C     le type de l'objet soit le bon.
 199 : C      
 200 : C**** Lecture de la table des proprietes du gaz
 201 : C
 202 :       ICOND = 1
 202 :       CALL QUETYP(MTYPR,ICOND,IRETOU)
 203 :       IF(IERR .NE. 0)GOTO 9999
 204 :       IF(MTYPR .NE. 'TABLE   ')THEN
 205 : C
 206 : C******* Message d'erreur standard
 207 : C        37 2
 208 : C        On ne trouve pas d'objet de type %m1:8
 209 : C     
 210 :          MOTERR(1:8) = 'TABLE   ' 
 210 :          CALL ERREUR(37)
 211 :          GOTO 9999
 212 :       ELSE
 213 :          ICOND = 1
 213 :          CALL LIROBJ(MTYPR,IPGAS,ICOND,IRETOU)
 214 :          IF(IERR .NE. 0)GOTO 9999
 215 :       ENDIF         
 216 : C
 217 : C**** Les CPs
 218 : C
 219 :       MTYPR = '        '
 219 :       CALL ACMO(IPGAS,'CP',MTYPR,ICP)
 220 :       IF(MTYPR .NE. 'TABLE   ')THEN
 221 : C
 222 : C******* Message d'erreur standard
 223 : C        -301 0 %m1:40
 224 : C
 225 :          MOTERR(1:40) = 'TAB1 . CP = ???                         '
 226 :          WRITE(IOIMP,*) MOTERR(1:40)
 227 : C
 228 : C******* Message d'erreur standard
 229 : C        21 2
 230 : C        Données incompatibles
 231 : C
 231 :          CALL ERREUR(21)
 232 :          GOTO 9999
 233 :       ENDIF
 234 : C
 235 : C**** Les CVs
 236 : C
 237 :       MTYPR = '        '
 237 :       CALL ACMO(IPGAS,'CV',MTYPR,ICV)
 238 :       IF(MTYPR .NE. 'TABLE   ')THEN
 239 : C
 240 : C******* Message d'erreur standard
 241 : C        -301 0 %m1:40
 242 : C
 243 :          MOTERR(1:40) = 'TAB1 . CV = ???                         '
 244 :          WRITE(IOIMP,*) MOTERR(1:40)
 245 : C
 246 : C******* Message d'erreur standard
 247 : C        21 2
 248 : C        Données incompatibles
 249 : C
 249 :          CALL ERREUR(21)
 250 :          GOTO 9999
 251 :       ENDIF
 252 : C
 253 : C**** Les especes qui sont dans les Equations d'Euler
 254 : C
 255 :       MTYPR = '        ' 
 255 :       CALL ACMO(IPGAS,'ESPEULE',MTYPR,MLMOT1)
 256 :       IF(MTYPR .NE. 'LISTMOTS')THEN
 257 : C
 258 : C******* Message d'erreur standard
 259 : C        -301 0 %m1:40
 260 : C
 261 :          MOTERR(1:40) = 'TAB1 . ESPEULE = ???                    '
 262 :          WRITE(IOIMP,*) MOTERR(1:40)
 263 : C
 264 : C******* Message d'erreur standard
 265 : C        21 2
 266 : C        Données incompatibles
 267 : C
 267 :          CALL ERREUR(21)
 268 :          GOTO 9999
 269 :       ENDIF      
 270 : C
 271 : C**** Nom de l'espece qui n'est pas dans les equations d'Euler
 272 : C
 273 :       MTYPI = 'MOT     '
 274 :       MTYPR = '        '
 274 :       CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,'ESPNEULE', LOGII,IRETI,
 275 :      &                  MTYPR,IVALR,XVALR ,CELLCH,LOGIR,IRETR)
 276 :       IF((IERR .NE. 0) .OR. (MTYPR .NE. 'MOT     ')) THEN
 277 : C
 278 : C******* Message d'erreur standard
 279 : C        -301 0 %m1:40
 280 : C
 281 :          MOTERR = 'TAB1 . ESPNEULE = ???        '
 282 :          WRITE(IOIMP,*) MOTERR(1:40)
 283 : C
 284 : C********** Message d'erreur standard
 285 : C           21 2
 286 : C           Données incompatibles
 287 : C
 287 :          CALL ERREUR(21)
 288 :          GOTO 9999
 289 :       ENDIF  
 290 : C
 291 : C**** Control de compatibilite des donnes de la table
 292 : C     et creation des LISTREELs avec CP et CV
 293 : C
 294 :       SEGACT MLMOT1
 295 :       NESP = MLMOT1.MOTS(/2)
 296 : C
 297 : C**** List de CP et CV
 298 : C
 299 :       JG = NESP+1
 300 :       SEGINI MLRECP
 301 :       SEGINI MLRECV
 302 :       DO I1 = 1, NESP
 303 : C
 304 : C******* N.B. MOT1 est un CHARACTER*(4)
 305 : C     
 306 :          MOT1(1) = MLMOT1.MOTS(I1)
 307 : C
 307 : C******* CALL ACMF(ICP,NOMC,CP)  ne marche pas parce que on a
 308 : C        des blanches dans nos composantes
 309 : C
 310 :          MTYPI = 'MOT     '
 311 :          MTYPR = '        '
 311 :          CALL ACCTAB(ICP,MTYPI,IVALI,XVALI,MOT1(1), LOGII,IRETI,
 312 :      &               MTYPR,IVALR,CP   ,CHARR,LOGIR,IRETR)
 313 :          IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 314 : C
 315 : C********** Message d'erreur standard
 316 : C           -301 0 %m1:40
 317 : C
 318 :             MOTERR = 'TAB1 . CP , TAB1 . ESPEULE = ???        '
 319 :             WRITE(IOIMP,*) MOTERR(1:40)
 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 :          MLRECP.PROG(I1) = CP
 328 : C
 329 :          MTYPI = 'MOT     '
 330 :          MTYPR = '        '
 330 :          CALL ACCTAB(ICV,MTYPI,IVALI,XVALI,MOT1(1), LOGII,IRETI,
 331 :      &               MTYPR,IVALR,CV   ,CHARR,LOGIR,IRETR)
 332 :          IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 333 : C
 334 : C********** Message d'erreur standard
 335 : C           -301 0 %m1:40
 336 : C
 337 :             MOTERR = 'TAB1  . CV , TAB1 . ESPEULE = ???       '
 338 :             WRITE(IOIMP,*) MOTERR(1:40)
 339 : C
 340 : C********** Message d'erreur standard
 341 : C           21 2
 342 : C           Données incompatibles
 343 : C
 343 :             CALL ERREUR(21)
 344 :             GOTO 9999
 345 :          ENDIF  
 346 :          MLRECV.PROG(I1) = CV
 347 :       ENDDO
 348 :       MTYPI = 'MOT     '
 349 :       MTYPR = '        '
 349 :       CALL ACCTAB(ICP,MTYPI,IVALI,XVALI,CELLCH, LOGII,IRETI,
 350 :      &            MTYPR,IVALR,CP   ,CHARR,LOGIR,IRETR)
 351 :       IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 352 : C
 353 : C******* Message d'erreur standard
 354 : C           -301 0 %m1:40
 355 : C
 356 :          MOTERR = 'TAB1  . CP , TAB1 . ESPNEULE = ???      '
 357 :          WRITE(IOIMP,*) MOTERR(1:40)
 358 : C
 359 : C********Message d'erreur standard
 360 : C        21 2
 361 : C        Données incompatibles
 362 : C
 362 :          CALL ERREUR(21)
 363 :          GOTO 9999
 364 :       ENDIF  
 365 :       MLRECP.PROG(JG) = CP
 366 : C
 367 :       MTYPI = 'MOT     '
 368 :       MTYPR = '        '
 368 :       CALL ACCTAB(ICV,MTYPI,IVALI,XVALI,CELLCH, LOGII,IRETI,
 369 :      &            MTYPR,IVALR,CV   ,CHARR,LOGIR,IRETR)
 370 :       IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
 371 : C
 372 : C******* Message d'erreur standard
 373 : C        -301 0 %m1:40
 374 : C
 375 :          MOTERR = 'TAB1 . CV , TAB1 . ESPNEULE = ???       '
 376 :          WRITE(IOIMP,*) MOTERR(1:40)
 377 : C
 378 : C******* Message d'erreur standard
 379 : C        21 2
 380 : C        Données incompatibles
 381 : C
 381 :          CALL ERREUR(21)
 382 :          GOTO 9999
 383 :       ENDIF  
 384 :       MLRECV.PROG(JG) = CV
 385 : C      
 386 : C**** Lecture du CHPOINT CHPO1 (masse volumique totale)
 387 : C
 388 :       ICOND = 1
 388 :       CALL QUETYP(MTYPR,ICOND,IRETOU)
 389 :       IF(IERR .NE. 0)GOTO 9999
 390 :       IF(MTYPR .NE. 'CHPOINT ')THEN
 391 : C
 392 : C******* Message d'erreur standard
 393 : C        37 2
 394 : C        On ne trouve pas d'objet de type %m1:8
 395 : C     
 396 :          MOTERR(1:8) = 'CHPOINT ' 
 396 :          CALL ERREUR(37)
 397 :          GOTO 9999
 398 :       ELSE
 399 :          ICOND = 1
 399 :          CALL LIROBJ(MTYPR,IRO,ICOND,IRETOU)
 400 :          IF(IERR .NE. 0)GOTO 9999
 401 :       ENDIF         
 402 : C
 403 : C**** On cherche le pointeur de son maillage et on l'impose sur les
 404 : C     autres CHPOINTs
 405 : C
 406 :       MCHPOI = IRO
 407 :       SEGACT MCHPOI
 408 :       MSOUPO = MCHPOI.IPCHP(1)
 409 :       SEGACT MSOUPO
 410 :       ICEN = MSOUPO.IGEOC
 411 :       SEGDES MSOUPO
 412 :       SEGDES MCHPOI
 413 : C
 414 : C**** Control du CHPOINT: QUEPOI
 415 : C
 416 : C     INDIC = 1   -> on impose le pointeur du support geometrique (ICEN)
 417 : C                   N.B. Le CHPOINT peut changer de structure pour
 418 : C                        avoir SPG = ICEN!!!!      
 419 : C     INDIC = 0   -> on ne fait que verifier le support geometrique
 420 : C                   (ICEN). Si le SPG sont differents INDIC = -4 en sortie       
 421 : C
 422 : C     NBCOMP > 0 -> numero des composantes      
 423 : C
 424 : C     MOT1(1) = ' ' obligatoire s'on connais pas les noms des composantes
 425 : C
 426 :       INDIC = 1
 427 :       NBCOMP = 1
 428 :       MOT1(1) = 'SCAL'
 428 :       CALL QUEPOI(IRO, ICEN, INDIC, NBCOMP, MOT1)
 429 :       IF(IERR .NE. 0)THEN
 430 :          IERR0 = IERR
 431 : 
 432 : C
 433 : C******** Message d'erreur standard
 434 : C        -301 0 %m1:40
 435 : C
 436 :          MOTERR  = 'CHPO1                                   '
 437 :          WRITE(IOIMP,*) MOTERR(1:40)         
 438 : 
 439 :          GOTO 9999
 440 :       ENDIF  
 441 : C      
 442 : C**** Lecture du CHPOINT CHPO2( debits)
 443 : C
 444 :       ICOND = 1
 444 :       CALL QUETYP(MTYPR,ICOND,IRETOU)
 445 :       IF(IERR .NE. 0)GOTO 9999
 446 :       IF(MTYPR .NE. 'CHPOINT ')THEN
 447 : C
 448 : C******* Message d'erreur standard
 449 : C        37 2
 450 : C        On ne trouve pas d'objet de type %m1:8
 451 : C     
 452 :          MOTERR(1:8) = 'CHPOINT ' 
 452 :          CALL ERREUR(37)
 453 :          GOTO 9999
 454 :       ELSE
 455 :          ICOND = 1
 455 :          CALL LIROBJ(MTYPR,IROVIT,ICOND,IRETOU)
 456 :          IF(IERR .NE. 0)GOTO 9999
 457 :       ENDIF         
 458 : C
 459 : C**** Control du CHPOINT
 460 : C     
 461 :       INDIC = 1
 462 :       NBCOMP = IDIM
 463 :       JGN = 4
 464 :       JGM = IDIM
 465 :       SEGINI MLMOT2
 466 :       MLMOT2.MOTS(1) = 'UX  '
 467 :       MLMOT2.MOTS(2) = 'UY  '
 468 :       IF(IDIM .EQ. 3) MLMOT2.MOTS(3) = 'UZ  '
 468 :       CALL QUEPO1(IROVIT, ICEN, MLMOT2)
 469 :       IF(IERR .NE. 0)THEN
 470 :          IERR0 = IERR
 471 : 
 472 : C
 473 : C******** Message d'erreur standard
 474 : C        -301 0 %m1:40
 475 : C
 476 :          MOTERR = 'CHPO2                                   '
 477 :          WRITE(IOIMP,*) MOTERR(1:40)         
 478 : 
 479 :          GOTO 9999
 480 :       ENDIF  
 481 : C      
 482 : C**** Lecture du CHPOINT CHPO3(energie volumique)
 483 : C
 484 :       ICOND = 1
 484 :       CALL QUETYP(MTYPR,ICOND,IRETOU)
 485 :       IF(IERR .NE. 0)GOTO 9999
 486 :       IF(MTYPR .NE. 'CHPOINT ')THEN
 487 : C
 488 : C******* Message d'erreur standard
 489 : C        37 2
 490 : C        On ne trouve pas d'objet de type %m1:8
 491 : C     
 492 :          MOTERR(1:8) = 'CHPOINT ' 
 492 :          CALL ERREUR(37)
 493 :          GOTO 9999
 494 :       ELSE
 495 :          ICOND = 1
 495 :          CALL LIROBJ(MTYPR,IROET,ICOND,IRETOU)
 496 :          IF(IERR .NE. 0)GOTO 9999
 497 :       ENDIF         
 498 : C
 499 : C**** Control du CHPOINT
 500 : C     
 501 :       INDIC = 1
 502 :       NBCOMP = 1
 503 :       MOT1(1) = 'SCAL'
 503 :       CALL QUEPOI(IROET, ICEN, INDIC, NBCOMP, MOT1)
 504 :       IF(IERR .NE. 0)THEN
 505 :          IERR0 = IERR
 506 : 
 507 : C
 508 : C******** Message d'erreur standard
 509 : C        -301 0 %m1:40
 510 : C
 511 :          MOTERR = 'CHPO3                                   '
 512 :          WRITE(IOIMP,*) MOTERR(1:40)
 513 : 
 514 :          GOTO 9999
 515 :       ENDIF 
 516 : C      
 517 : C**** Lecture du CHPOINT CHPO4(masses volumiques des especes "splittees")
 518 : C
 519 :       ICOND = 1
 519 :       CALL QUETYP(MTYPR,ICOND,IRETOU)
 520 :       IF(IERR .NE. 0)GOTO 9999
 521 :       IF(MTYPR .NE. 'CHPOINT ')THEN
 522 : C
 523 : C******* Message d'erreur standard
 524 : C        37 2
 525 : C        On ne trouve pas d'objet de type %m1:8
 526 : C     
 527 :          MOTERR(1:8) = 'CHPOINT ' 
 527 :          CALL ERREUR(37)
 528 :          GOTO 9999
 529 :       ELSE
 530 :          ICOND = 1
 530 :          CALL LIROBJ(MTYPR,IROY,ICOND,IRETOU)
 531 :          IF(IERR .NE. 0)GOTO 9999
 532 :       ENDIF         
 533 : C
 534 : C**** Control du CHPOINT
 535 : C     
 535 :       CALL QUEPO1(IROY , ICEN , MLMOT1)
 536 :       IF(IERR .NE. 0)THEN
 537 :  
 538 : C
 539 : C******* Message d'erreur standard
 540 : C        -301 0 %m1:40
 541 : C
 542 :          MOTERR = 'CHPO4 = ???                             '
 543 :          WRITE(IOIMP,*) MOTERR(1:40)
 544 : C
 545 : C******* Message d'erreur standard
 546 : C        21 2
 547 : C        Données incompatibles
 548 : C
 548 :          CALL ERREUR(21)
 549 :          GOTO 9999
 550 :       ENDIF
 551 : C
 552 : C******* Option TRICHE
 553 : C
 554 :       ICOND = 0
 554 :       CALL LIRCHA(NOMTRI,ICOND,IRETOU)
 555 :       IF(IERR .NE. 0)GOTO 9999
 556 :       IF(IRETOU .EQ. 0)THEN
 557 :          LOGTRI = .FALSE.
 558 :       ELSEIF(NOMTRI .EQ. 'TRICHE')THEN
 559 :          LOGTRI  = .TRUE.
 560 :       ELSE
 561 :          LOGTRI = .FALSE.
 561 :          CALL ECRCHA(NOMTRI)
 562 :       ENDIF
 563 : C
 564 : C**** Calcul des sorties.
 565 : C
 566 : C     Jusque a la NESP = nombre d'especes qui apparessent
 567 : C     dans les equations d'Euler
 568 : C
 569 : C     Maintenant NESP = nombre total d'espece
 570 : C
 571 :       NESP = NESP + 1
 571 :       CALL PRMECA(NESP,
 572 :      &            ICEN,IRO,IROVIT,IROET,IROY,MLRECP,MLRECV,
 573 :      &            IVIT,IPRES,ITEMP,IY,IGAM,
 574 :      &            LOGAN,LOGNEG,LOGBOR,MESERR,
 575 :      &            VALER,VAL1,VAL2)
 576 : C     
 577 :       IF(LOGAN)THEN
 578 : C
 579 : C******* Message d'erreur standard
 580 : C        5 3
 581 : C        Erreur anormale.contactez votre support
 582 : C
 582 :          CALL ERREUR(5)
 583 :          GOTO 9999
 584 :       ELSE
 585 :          IF(LOGNEG)THEN
 586 : C
 587 : C******* Pression (energie thermique)  ou densité negative
 588 : C
 589 : C
 590 : C******* Message d'erreur standard
 591 : C        41 2
 592 : C        %m1:8 = %r1 inférieur à %r2
 593 : C
 594 :             MESCEL = MESERR(1)
 595 :             MOTERR(1:8) = MESCEL(1:8)
 596 :             REAERR(1) = REAL(VALER(1))
 597 :             REAERR(2) = 0.0
 597 :             CALL ERREUR(41)
 598 :             IF(LOGTRI)THEN
 599 : *               IERR = 0
 600 :             ELSE
 601 :                GOTO 9999
 602 :             ENDIF
 603 :          ENDIF
 604 :          IF(LOGBOR)THEN
 605 : C      
 606 : C******* GAMMA !\in  GAMMIN, GAMMAX
 607 : C        ou Y !\in YMIN,YMAX       
 608 : C
 609 : C******* Message d'erreur standard
 610 : C        42 2
 611 : C        %m1:8 = %r1 non compris entre %r2 et %r3
 612 : C
 613 :             MESCEL = MESERR(2)
 614 :             MOTERR(1:8) = MESCEL(1:8)
 615 :             REAERR(1) = REAL(VALER(2))
 616 :             REAERR(2) = REAL(VAL1)
 617 :             REAERR(3) = REAL(VAL2)
 617 :             CALL ERREUR(42)
 618 :             IF(LOGTRI)THEN
 619 : *               IERR = 0
 620 :             ELSE
 621 :                GOTO 9999
 622 :             ENDIF
 623 :          ENDIF
 624 : C
 625 : C******* Ecriture du CHPOINT contenant les "gamma".
 626 : C
 626 :          CALL ECROBJ('CHPOINT',IGAM)
 627 : C
 628 : C******* Ecriture du CHPOINT contenant Y.
 629 : C
 629 :          CALL ECROBJ('CHPOINT',IY)         
 630 : C
 631 : C******* Ecriture du CHPOINT contenant la temperature.
 632 : C
 632 :          CALL ECROBJ('CHPOINT',ITEMP)
 633 : C
 634 : C******* Ecriture du CHPOINT contenant la pression.
 635 : C
 635 :          CALL ECROBJ('CHPOINT',IPRES)
 636 : C
 637 : C******* Ecriture du CHPOINT contenant la vitesse.
 638 : C
 638 :          CALL ECROBJ('CHPOINT',IVIT)
 639 : C
 640 :       ENDIF  
 641 : C
 642 :       SEGSUP MLRECV
 643 :       SEGSUP MLRECV
 644 :       SEGSUP MLMOT2
 645 :       SEGDES MLMOT1
 646 : C
 647 :  9999 CONTINUE
 648 : C      
 649 :       RETURN                                                                    
 650 :       END
 651 : 
 652 : 
 653 : 
 654 :  
 655 :  
 656 :  
 657 :  
 658 :  
 659 :  

© Cast3M 2003 - All rights reserved.
Disclaimer