Download flamb.eso

Back to the list

   1 : C FLAMB     SOURCE    CHAT      06/03/29    21:21:25     5360           
   2 :       SUBROUTINE FLAMB()
   3 : C************************************************************************
   4 : C
   5 : C PROJET            :  CASTEM 2000
   6 : C
   7 : C NOM               :  FLAMB
   8 : C
   9 : C DESCRIPTION       :  voir aussi FLAM
  10 : C  
  11 : C                      Calcul des masses specifiques de H2, O2, H2O et de
  12 : C                      l'energie libere dans le cas de combustion
  13 : C                      governe' par une loi de type Arrhenius:
  14 : C
  15 : C                      2 H2 + O2 -> 2 H2O
  16 : C
  17 : C                      w = A H(T - Ts) RH2^c RO2 * T^(-b) exp(-Ta/T)
  18 : C                      
  19 : C                      ou
  20 : C
  21 : C                      w = taux de reaction MOLAIRE pour la reaction 
  22 : C                           chimie, qui est suppose' etre elementaire
  23 : C                      
  24 : C                      H(T - Ts) est la fontion d'Heavyside
  25 : C  
  26 : C                      N.B. L'energie thermique de chaque epsece est 
  27 : C                      definie par
  28 : C
  29 : C                           e = \int_{0}^T cv(y) dy
  30 : C
  31 : C                      Toutes les grandeurs sont exprimees en unites S.I. 
  32 : C    
  33 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  34 : C      
  35 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/LTMF                        
  36 : C
  37 : C************************************************************************
  38 : C
  39 : C APPELES (E/S)     : LIROBJ, ERREUR, LIRREE, QUEPOI, ECROBJ 
  40 : C     
  41 : C APPELES (Calcul)  : FLAMB1
  42 : C
  43 : C************************************************************************
  44 : C      
  45 : C
  46 : C PHRASE D'APPEL (GIBIANE) :
  47 : C
  48 : C RCHPO1 RCHPO2 RCHPO3 RCHPO4  = 'FLAM' MCLE1 CHPO1 FLOT1 FLOT2 FLOT3 
  49 : C                                 FLOT4 FLOT5 FLOT6 FLOT7 FLOT8
  50 : C                                 CHPO2 CHPO3 CHPO4 CHPO5 ;
  51 : C
  52 : C ENTREES  : 
  53 : C
  54 : C            MCLE1   : 'ARRHENIU'  : mot clé
  55 : C                  
  56 : C            CHPO1   : CHPOINT contenant la temperature de seuil (en K; 
  57 : C                      une composante, 'SCAL').
  58 : C
  59 : C            FLOT1   : FLOTTANT contenant la constant A (en unite S.I.)
  60 : C
  61 : C            FLOT2   : FLOTTANT contenant la constant b 
  62 : C
  63 : C            FLOT3   : FLOTTANT contenant la constant c 
  64 : C
  65 : C            FLOT4   : FLOTTANT contenant la "temperature" d'activation
  66 : C                      (en K)
  67 : C
  68 : C            FLOT5   : FLOTTANT contenant l'enthalpie de H2
  69 : C                      a 0K (en J/kg)
  70 : C
  71 : C            FLOT6   : FLOTTANT contenant l'enthalpie de O2
  72 : C                      a 0K (en J/kg)
  73 : C
  74 : C            FLOT7   : FLOTTANT contenant l'enthalpie de H2O
  75 : C                      a 0K (en J/kg)
  76 : C       
  77 : C            FLOT8   : FLOTTANT contenant l'interval temporelle de
  78 : C                      reaction (en s)
  79 : C
  80 : C            CHPO2   : CHPOINT  contenant la masse volumique de
  81 : C                      l'hydrogene (en Kg/m^3; une composante, 'H2  ').
  82 : C
  83 : C            CHPO3   : CHPOINT  contenant la masse volumique de
  84 : C                      l'oxygene (en Kg/m^3; une composante, 'O2  ').
  85 : C
  86 : C            CHPO4   : CHPOINT  contenant la masse volumique de
  87 : C                      l'eau (en Kg/m^3; une composante, 'H2O ').
  88 : C
  89 : C            CHPO5   : CHPOINT contenant la temperature (en K; une 
  90 : C                      composante, 'SCAL').
  91 : C
  92 : C SORTIES  : 
  93 : C
  94 : C      
  95 : C            RCHPO1  : CHPOINT  contenant la masse volumique de 
  96 : C                      l'hydrogene apres la reaction (en Kg/m^3; 
  97 : C                      une composante, 'H2  ').
  98 : C
  99 : C            RCHPO2  : CHPOINT  contenant la masse volumique de
 100 : C                      l'oxygene apres la reaction (en Kg/m^3; 
 101 : C                      une composante, 'O2  ').
 102 : C
 103 : C            RCHPO3  : CHPOINT  contenant la masse volumique de
 104 : C                      l'eau apres la reaction (en Kg/m^3; 
 105 : C                      une composante, 'H2O ').
 106 : C
 107 : C            RCHPO4  : CHPOINT contenant la chaleur libere' (en J/m^3; 
 108 : C                      une composante, 'SCAL').
 109 : C
 110 : C            N.B.:-tous les CHPOINTs sont non-partitonees et
 111 : C                  ils ont le meme support geometrique;
 112 : C                  en sortie tous les CHPOINTs ont le support
 113 : C                  geometrique du CHPO1 
 114 : C      
 115 : C************************************************************************
 116 : C
 117 : C HISTORIQUE (Anomalies et modifications éventuelles)
 118 : C
 119 : C HISTORIQUE :  Créée le 25.2.99
 120 : C 
 121 : C
 122 : C************************************************************************
 123 : C
 124 : C
 125 : C**** Variables de COOPTIO
 126 : C
 127 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 128 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 129 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 130 : C     &        ,IECHO,   IIMPI,  IOSPI
 131 : C     &        ,IDIM
 132 : C     &        ,MCOORD      
 133 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 134 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 135 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
 136 : C     &        ,NUCROU, IPSAUV
 137 : C
 138 : C**** Les variables
 139 : C
 140 :       IMPLICIT INTEGER(I-N)
 141 :       INTEGER ICOND, IRETOU, IERR0, ICEN, NCEN, NBCOMP, INDIC
 142 :      &      , ITSEUI, IRYH2, IRYO2 , IRYH2O, ITEMP
 143 :      &      , IDE, INH2, INO2, INH2O, N, NC 
 144 :       REAL*8 A, B, C, TA, H0H2, H0O2, H0H2O, DT, VALER
 145 :       CHARACTER*(8) MESERR 
 146 :       CHARACTER*(8) MTYPR
 147 :       CHARACTER*(4) NOMTOT(1)
 148 :       LOGICAL LOGNEG
 149 : 
 150 : C     
 151 : C**** Les Includes
 152 : C
 153 : -INC CCOPTIO
 154 : -INC SMCHPOI      
 155 :       POINTEUR TSEUIL.MPOVAL, TEMP.MPOVAL, RYH2.MPOVAL, RYO2.MPOVAL
 156 :      & , RYH2O.MPOVAL, NRYH2.MPOVAL, NRYO2.MPOVAL, NRYH2O.MPOVAL
 157 :      & , DE.MPOVAL
 158 : -INC SMELEME
 159 : C
 160 : C**** Initialisation des parametres d'erreur
 161 : C
 162 :       LOGNEG  = .FALSE.
 163 :       MESERR  = '        '
 164 :       VALER = 0.0D0
 165 : C
 166 : C**** Initialisation des NOMTOT(1) (noms des composantes)      
 167 : C
 168 :       NOMTOT(1) = '    '
 169 : C      
 170 : C**** Lecture du CHPOINT CHPO1 (temperature de seuil)
 171 : C
 172 :       ICOND = 1
 173 :       MTYPR = 'CHPOINT '
 173 :       CALL LIROBJ(MTYPR,ITSEUI,ICOND,IRETOU)
 174 :       IF(IERR .NE. 0)GOTO 9999
 175 : C
 176 : C**** On cherche le pointeur de son maillage et on l'impose sur les
 177 : C     autres CHPOINTs
 178 : C     En plus on controlle: NBCOMP = 1
 179 : C                           MSOUPO.NOCOMP(1) = 'SCAL'
 180 : C
 181 :       MCHPOI = ITSEUI
 182 :       SEGACT MCHPOI
 183 :       MSOUPO = MCHPOI.IPCHP(1)
 184 :       SEGACT MSOUPO
 185 :       NBCOMP = MSOUPO.NOCOMP(/2)
 186 :       IF(NBCOMP .NE. 1)THEN
 187 : C
 188 : C******** Message d'erreur standard
 189 : C        -301 0 %m1:40
 190 : C
 191 :          MOTERR  = 'CHPO1 = ???                             '
 191 :          CALL ERREUR(-301)         
 192 : C
 193 : C******** Message d'erreur standard
 194 : C         699 2
 195 : C         routine %m1:8 : On voulait un %m9:16 à %i1 composantes au lieu
 196 : C         de %i2 
 197 : C
 198 :          MOTERR(1:8)  = ' QUEPOI '
 199 :          MOTERR(9:16) = 'CHPOINT '
 200 :          INTERR(1)   = 1
 201 :          INTERR(2)   = NBCOMP
 201 :          CALL ERREUR(699)
 202 :          GOTO 9999
 203 :       ENDIF
 204 :       NOMTOT(1) = MSOUPO.NOCOMP(1)
 205 :       IF(NOMTOT(1) .NE. 'SCAL')THEN
 206 : C
 207 : C******** Message d'erreur standard
 208 : C        -301 0 %m1:40
 209 : C
 210 :          MOTERR  = 'CHPO1 = ???                             '
 210 :          CALL ERREUR(-301)
 211 : C
 212 : C******** Message d'erreur standard
 213 : C         197 2
 214 : C         Le mot %m1:4 n'est pas un nom de composante reconnu
 215 : C
 216 :          MOTERR(1:4) = NOMTOT(1)
 216 :          CALL ERREUR(197)
 217 :          GOTO 9999
 218 :       ENDIF
 219 :       ICEN = MSOUPO.IGEOC
 220 :       MELEME = ICEN
 221 :       SEGACT MELEME
 222 :       NCEN = MELEME.NUM(/2)
 223 :       SEGDES MELEME
 224 :       TSEUIL = MSOUPO.IPOVAL
 225 :       SEGDES MSOUPO
 226 :       SEGDES MCHPOI
 227 : C      
 228 : C**** Lecture du FLOT1 
 229 : C
 230 :       ICOND = 1
 230 :       CALL LIRREE(A, ICOND, IRETOU)
 231 :       IF(IERR .NE. 0)GOTO 9999
 232 : C      
 233 : C**** Lecture du FLOT2 
 234 : C
 235 :       ICOND = 1
 235 :       CALL LIRREE(B, ICOND, IRETOU)
 236 :       IF(IERR .NE. 0)GOTO 9999
 237 : C      
 238 : C**** Lecture du FLOT3
 239 : C
 240 :       ICOND = 1
 240 :       CALL LIRREE(C, ICOND, IRETOU)
 241 :       IF(IERR .NE. 0)GOTO 9999
 242 : C      
 243 : C**** Lecture du FLOT4 
 244 : C
 245 :       ICOND = 1
 245 :       CALL LIRREE(TA, ICOND, IRETOU)
 246 :       IF(IERR .NE. 0)GOTO 9999
 247 : C      
 248 : C**** Lecture du FLOT5 
 249 : C
 250 :       ICOND = 1
 250 :       CALL LIRREE(H0H2, ICOND, IRETOU)
 251 :       IF(IERR .NE. 0)GOTO 9999
 252 : C      
 253 : C**** Lecture du FLOT6 
 254 : C
 255 :       ICOND = 1
 255 :       CALL LIRREE(H0O2, ICOND, IRETOU)
 256 :       IF(IERR .NE. 0)GOTO 9999
 257 : C      
 258 : C**** Lecture du FLOT7 
 259 : C
 260 :       ICOND = 1
 260 :       CALL LIRREE(H0H2O, ICOND, IRETOU)
 261 :       IF(IERR .NE. 0)GOTO 9999
 262 : C      
 263 : C**** Lecture du FLOT8 
 264 : C
 265 :       ICOND = 1
 265 :       CALL LIRREE(DT, ICOND, IRETOU)
 266 :       IF(IERR .NE. 0)GOTO 9999
 267 : C      
 268 : C**** Lecture du CHPOINT CHPO2
 269 : C
 270 :       MTYPR = 'CHPOINT'
 270 :       CALL LIROBJ(MTYPR,IRYH2,ICOND,IRETOU)
 271 :       IF(IERR .NE. 0)GOTO 9999
 272 : C
 273 : C**** Control du CHPOINT
 274 : C     
 275 :       INDIC = 1
 276 :       NBCOMP = 1
 277 :       NOMTOT(1) = 'H2  '
 277 :       CALL QUEPOI(IRYH2, ICEN, INDIC, NBCOMP, NOMTOT)
 278 :       IF(IERR .NE. 0)THEN
 279 :          IERR0 = IERR
 280 : 
 281 : C
 282 : C******** Message d'erreur standard
 283 : C        -301 0 %m1:40
 284 : C
 285 :          MOTERR = 'CHPO2 = ???                             '
 285 :          CALL ERREUR(-301)         
 286 : 
 287 :          GOTO 9999
 288 :       ENDIF  
 289 : C      
 290 : C**** Lecture du CHPOINT CHPO3
 291 : C
 292 :       MTYPR = 'CHPOINT'
 292 :       CALL LIROBJ(MTYPR,IRYO2,ICOND,IRETOU)
 293 :       IF(IERR .NE. 0)GOTO 9999
 294 : C
 295 : C**** Control du CHPOINT
 296 : C     
 297 :       INDIC = 1
 298 :       NBCOMP = 1
 299 :       NOMTOT(1) = 'O2  '
 299 :       CALL QUEPOI(IRYO2, ICEN, INDIC, NBCOMP, NOMTOT)
 300 :       IF(IERR .NE. 0)THEN
 301 :          IERR0 = IERR
 302 : 
 303 : C
 304 : C******** Message d'erreur standard
 305 : C        -301 0 %m1:40
 306 : C
 307 :          MOTERR = 'CHPO3 = ???                             '
 307 :          CALL ERREUR(-301)         
 308 : 
 309 :          GOTO 9999
 310 :       ENDIF  
 311 : C      
 312 : C**** Lecture du CHPOINT CHPO4
 313 : C
 314 :       MTYPR = 'CHPOINT'
 314 :       CALL LIROBJ(MTYPR,IRYH2O,ICOND,IRETOU)
 315 :       IF(IERR .NE. 0)GOTO 9999
 316 : C
 317 : C**** Control du CHPOINT
 318 : C     
 319 :       INDIC = 1
 320 :       NBCOMP = 1
 321 :       NOMTOT(1) = 'H2O '
 321 :       CALL QUEPOI(IRYH2O, ICEN, INDIC, NBCOMP, NOMTOT)
 322 :       IF(IERR .NE. 0)THEN
 323 :          IERR0 = IERR
 324 : 
 325 : C
 326 : C******** Message d'erreur standard
 327 : C        -301 0 %m1:40
 328 : C
 329 :          MOTERR = 'CHPO4 = ???                             '
 329 :          CALL ERREUR(-301)         
 330 : 
 331 :          GOTO 9999
 332 :       ENDIF  
 333 : C      
 334 : C**** Lecture du CHPOINT CHPO5
 335 : C
 336 :       MTYPR = 'CHPOINT'
 336 :       CALL LIROBJ(MTYPR,ITEMP,ICOND,IRETOU)
 337 :       IF(IERR .NE. 0)GOTO 9999
 338 : C
 339 : C**** Control du CHPOINT
 340 : C     
 341 :       INDIC = 1
 342 :       NBCOMP = 1
 343 :       NOMTOT(1) = 'SCAL'
 343 :       CALL QUEPOI(ITEMP, ICEN, INDIC, NBCOMP, NOMTOT)
 344 :       IF(IERR .NE. 0)THEN
 345 :          IERR0 = IERR
 346 : 
 347 : C
 348 : C******** Message d'erreur standard
 349 : C        -301 0 %m1:40
 350 : C
 351 :          MOTERR = 'CHPO5 = ???                             '
 351 :          CALL ERREUR(-301)         
 352 : 
 353 :          GOTO 9999
 354 :       ENDIF  
 355 : C
 356 : C**** On defini les CHPOINTs de sortie et on active les MPOVALs
 357 : C     des CHPOINTs en entre
 358 : C
 359 : C     DE
 360 : C
 361 :       NC = 1
 362 :       N = NCEN
 363 :       SEGINI, DE 
 364 : C
 365 : C     DE initialise a 0.0D0
 366 : C     N.B.: MSOUPO, MCHPOI sont relatif a ITSEUI
 367 : C
 368 :       SEGINI, MSOUP1 = MSOUPO
 369 :       MSOUP1.IPOVAL = DE
 370 :       SEGDES MSOUP1
 371 :       SEGINI, MCHPO1 = MCHPOI
 372 :       MCHPO1.IPCHP(1) = MSOUP1
 373 :       MCHPO1.MOCHDE(1:40) = '                                        '
 374 :       MCHPO1.MOCHDE(41:72) = '                                '
 375 :       SEGDES MCHPO1
 376 :       IDE = MCHPO1
 377 : C
 378 : C     NRYH2
 379 : C
 380 :       MCHPOI = IRYH2
 381 :       SEGACT MCHPOI
 382 :       MSOUPO = MCHPOI.IPCHP(1)
 383 :       SEGACT MSOUPO
 384 :       RYH2 = MSOUPO.IPOVAL
 385 :       SEGINI, NRYH2 = RYH2
 386 :       SEGINI, MSOUP1 = MSOUPO
 387 :       MSOUP1.IPOVAL = NRYH2
 388 :       SEGDES MSOUP1
 389 :       SEGINI, MCHPO1 = MCHPOI
 390 :       MCHPO1.IPCHP(1) = MSOUP1
 391 :       MCHPO1.MOCHDE(1:40) = '                                        '
 392 :       MCHPO1.MOCHDE(41:72) = '                                '
 393 :       SEGDES MCHPO1
 394 :       INH2 = MCHPO1
 395 : C
 396 : C     NRYO2
 397 : C
 398 :       MCHPOI = IRYO2
 399 :       SEGACT MCHPOI
 400 :       MSOUPO = MCHPOI.IPCHP(1)
 401 :       SEGACT MSOUPO
 402 :       RYO2 = MSOUPO.IPOVAL
 403 :       SEGINI, NRYO2 = RYO2
 404 :       SEGINI, MSOUP1 = MSOUPO
 405 :       MSOUP1.IPOVAL = NRYO2
 406 :       SEGDES MSOUP1
 407 :       SEGINI, MCHPO1 = MCHPOI
 408 :       MCHPO1.IPCHP(1) = MSOUP1
 409 :       MCHPO1.MOCHDE(1:40) = '                                        '
 410 :       MCHPO1.MOCHDE(41:72) = '                                '
 411 :       SEGDES MCHPO1
 412 :       INO2 = MCHPO1
 413 : C
 414 : C     NRYH2O
 415 : C
 416 :       MCHPOI = IRYH2O
 417 :       SEGACT MCHPOI
 418 :       MSOUPO = MCHPOI.IPCHP(1)
 419 :       SEGACT MSOUPO
 420 :       RYH2O = MSOUPO.IPOVAL
 421 :       SEGINI, NRYH2O = RYH2O
 422 :       SEGINI, MSOUP1 = MSOUPO
 423 :       MSOUP1.IPOVAL = NRYH2O
 424 :       SEGDES MSOUP1
 425 :       SEGINI, MCHPO1 = MCHPOI
 426 :       MCHPO1.IPCHP(1) = MSOUP1
 427 :       MCHPO1.MOCHDE(1:40) = '                                        '
 428 :       MCHPO1.MOCHDE(41:72) = '                                '
 429 :       SEGDES MCHPO1
 430 :       INH2O = MCHPO1
 431 : C
 432 : C     TEMP
 433 : C
 434 :       MCHPOI = ITEMP
 435 :       SEGACT MCHPOI
 436 :       MSOUPO = MCHPOI.IPCHP(1)
 437 :       SEGDES MCHPOI
 438 :       SEGACT MSOUPO
 439 :       TEMP = MSOUPO.IPOVAL
 440 :       SEGDES MSOUPO
 441 :       SEGACT TEMP
 442 : C
 443 :       SEGACT RYH2, RYO2, RYH2O, TSEUIL
 444 : C
 444 :       CALL FLAMB1(NCEN,DT,A,B,C,TA,TSEUIL.VPOCHA,H0H2,H0O2,H0H2O,
 445 :      &            TEMP.VPOCHA, RYH2.VPOCHA, RYO2.VPOCHA, RYH2O.VPOCHA,
 446 :      &            DE.VPOCHA, NRYH2.VPOCHA, NRYO2.VPOCHA, NRYH2O.VPOCHA,
 447 :      &            LOGNEG, MESERR, VALER)
 448 : C
 449 :       IF(LOGNEG)THEN
 450 : C
 451 : C******* Temperature ou densite' negative
 452 : C
 453 : C
 454 : C******* Message d'erreur standard
 455 : C        41 2
 456 : C        %m1:8 = %r1 inférieur à %r2
 457 : C
 458 :          MOTERR(1:8) = MESERR(1:8)
 459 :          REAERR(1) = REAL(VALER)
 460 :          REAERR(2) = 0.0
 460 :          CALL ERREUR(41)
 461 :          GOTO 9999
 462 :       ENDIF
 463 : C
 464 :       SEGDES, TSEUIL, TEMP, RYH2, RYO2, RYH2O, DE, NRYH2, NRYO2, NRYH2O
 465 : C
 466 : C**** Ecriture du CHPOINT contenant IDE (dernier), INH2O, INO2, INH2
 467 : C
 467 :       CALL ECROBJ('CHPOINT',IDE)
 467 :       CALL ECROBJ('CHPOINT',INH2O)
 467 :       CALL ECROBJ('CHPOINT',INO2)
 467 :       CALL ECROBJ('CHPOINT',INH2)
 468 : C
 469 :  9999 CONTINUE
 470 : C      
 471 :       RETURN                                                                    
 472 :       END
 473 : 
 474 : 
 475 : 
 476 :  
 477 :  
 478 :  
 479 :  
 480 :  
 481 :  
 482 :  

© Cast3M 2003 - All rights reserved.
Disclaimer