Download prim_ther_multi.dgibi

Back to the list

* fichier :  prim_ther_multi.dgibi
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la    ****
**** solution des                                      **** 
**** Equations d'Euler pour un gaz parfait             ****
**** OPERATEUR  PRIM                                   ****
**** Gaz multi-especes "thermally perfect"             ****
****                                                   ****
**** A. BECCANTINI DRN/DMT/SEMT/LTMF   FEVRIER 2000    ****
**** MODIFS :                                          ****
**** A. BECCANTINI DEN/DM2S/SFME/LTMF  FEVRIER 2000    ****
****                                                   ****
**** Ajoute des propriete's de D2 et D2O               ****
***********************************************************
*
'OPTION'  'DIME' 2 ;
'OPTION'  'ELEM' QUA4 ;
'OPTION'  'ECHO'  0 ;
'OPTION'  'TRAC' 'X';
*
*
**** GRAPH
*
*
GRAPH = FAUX ;
* GRAPH = VRAI ;
*
   
*
*** On considere une melange H2, O2, H2O, N2
*
* De la table JANAF on a, pour les cp (J/Kg/K) 
*

LTEMP = 'PROG' .2000D+03   .3000D+03   .4000D+03   .5000D+03   .6000D+03   
         .7000D+03   .8000D+03   .9000D+03   .1000D+04   .1100D+04   
         .1200D+04   .1300D+04   .1400D+04   .1500D+04   .1600D+04   
         .1700D+04   .1800D+04   .1900D+04   .2000D+04   .2100D+04   
         .2200D+04   .2300D+04   .2400D+04   .2500D+04   .2600D+04 ;

LTEMP = LTEMP 'ET' ('PROG'                     
         .2700D+04   .2800D+04   .2900D+04   .3000D+04   .3100D+04
         .3200D+04   .3300D+04   .3400D+04   .3500D+04   .3600D+04   
         .4000D+04   .4500D+04   .5000D+04   .5500D+04   .6000D+04) ;

LCVH2 = 'PROG' .9944D+04   .1018D+05   .1035D+05   .1039D+05   .1042D+05   
         .1048D+05   .1057D+05   .1070D+05   .1086D+05   .1104D+05   
         .1125D+05   .1147D+05   .1168D+05   .1190D+05   .1211D+05   
         .1231D+05   .1251D+05   .1270D+05   .1288D+05   .1305D+05   
         .1321D+05   .1337D+05   .1351D+05   .1365D+05   .1378D+05 ;

LCVH2 = LCVH2 'ET' ('PROG'                   
         .1391D+05   .1403D+05   .1415D+05   .1426D+05   .1438D+05 
         .1449D+05   .1460D+05   .1471D+05   .1480D+05   .1490D+05
         .1528D+05   .1573D+05   .1613D+05   .1646D+05   .1669D+05 ) ;

LCVH2O='PROG' .1389D+04   .1403D+04   .1440D+04   .1493D+04   .1554D+04   
          .1619D+04   .1687D+04   .1758D+04   .1829D+04   .1899D+04   
          .1968D+04   .2033D+04   .2094D+04   .2152D+04   .2205D+04   
          .2254D+04   .2300D+04   .2341D+04   .2379D+04   .2414D+04   
          .2446D+04   .2476D+04   .2503D+04   .2528D+04   .2552D+04 ;

LCVH2O = LCVH2O 'ET' ( 'PROG'              
          .2574D+04   .2595D+04   .2615D+04   .2634D+04   .2652D+04   
          .2670D+04   .2686D+04   .2703D+04   .2718D+04   .2734D+04   
          .2759D+04   .2801D+04   .2835D+04   .2868D+04   .2900D+04 ) ;

LCVO2 = 'PROG' .6500D+03   .6580D+03   .6810D+03   .7120D+03   .7430D+03
          .7710D+03   .7940D+03   .8140D+03   .8300D+03   .8430D+03
          .8550D+03   .8650D+03   .8740D+03   .8820D+03   .8900D+03
          .8970D+03   .9040D+03   .9110D+03   .9180D+03   .9250D+03
          .9320D+03   .9390D+03   .9450D+03   .9520D+03   .9580D+03 ;

LCVO2 = LCVO2 'ET' ('PROG'           
          .9640D+03   .9700D+03   .9760D+03   .9810D+03   .9870D+03
          .9920D+03   .9970D+03   .1001D+04   .1006D+04   .1010D+04
          .1034D+04   .1054D+04   .1074D+04   .1097D+04   .1127D+04 ) ;

LCVN2 ='PROG'  .7420D+03   .7430D+03   .7470D+03   .7590D+03   .7780D+03 
          .8010D+03   .8250D+03   .8490D+03   .8700D+03   .8900D+03
          .9070D+03   .9220D+03   .9350D+03   .9470D+03   .9570D+03
          .9660D+03   .9730D+03   .9800D+03   .9870D+03   .9920D+03
          .9970D+03   .1002D+04   .1006D+04   .1009D+04   .1013D+04 ;

LCVN2 = LCVN2 'ET' ('PROG'                     
          .1016D+04   .1019D+04   .1021D+04   .1024D+04   .1026D+04
          .1028D+04   .1030D+04   .1032D+04   .1034D+04   .1035D+04
          .1043D+04   .1050D+04   .1056D+04   .1062D+04   .1069D+04 ) ;

'MESSAGE' ;          
'MESSAGE' ('cv_i = polynoms de 4-eme degre');          
'MESSAGE' ;

ERRMAX = 1.0D-6 ;        


*) Degre de polynome = 4
          
***********************
**** LA TABLE PGAZ ****
***********************

PGAZ = 'TABLE' ;

*
**** Ordre des polynoms
*

PGAZ . 'NORD' = 4 ;

*
**** Especes qui sont dans les equations d'Euler
*

PGAZ . 'ESPEULE' = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 
   'D2  ' 'D2O ' ;

*
**** Espece qui n'y est pas
*


PGAZ . 'ESPNEULE' = 'N2  ';

*

PGAZ .  'H2  ' = 'TABLE'  ;
PGAZ .  'H2O ' = 'TABLE'  ;
PGAZ .  'N2  ' = 'TABLE'  ;
PGAZ .  'O2  ' = 'TABLE'  ;
PGAZ .  'D2  ' = 'TABLE'  ;
PGAZ .  'D2O ' = 'TABLE'  ;

*
**** R (J/Kg/K)
*

mH2 = 2. '*' 1.00797E-3 ;
mo2 = 2. '*' 15.9994E-3 ;
mH2O = mh2 '+' (0.5 '*' mo2) ;
mN2 = 2 '*' 14.0067E-3 ;
mD2 = mH2 * 2 ;
mD2O = mD2 '+' (0.5 '*' mo2) ;
RGAS = 8.31441 ;
 
PGAZ .  'H2  ' . 'R' = RGAS '/' mh2 ;
PGAZ .  'H2O ' . 'R' = RGAS '/' mh2o ;
PGAZ .  'N2  ' . 'R' = RGAS '/' mn2 ;
PGAZ .  'O2  ' . 'R' = RGAS '/' mo2 ;
PGAZ .  'D2  ' . 'R' = RGAS '/' md2 ;
PGAZ .  'D2O ' . 'R' = RGAS '/' md2o ;



*
**** Regressions polynomials
*

PGAZ .  'H2  ' . 'A' = 'PROG'  9834.91866 0.54273926 0.000862203836
                               -2.37281455E-07 1.84701105E-11 ;
PGAZ .  'H2O ' . 'A' = 'PROG' 1155.95625 0.768331151 -5.73129958E-05
                              -1.82753232E-08 2.44485692E-12 ;
PGAZ .  'N2  ' . 'A' = 'PROG' 652.940766 0.288239099 -7.80442298E-05
                              8.78233606E-09 -3.05514485E-13 ;
PGAZ .  'O2  ' . 'A' = 'PROG' 575.012333  0.350522002 -0.000128294865
                              2.33636971E-08 -1.53304905E-12;
PGAZ .  'D2  ' . 'A' = 'PROG' 0.49174593E+04 0.27136963E+00  
                       0.43110192E-03 -0.11864073E-06 0.92350553E-11 ;
PGAZ .  'D2O ' . 'A' = 'PROG' 0.10396191E+04  0.69100516E+00 
                      -0.51544931E-04  -0.16436067E-07 0.21988029E-11 ;
                              
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
*

PGAZ .  'H2  ' . 'H0K' = -4.195D6 ;
PGAZ .  'H2O ' . 'H0K' = -1.395D7 ;
PGAZ .  'N2  ' . 'H0K' = -2.953D5 ;
PGAZ .  'O2  ' . 'H0K' = -2.634D5 ;
PGAZ .  'D2  ' . 'H0K' = -2.0975D6  ;
PGAZ .  'D2O ' . 'H0K' = -1.25461D7 ;


*
*** Fin PGAZ
*

A0H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 1 ;
A1H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 2 ;
A2H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 3 ;
A3H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 4 ;
A4H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 5 ;
                                                            
A0H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 1 ;
A1H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 2 ;
A2H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 3 ;
A3H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 4 ;
A4H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 5 ;
                                                            
A0N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 1 ;
A1N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 2 ;
A2N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 3 ;
A3N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 4 ;
A4N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 5 ;
                                                            
A0O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 1 ;
A1O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 2 ;
A2O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 3 ;
A3O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 4 ;
A4O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 5 ;

A0D2 = 'EXTRAIRE' (PGAZ . 'D2  ' . 'A') 1 ;
A1D2 = 'EXTRAIRE' (PGAZ . 'D2  ' . 'A') 2 ;
A2D2 = 'EXTRAIRE' (PGAZ . 'D2  ' . 'A') 3 ;
A3D2 = 'EXTRAIRE' (PGAZ . 'D2  ' . 'A') 4 ;
A4D2 = 'EXTRAIRE' (PGAZ . 'D2  ' . 'A') 5 ;
                                                            
A0D2O= 'EXTRAIRE' (PGAZ . 'D2O ' . 'A') 1 ;
A1D2O= 'EXTRAIRE' (PGAZ . 'D2O ' . 'A') 2 ;
A2D2O= 'EXTRAIRE' (PGAZ . 'D2O ' . 'A') 3 ;
A3D2O= 'EXTRAIRE' (PGAZ . 'D2O ' . 'A') 4 ;
A4D2O= 'EXTRAIRE' (PGAZ . 'D2O ' . 'A') 5 ;
                                                            
LCV1H2 = 'PROG' ;                                                            
LCV1H2O = 'PROG' ;                                                            
LCV1N2 = 'PROG' ;                                                            
LCV1O2 = 'PROG' ;                                                            
LCV1D2 = 'PROG' ;                                                            
LCV1D2O = 'PROG' ;                                                            

  'REPETER' BL1 ('DIME' LTEMP ) ;
     T = 'EXTRAIRE' LTEMP &BL1 ;
     T2 = T * T ;
     T3 = T2 * T ;
     T4 = T3 * T;
     LCV1H2 = LCV1H2 'ET' ('PROG'
        (A0H2 '+' (A1H2 * T) '+' (A2H2 * T2) '+' (A3H2 * T3) '+'
        (A4H2 * T4))) ;
     LCV1H2O = LCV1H2O 'ET' ('PROG'
        (A0H2O '+' (A1H2O * T) '+' (A2H2O * T2) '+' (A3H2O * T3) '+'
        (A4H2O * T4))) ;
     LCV1N2 = LCV1N2 'ET' ('PROG'
        (A0N2 '+' (A1N2 * T) '+' (A2N2 * T2) '+' (A3N2 * T3) '+'
        (A4N2 * T4))) ;
     LCV1O2 = LCV1O2 'ET' ('PROG'
        (A0O2 '+' (A1O2 * T) '+' (A2O2 * T2) '+' (A3O2 * T3) '+'
        (A4O2 * T4))) ;
     LCV1D2 = LCV1D2 'ET' ('PROG'
        (A0D2 '+' (A1D2 * T) '+' (A2D2 * T2) '+' (A3D2 * T3) '+'
        (A4D2 * T4))) ;
     LCV1D2O = LCV1D2O 'ET' ('PROG'
        (A0D2O '+' (A1D2O * T) '+' (A2D2O * T2) '+' (A3D2O * T3) '+'
        (A4D2O * T4))) ;
  'FIN' BL1 ;
     
  LCVH2 = LCVH2 * mh2 ;
  LCV1H2 = LCV1H2  * mh2 ;
  LCVH2O = LCVH2O  * mh2o ;
  LCV1H2O = LCV1H2O * mh2o ;
  LCVN2 = LCVN2 * mn2 ;
  LCV1N2 = LCV1N2 * mn2 ;
  LCVO2 = LCVO2 * mo2 ;
  LCV1O2 = LCV1O2 * mo2 ;
  LCV1D2 = LCV1D2  * md2 ;
  LCV1D2O = LCV1D2O * md2o ;

  EVCVH2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCVH2 ;
  EVCV1H2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1H2 ;
  EVCVH2O = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCVH2O ;
  EVCV1H2O = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1H2O ;
  EVCVN2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCVN2 ;
  EVCV1N2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1N2 ;
  EVCVO2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCVO2 ;
  EVCV1O2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1O2 ;
  EVCV1D2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1D2 ;
  EVCV1D2O = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/mol/K)' LCV1D2O ;

  TAB1 = 'TABLE'  ;                                                             
  TAB1 . 'TITRE' = 'TABLE'  ;                                                   
  TAB1 . 1 ='TIRR ';                                                         
  TAB1 . 'TITRE' . 1  =  'JANAF DATA';                                  
  TAB1 . 2 = 'MARQ CROI';                                                     
  TAB1 . 'TITRE' . 2  =  'POLYN. REGR.';                                  

  'SI' GRAPH ;
     'DESSIN'  (EVCVH2 'ET' EVCV1H2) 'LEGE'  TAB1 'TITRE'
      'H2, polynome de 4-eme degre' ;
     'DESSIN'  (EVCVH2O 'ET' EVCV1H2O) 'LEGE'  TAB1 'TITRE'
     'H2O, polynome de 4-eme degre' ;
     'DESSIN'  (EVCVN2 'ET' EVCV1N2) 'LEGE'  TAB1 'TITRE'
     'N2, polynome de 4-eme degre' ;
     'DESSIN'  (EVCVO2 'ET' EVCV1O2) 'LEGE'  TAB1 'TITRE'
     'O2, polynome de 4-eme degre' ;
     'DESSIN'  (EVCVH2 'ET' EVCV1D2) 'LEGE'  TAB1 'TITRE'
      'H2-D2, polynome de 4-eme degre' ;
     'DESSIN'  (EVCVH2O 'ET' EVCV1D2O) 'LEGE'  TAB1 'TITRE'
     'H2O-D2O, polynome de 4-eme degre' ;
  'FINSI' ;
   
*************************** 
***** DOMAINE SPATIAL  ****
***************************


A1 = 0.0D0 0.0D0;
A2 = 2.0D0 0.0D0;
A3 = 3.0D0 0.0D0;
A4 = 4.0D0 1.0D0;

L12 = A1 'DROIT' 1 A2;
L23 = A2 'DROIT' 2 A3;
L34 = A3 'DROIT' 3 A4;
L41 = A4 'DROIT' 2 A1;

LDOM1 = L12 'ET' L23 'ET' L34 'ET' L41 ;
DOM1  = 'SURFACE' LDOM1 'PLANE';

'SI' GRAPH ;
   'TRACER' DOM1 'TITRE' 'Domaine' ;
'FINSI' ;

$DOM1 = 'DOMA' DOM1 ;

MAIL =   $DOM1 . 'CENTRE' ;

*
**** Pression, densite, temperature et vitesse
*

RN   = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
TN   = 'BRUI' 'BLAN' 'UNIF' 5000  1000  MAIL ;
YH2  = 'BRUI' 'BLAN' 'UNIF' 0.3  0.1  MAIL ;
YO2  = 'BRUI' 'BLAN' 'UNIF' 0.2  0.1  MAIL ;
YH2O  = 'BRUI' 'BLAN' 'UNIF' 0.1  0.05  MAIL ;
YD2  = 'BRUI' 'BLAN' 'UNIF' 0.01  0.001  MAIL ;
YD2O  = 'BRUI' 'BLAN' 'UNIF' 0.01  0.005  MAIL ;

YN2 = 1.0 '-' (YH2 '+' YO2 '+' YH2O + YD2 + YD2O) ;

RYH2 = RN * YH2 ;
RYH2O = RN * YH2O ;
RYO2 = RN * YO2 ;
RYN2 = RN * YN2 ;
RYD2 = RN * YD2 ;
RYD2O = RN * YD2O ;

YH2  = 'NOMC' YH2  'H2  ' 'NATU' 'DISCRET' ;
YH2O = 'NOMC' YH2O 'H2O ' 'NATU' 'DISCRET' ;
YD2  = 'NOMC' YD2  'D2  ' 'NATU' 'DISCRET' ;
YD2O = 'NOMC' YD2O 'D2O ' 'NATU' 'DISCRET' ;
YO2  = 'NOMC' YO2  'O2  ' 'NATU' 'DISCRET' ;
YN2 = 'NOMC' YN2 'N2  ' 'NATU' 'DISCRET' ;
YN = YH2 'ET' YO2 'ET' YH2O 'ET' 
     YD2 'ET' YD2O ; 

RYH2 =  'NOMC' RYH2  'H2  ' 'NATU' 'DISCRET' ;
RYH2O = 'NOMC' RYH2O 'H2O ' 'NATU' 'DISCRET' ;
RYD2 =  'NOMC' RYD2  'D2  ' 'NATU' 'DISCRET' ;
RYD2O = 'NOMC' RYD2O 'D2O ' 'NATU' 'DISCRET' ;
RYO2 =  'NOMC' RYO2  'O2  ' 'NATU' 'DISCRET' ;
RYN2 =  'NOMC' RYN2  'N2  ' 'NATU' 'DISCRET' ;

VNX = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
VNY = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;

VN = ('NOMC' VNX 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' VNY 'UY' 'NATU' 'DISCRET' ) ;
     
GN = ('NOMC' (VNX * RN) 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' (VNY * RN) 'UY' 'NATU' 'DISCRET' ) ;
     
RYN = RYH2 'ET' RYH2O 'ET' RYO2 'ET' 
      RYD2 'ET' RYD2O;

*
* Calcul de l'energie thermique et du gamma
*
* Ether = \sum_{i=1,4} Y_i \int_{0}^{T} cv_i(x) dx
* gamma = (\sum_{i=1,4} Y_i cp_i) / (\sum_{i=1,4} Y_i cv_i)
*

T2 = TN * TN ;
T3 = T2 * TN ;
T4 = T3 * TN ;
T5 = T4 * TN ;

ETERH2 = 'NOMC' ((A0H2 * TN) '+' ((A1H2 '/' 2.0) * T2) '+'
         ((A2H2 '/' 3.0) * T3) '+' ((A3H2 '/' 4.0) * T4) '+'
         ((A4H2 '/' 5.0) * T5)) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TN) '+' ((A1H2O '/' 2.0) * T2) '+'
         ((A2H2O '/' 3.0) * T3) '+' ((A3H2O '/' 4.0) * T4) '+'
         ((A4H2O '/' 5.0) * T5)) 'H2O ' 'NATU' 'DISCRET' ;

ETERD2 = 'NOMC' ((A0D2 * TN) '+' ((A1D2 '/' 2.0) * T2) '+'
         ((A2D2 '/' 3.0) * T3) '+' ((A3D2 '/' 4.0) * T4) '+'
         ((A4D2 '/' 5.0) * T5)) 'D2  ' 'NATU' 'DISCRET' ;

ETERD2O = 'NOMC' ((A0D2O * TN) '+' ((A1D2O '/' 2.0) * T2) '+'
         ((A2D2O '/' 3.0) * T3) '+' ((A3D2O '/' 4.0) * T4) '+'
         ((A4D2O '/' 5.0) * T5)) 'D2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TN) '+' ((A1O2 '/' 2.0) * T2) '+'
         ((A2O2 '/' 3.0) * T3) '+' ((A3O2 '/' 4.0) * T4) '+'
         ((A4O2 '/' 5.0) * T5)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TN) '+' ((A1N2 '/' 2.0) * T2) '+'
         ((A2N2 '/' 3.0) * T3) '+' ((A3N2 '/' 4.0) * T4) '+'
         ((A4N2 '/' 5.0) * T5)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERD2 'ET' ETERD2O 'ET'ETERH2 'ET' 
           ETERH2O 'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ' 
                 'D2  ' 'D2O ';
RETHER =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

LISCOM2 = 'MOTS' 'UX  ' 'UY  ';
RECIN = 'PSCAL' (0.5 '*' VN) GN LISCOM2 LISCOM2 ;

RET = RECIN '+' RETHER ;

 CVH2 = 'NOMC' (A0H2 '+' (A1H2 * TN) '+'
         (A2H2 * T2) '+' (A3H2 * T3) '+'
         (A4H2 * T4)) 'H2  ' 'NATU' 'DISCRET' ;

 CVH2O = 'NOMC' (A0H2O '+' (A1H2O * TN) '+'
         (A2H2O * T2) '+' (A3H2O * T3) '+'
         (A4H2O * T4)) 'H2O ' 'NATU' 'DISCRET' ;

 CVD2 = 'NOMC' (A0D2 '+' (A1D2 * TN) '+'
         (A2D2 * T2) '+' (A3D2 * T3) '+'
         (A4D2 * T4)) 'D2  ' 'NATU' 'DISCRET' ;

 CVD2O = 'NOMC' (A0D2O '+' (A1D2O * TN) '+'
         (A2D2O * T2) '+' (A3D2O * T3) '+'
         (A4D2O * T4)) 'D2O ' 'NATU' 'DISCRET' ;

 CVO2 = 'NOMC' (A0O2 '+' (A1O2 * TN) '+'
         (A2O2 * T2) '+' (A3O2 * T3) '+'
         (A4O2 * T4)) 'O2  ' 'NATU' 'DISCRET' ;

 CVN2 = 'NOMC' (A0N2 '+' (A1N2 * TN) '+'
         (A2N2 * T2) '+' (A3N2 * T3) '+'
         (A4N2 * T4)) 'N2  ' 'NATU' 'DISCRET' ;


 CPH2  = CVH2  '+' (PGAZ . 'H2  ' . 'R') ;
 CPH2O = CVH2O '+' (PGAZ . 'H2O ' . 'R') ;
 CPD2  = CVD2  '+' (PGAZ . 'D2  ' . 'R') ;
 CPD2O = CVD2O '+' (PGAZ . 'D2O ' . 'R') ;
 CPN2  = CVN2  '+' (PGAZ . 'N2  ' . 'R') ;
 CPO2  = CVO2  '+' (PGAZ . 'O2  ' . 'R') ;

 CPSIN = CPH2 'ET' CPH2O 'ET' CPN2 'ET' CPO2 'ET' 
         CPD2 'ET' CPD2O ;

 CPTOT = 'PSCAL' CPSIN (YN 'ET' YN2) LISCOM1 LISCOM1 ;

 CVSIN = CVD2 'ET' CVD2O 'ET'CVH2 'ET' CVH2O 'ET' CVN2 'ET' CVO2 ;
 CVTOT = 'PSCAL' CVSIN (YN 'ET'YN2) LISCOM1 LISCOM1 ;

 GAMN = CPTOT '/' CVTOT ;

 RTOT = CPTOT '-' CVTOT ;

 PN = (RTOT '*' TN) '*' RN ;
 
* YN1 = RYN / RN ;
* CHUN = MANU CHPO MAIL 1 'SCAL' 1.0d0 ;
* YTOT = PSCA CHUN YN1  (MOTS 
*   'SCAL' 'SCAL' 'SCAL' 'SCAL' 'SCAL') 
*   (EXTR YN1 COMP) ;
* LIST YTOT ;
*
**** PRIM
*

VITESSE PRES TEMPNEW YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN ;

*
**** TEST
*

ERRV = ('MAXIMUM' (VN '-' VITESSE) 'ABS')
        '/' ('MAXIMUM' VN) ;

ERRP  = 'MAXIMUM' ((PRES '-' PN)  '/'  PN) 'ABS';

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TN) '/' TN) 'ABS';  
         
ERRG = 'MAXIMUM' ((GAMN '-' GAMNEW) '/' GAMN) 'ABS'; 
         
ERRY = ('MAXIMUM' (YN '-' YNNEW) 'ABS')
        '/' ('MAXIMUM' YN) ;

        
'SI' (('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY )) '>'
          ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum');
     'LISTE' ('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY
      ));
     'ERREUR'  5;
'FINSI' ;

**** Avec une temperature de premier tentative

VITESSE PRES TEMPNEW2 YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN TEMPNEW ;

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TEMPNEW2) '/' TEMPNEW) 'ABS';


'SI' (ERRT > ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRT) ;
     'ERREUR'  5;
'FINSI' ;

**** On teste aussi la difference entre l'energie initiale et celle la.

T2 = TEMPNEW * TEMPNEW ;
T3 = T2 * TEMPNEW ;
T4 = T3 * TEMPNEW ;
T5 = T4 * TEMPNEW ;

ETERH2 = 'NOMC' ((A0H2 * TEMPNEW) '+' ((A1H2 '/' 2.0) * T2) '+'
         ((A2H2 '/' 3.0) * T3) '+' ((A3H2 '/' 4.0) * T4) '+'
         ((A4H2 '/' 5.0) * T5)) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TEMPNEW) '+' ((A1H2O '/' 2.0) * T2) '+'
         ((A2H2O '/' 3.0) * T3) '+' ((A3H2O '/' 4.0) * T4) '+'
         ((A4H2O '/' 5.0) * T5)) 'H2O ' 'NATU' 'DISCRET' ;

ETERD2 = 'NOMC' ((A0D2 * TEMPNEW) '+' ((A1D2 '/' 2.0) * T2) '+'
         ((A2D2 '/' 3.0) * T3) '+' ((A3D2 '/' 4.0) * T4) '+'
         ((A4D2 '/' 5.0) * T5)) 'D2  ' 'NATU' 'DISCRET' ;

ETERD2O = 'NOMC' ((A0D2O * TEMPNEW) '+' ((A1D2O '/' 2.0) * T2) '+'
         ((A2D2O '/' 3.0) * T3) '+' ((A3D2O '/' 4.0) * T4) '+'
         ((A4D2O '/' 5.0) * T5)) 'D2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TEMPNEW) '+' ((A1O2 '/' 2.0) * T2) '+'
         ((A2O2 '/' 3.0) * T3) '+' ((A3O2 '/' 4.0) * T4) '+'
         ((A4O2 '/' 5.0) * T5)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TEMPNEW) '+' ((A1N2 '/' 2.0) * T2) '+'
         ((A2N2 '/' 3.0) * T3) '+' ((A3N2 '/' 4.0) * T4) '+'
         ((A4N2 '/' 5.0) * T5)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERD2 'ET' ETERD2O 'ET' ETERH2 'ET' ETERH2O 
      'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ' 'D2  ' 'D2O ' ;
RETHER_N =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

ERRET = 'MAXIMUM' ((RETHER '-' RETHER_N) '/' RETHER) 'ABS' ;

'SI' (ERRET > ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRET) ;
     'ERREUR'  5;
'FINSI' ;



* Splitting de scalaires passifs


PGAZ . 'SCALPASS' = 'MOTS' 'REPS' 'RTAU'  ;

TABS = ('NOMC' ('BRUI' 'BLAN' 'UNIF' 0.5  0.1  MAIL) 'RTAU') 'ET'
       ('NOMC' ('BRUI' 'BLAN' 'UNIF' 0.5  0.1  MAIL) 'REPS') ;
       
RTABS = RN '*' TABS ('MOTS' 'SCAL''SCAL') ('MOTS' 'RTAU ' 'REPS')
       ('MOTS' 'RTAU' 'REPS') ;

RTABS1 = 'COPIER' RTABS ;

VITESSE PRES TEMPNEW2 YNNEW TABSNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN RTABS TEMPNEW ;


ERRV = ('MAXIMUM' (VN '-' VITESSE) 'ABS')
        '/' ('MAXIMUM' VN) ;

ERRP  = 'MAXIMUM' ((PRES '-' PN)  '/'  PN) 'ABS';

ERRT  = 'MAXIMUM' ((TEMPNEW2 '-' TN) '/' TN) 'ABS';  
         
ERRG = 'MAXIMUM' ((GAMN '-' GAMNEW) '/' GAMN) 'ABS'; 
         
ERRY = ('MAXIMUM' (YN '-' YNNEW) 'ABS')
        '/' ('MAXIMUM' YN) ;


ERRTAB  = ('MAXIMUM' (TABS '-' TABSNEW)  'ABS') '/'
          ('MAXIMUM' TABS 'ABS') ;

ERRROT = ('MAXIMUM' (RTABS '-' RTABS1)  'ABS') '/'
          ('MAXIMUM' RTABS 'ABS') ;

        
        
'SI' (('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY ERRTAB ERRROT)) '>'
          ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum');
     'LISTE' ('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY ERRTAB ERRROT
      ));
     'ERREUR'  5;
'FINSI' ;


***************************************************************************

'MESSAGE' ;
'MESSAGE' ('cv_i = polynoms constants');
'MESSAGE' ;


*) Ordre de polynome = 0

ERRMAX = 1.0D-12 ;        
          
***********************
**** LA TABLE PGAZ ****
***********************

PGAZ = 'TABLE' ;

*
**** Ordre des polynoms
*

PGAZ . 'NORD' = 0 ;

*
**** Especes qui sont dans les equations d'Euler
*

PGAZ . 'ESPEULE' = 'MOTS' 'H2  ' 'O2  ' 'H2O ' ;

*
**** Espece qui n'y est pas
*


PGAZ . 'ESPNEULE' = 'N2  ';

*

PGAZ .  'H2  ' = 'TABLE'  ;
PGAZ .  'H2O ' = 'TABLE'  ;
PGAZ .  'N2  ' = 'TABLE'  ;
PGAZ .  'O2  ' = 'TABLE'  ;

*
**** R (J/Kg/K)
*

PGAZ .  'H2  ' . 'R' = 4130.0 ;
PGAZ .  'H2O ' . 'R' = 461.4 ;
PGAZ .  'N2  ' . 'R' = 296.8 ;
PGAZ .  'O2  ' . 'R' = 259.8 ;


*
**** Regressions polynomials
*


*
* Cas particulier: gaz "calorically perfect"
*

PGAZ .  'H2  ' . 'A' = 'PROG'  9834.91866 ;
PGAZ .  'H2O ' . 'A' = 'PROG' 1155.95625 ; 
PGAZ .  'N2  ' . 'A' = 'PROG' 652.940766 ; 
PGAZ .  'O2  ' . 'A' = 'PROG' 575.012333  ; 
                              
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
*

PGAZ .  'H2  ' . 'H0K' = -4.195D6 ;
PGAZ .  'H2O ' . 'H0K' = -1.395D7 ;
PGAZ .  'N2  ' . 'H0K' = -2.953D5 ;
PGAZ .  'O2  ' . 'H0K' = -2.634D5 ;

*
*** Fin PGAZ
*

A0H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 1 ;
                                                            
A0H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 1 ;
                                                            
A0N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 1 ;
                                                            
A0O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 1 ;
                                                            

*
**** Pression, densite, temperature et vitesse
*

RN   = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
TN   = 'BRUI' 'BLAN' 'UNIF' 5000  1000  MAIL ;
YH2  = 'BRUI' 'BLAN' 'UNIF' 0.3  0.1  MAIL ;
YO2  = 'BRUI' 'BLAN' 'UNIF' 0.2  0.1  MAIL ;
YH2O  = 'BRUI' 'BLAN' 'UNIF' 0.1  0.05  MAIL ;

YN2 = 1.0 '-' (YH2 '+' YO2 '+' YH2O) ;

RYH2 = RN * YH2 ;
RYH2O = RN * YH2O ;
RYO2 = RN * YO2 ;
RYN2 = RN * YN2 ;

YH2  = 'NOMC' YH2  'H2  ' 'NATU' 'DISCRET' ;
YH2O = 'NOMC' YH2O 'H2O ' 'NATU' 'DISCRET' ;
YO2  = 'NOMC' YO2  'O2  ' 'NATU' 'DISCRET' ;
YN2 = 'NOMC' YN2 'N2  ' 'NATU' 'DISCRET' ;
YN = YH2 'ET' YO2 'ET' YH2O ; 

RYH2 =  'NOMC' RYH2  'H2  ' 'NATU' 'DISCRET' ;
RYH2O = 'NOMC' RYH2O 'H2O ' 'NATU' 'DISCRET' ;
RYO2 =  'NOMC' RYO2  'O2  ' 'NATU' 'DISCRET' ;
RYN2 =  'NOMC' RYN2  'N2  ' 'NATU' 'DISCRET' ;

VNX = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
VNY = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;

VN = ('NOMC' VNX 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' VNY 'UY' 'NATU' 'DISCRET' ) ;
     
GN = ('NOMC' (VNX * RN) 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' (VNY * RN) 'UY' 'NATU' 'DISCRET' ) ;
     
RYN = RYH2 'ET' RYH2O 'ET' RYO2 ;

*
* Calcul de l'energie thermique et du gamma
*

ETERH2 = 'NOMC' ((A0H2 * TN) ) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TN)) 'H2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TN)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TN)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERH2 'ET' ETERH2O 'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ';
RETHER =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

LISCOM2 = 'MOTS' 'UX  ' 'UY  ';
RECIN = 'PSCAL' (0.5 '*' VN) GN LISCOM2 LISCOM2 ;

RET = RECIN '+' RETHER ;

 CHUN  = 'MANUEL' 'CHPO' MAIL 1 'SCAL' 1.0 ;
 
 CVH2 = 'NOMC' (A0H2 '*' CHUN) 'H2  ' 'NATU' 'DISCRET' ;

 CVH2O = 'NOMC' (A0H2O '*' CHUN) 'H2O ' 'NATU' 'DISCRET' ;

 CVO2 = 'NOMC' (A0O2 '*' CHUN) 'O2  ' 'NATU' 'DISCRET' ;

 CVN2 = 'NOMC' (A0N2 '*' CHUN) 'N2  ' 'NATU' 'DISCRET' ;


 CPH2  = CVH2  '+' (PGAZ . 'H2  ' . 'R') ;
 CPH2O = CVH2O '+' (PGAZ . 'H2O ' . 'R') ;
 CPN2  = CVN2  '+' (PGAZ . 'N2  ' . 'R') ;
 CPO2  = CVO2  '+' (PGAZ . 'O2  ' . 'R') ;

 CPSIN = CPH2 'ET' CPH2O 'ET' CPN2 'ET' CPO2 ;
 CPTOT = 'PSCAL' CPSIN (YN 'ET' YN2) LISCOM1 LISCOM1 ;

 CVSIN = CVH2 'ET' CVH2O 'ET' CVN2 'ET' CVO2 ;
 CVTOT = 'PSCAL' CVSIN (YN 'ET'YN2) LISCOM1 LISCOM1 ;

 GAMN = CPTOT '/' CVTOT ;

 RTOT = CPTOT '-' CVTOT ;

 PN = (RTOT '*' TN) '*' RN ;
 
*
**** PRIM
*

VITESSE PRES TEMPNEW YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN ;

       
*
**** TEST
*


ERRV = ('MAXIMUM' (VN '-' VITESSE) 'ABS')
        '/' ('MAXIMUM' VN) ;

ERRP  = 'MAXIMUM' ((PRES '-' PN)  '/'  PN) 'ABS';

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TN) '/' TN) 'ABS';  
         
ERRG = 'MAXIMUM' ((GAMN '-' GAMNEW) '/' GAMN) 'ABS'; 
         
ERRY = ('MAXIMUM' (YN '-' YNNEW) 'ABS')
        '/' ('MAXIMUM' YN) ;

ERRMAX = 1.0D-8 ;        
        
'SI' (('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY )) '>'
          ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum');
     'LISTE' ('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY
      ));
     'ERREUR'  5;
'FINSI' ;

**** Avec une temperature de premier tentative

VITESSE PRES TEMPNEW2 YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN TEMPNEW ;

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TEMPNEW2) '/' TEMPNEW) 'ABS';


'SI' (ERRT > ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRT) ;
     'ERREUR'  5;
'FINSI' ;

**** On teste aussi la difference entre l'energie initiale et celle la.


ETERH2 = 'NOMC' ((A0H2 * TEMPNEW)) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TEMPNEW)) 'H2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TEMPNEW)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TEMPNEW)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERH2 'ET' ETERH2O 'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ';
RETHER_N =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

ERRET = 'MAXIMUM' ((RETHER '-' RETHER_N) '/' RETHER) 'ABS' ;

'SI' (ERRET > ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRET) ;
     'ERREUR'  5;
'FINSI' ;

*) Ordre de polynome = 6

'MESSAGE' ;
'MESSAGE' ('cv_i = polynoms de 6-eme degre');          
'MESSAGE' ;

ERRMAX = 1.0D-6 ;        

***********************
**** LA TABLE PGAZ ****
***********************

PGAZ = 'TABLE' ;

*
**** Degree des polynoms
*

PGAZ . 'NORD' = 6 ;

*
**** Especes qui sont dans les equations d'Euler
*

PGAZ . 'ESPEULE' = 'MOTS' 'H2  ' 'O2  ' 'H2O ' ;

*
**** Espece qui n'y est pas
*


PGAZ . 'ESPNEULE' = 'N2  ';

*

PGAZ .  'H2  ' = 'TABLE'  ;
PGAZ .  'H2O ' = 'TABLE'  ;
PGAZ .  'N2  ' = 'TABLE'  ;
PGAZ .  'O2  ' = 'TABLE'  ;

*
**** R (J/Kg/K)
*

PGAZ .  'H2  ' . 'R' = 4130.0 ;
PGAZ .  'H2O ' . 'R' = 461.4 ;
PGAZ .  'N2  ' . 'R' = 296.8 ;
PGAZ .  'O2  ' . 'R' = 259.8 ;


*
**** Regressions polynomials
*

PGAZ .  'H2  ' . 'A' = 'PROG' 10248.0372  -1.03957227  0.00255509482
   -9.58464375e-07 1.48148549e-10  -7.8001118e-15 -7.79545492e-20;
   
PGAZ .  'H2O ' . 'A' = 'PROG' 1360.58141 -0.125858285 0.0011033462
   -6.6747447e-07  1.78610037e-10  -2.28470046e-14 1.13454102e-18;
   
PGAZ .  'N2  ' . 'A' = 'PROG' 728.668971 -0.0529645705 0.000381479798
   -2.58652439e-07 7.53087309e-11 -1.02222342e-14 5.29069427e-19;
   
PGAZ .  'O2  ' . 'A' = 'PROG'  556.260207 0.41690925 -0.000189280713
   4.17265093e-08  -1.90948012e-12 -5.80397913e-16 6.12867501e-20;
                              
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
*

PGAZ .  'H2  ' . 'H0K' = -4.195D6 ;
PGAZ .  'H2O ' . 'H0K' = -1.395D7 ;
PGAZ .  'N2  ' . 'H0K' = -2.953D5 ;
PGAZ .  'O2  ' . 'H0K' = -2.634D5 ;

*
*** Fin PGAZ
*

A0H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 1 ;
A1H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 2 ;
A2H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 3 ;
A3H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 4 ;
A4H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 5 ;
A5H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 6 ;
A6H2 = 'EXTRAIRE' (PGAZ . 'H2  ' . 'A') 7 ;
                                                            
A0H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 1 ;
A1H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 2 ;
A2H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 3 ;
A3H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 4 ;
A4H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 5 ;
A5H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 6 ;
A6H2O= 'EXTRAIRE' (PGAZ . 'H2O ' . 'A') 7 ;
                                                            
A0N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 1 ;
A1N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 2 ;
A2N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 3 ;
A3N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 4 ;
A4N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 5 ;
A5N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 6 ;
A6N2 = 'EXTRAIRE' (PGAZ . 'N2  ' . 'A') 7 ;
                                                            
A0O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 1 ;
A1O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 2 ;
A2O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 3 ;
A3O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 4 ;
A4O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 5 ;
A5O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 6 ;
A6O2 = 'EXTRAIRE' (PGAZ . 'O2  ' . 'A') 7 ;
                                                            
LCV1H2 = 'PROG' ;                                                            
LCV1H2O = 'PROG' ;                                                            
LCV1N2 = 'PROG' ;                                                            
LCV1O2 = 'PROG' ;                                                            

  'REPETER' BL1 ('DIME' LTEMP ) ;
     T = 'EXTRAIRE' LTEMP &BL1 ;
     T2 = T * T ;
     T3 = T2 * T ;
     T4 = T3 * T;
     T5 = T4 * T;
     T6 = T5 * T;
     LCV1H2 = LCV1H2 'ET' ('PROG'
        (A0H2 '+' (A1H2 * T) '+' (A2H2 * T2) '+' (A3H2 * T3) '+'
        (A4H2 * T4) '+' (A5H2 * T5) '+' (A6H2 * T6))) ;
     LCV1H2O = LCV1H2O 'ET' ('PROG'
        (A0H2O '+' (A1H2O * T) '+' (A2H2O * T2) '+' (A3H2O * T3) '+'
        (A4H2O * T4) '+' (A5H2O * T5) '+' (A6H2O * T6))) ;
     LCV1N2 = LCV1N2 'ET' ('PROG'
        (A0N2 '+' (A1N2 * T) '+' (A2N2 * T2) '+' (A3N2 * T3) '+'
        (A4N2 * T4) '+' (A5N2 * T5) '+' (A6N2 * T6))) ;
     LCV1O2 = LCV1O2 'ET' ('PROG'
        (A0O2 '+' (A1O2 * T) '+' (A2O2 * T2) '+' (A3O2 * T3) '+'
        (A4O2 * T4)'+' (A5O2 * T5) '+' (A6O2 * T6))) ;
  'FIN' BL1 ;
     
  EVCVH2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCVH2 ;
  EVCV1H2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCV1H2 ;
  EVCVH2O = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCVH2O ;
  EVCV1H2O = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCV1H2O ;
  EVCVN2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCVN2 ;
  EVCV1N2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCV1N2 ;
  EVCVO2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCVO2 ;
  EVCV1O2 = 'EVOL' 'MANU' 'T(K)' LTEMP 'CV (J/Kg/K)' LCV1O2 ;

  TAB1 = 'TABLE'  ;                                                             
  TAB1 . 'TITRE' = 'TABLE'  ;                                                   
  TAB1 . 1 ='TIRR ';                                                         
  TAB1 . 'TITRE' . 1  =  'JANAF DATA';                                  
  TAB1 . 2 = 'MARQ CROI';                                                     
  TAB1 . 'TITRE' . 2  =  'POLYN. REGR.';                                  

  'SI' GRAPH ;
     'DESSIN'  (EVCVH2 'ET' EVCV1H2) 'LEGE'  TAB1 'TITRE'
     'H2, polynome du 6-eme degre' ;
     'DESSIN'  (EVCVH2O 'ET' EVCV1H2O) 'LEGE'  TAB1 'TITRE'
     'H2O, polynome du 6-eme degre' ;
     'DESSIN'  (EVCVN2 'ET' EVCV1N2) 'LEGE'  TAB1 'TITRE'
     'N2, polynome du 6-eme degre' ;
     'DESSIN'  (EVCVO2 'ET' EVCV1O2) 'LEGE'  TAB1 'TITRE'
     'O2, polynome du 6-eme degre' ;
  'FINSI' ;
  
*
**** Pression, densite, temperature et vitesse
*

RN   = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
TN   = 'BRUI' 'BLAN' 'UNIF' 5000  1000  MAIL ;
YH2  = 'BRUI' 'BLAN' 'UNIF' 0.3  0.1  MAIL ;
YO2  = 'BRUI' 'BLAN' 'UNIF' 0.2  0.1  MAIL ;
YH2O  = 'BRUI' 'BLAN' 'UNIF' 0.1  0.05  MAIL ;

YN2 = 1.0 '-' (YH2 '+' YO2 '+' YH2O) ;

RYH2 = RN * YH2 ;
RYH2O = RN * YH2O ;
RYO2 = RN * YO2 ;
RYN2 = RN * YN2 ;

YH2  = 'NOMC' YH2  'H2  ' 'NATU' 'DISCRET' ;
YH2O = 'NOMC' YH2O 'H2O ' 'NATU' 'DISCRET' ;
YO2  = 'NOMC' YO2  'O2  ' 'NATU' 'DISCRET' ;
YN2 = 'NOMC' YN2 'N2  ' 'NATU' 'DISCRET' ;
YN = YH2 'ET' YO2 'ET' YH2O ; 

RYH2 =  'NOMC' RYH2  'H2  ' 'NATU' 'DISCRET' ;
RYH2O = 'NOMC' RYH2O 'H2O ' 'NATU' 'DISCRET' ;
RYO2 =  'NOMC' RYO2  'O2  ' 'NATU' 'DISCRET' ;
RYN2 =  'NOMC' RYN2  'N2  ' 'NATU' 'DISCRET' ;

VNX = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;
VNY = 'BRUI' 'BLAN' 'UNIF' 1.0  0.1  MAIL ;

VN = ('NOMC' VNX 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' VNY 'UY' 'NATU' 'DISCRET' ) ;
     
GN = ('NOMC' (VNX * RN) 'UX' 'NATU' 'DISCRET' ) 'ET'
     ('NOMC' (VNY * RN) 'UY' 'NATU' 'DISCRET' ) ;
     
RYN = RYH2 'ET' RYH2O 'ET' RYO2 ;

*
* Calcul de l'energie thermique et du gamma
*
* Ether = \sum_{i=1,4} Y_i \int_{0}^{T} cv_i(x) dx
* gamma = (\sum_{i=1,4} Y_i cp_i) / (\sum_{i=1,4} Y_i cv_i)
*

T2 = TN * TN ;
T3 = T2 * TN ;
T4 = T3 * TN ;
T5 = T4 * TN ;
T6 = T5 * TN ;
T7 = T6 * TN ;

ETERH2 = 'NOMC' ((A0H2 * TN) '+' ((A1H2 '/' 2.0) * T2) '+'
         ((A2H2 '/' 3.0) * T3) '+' ((A3H2 '/' 4.0) * T4) '+'
         ((A4H2 '/' 5.0) * T5) '+' ((A5H2 '/' 6.0) * T6) '+'
          ((A6H2 '/' 7.0) * T7)) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TN) '+' ((A1H2O '/' 2.0) * T2) '+'
         ((A2H2O '/' 3.0) * T3) '+' ((A3H2O '/' 4.0) * T4) '+'
         ((A4H2O '/' 5.0) * T5)'+' ((A5H2O '/' 6.0) * T6) '+'
          ((A6H2O '/' 7.0) * T7)) 'H2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TN) '+' ((A1O2 '/' 2.0) * T2) '+'
         ((A2O2 '/' 3.0) * T3) '+' ((A3O2 '/' 4.0) * T4) '+'
         ((A4O2 '/' 5.0) * T5) '+' ((A5O2 '/' 6.0) * T6) '+'
          ((A6O2 '/' 7.0) * T7)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TN) '+' ((A1N2 '/' 2.0) * T2) '+'
         ((A2N2 '/' 3.0) * T3) '+' ((A3N2 '/' 4.0) * T4) '+'
         ((A4N2 '/' 5.0) * T5)'+' ((A5N2 '/' 6.0) * T6) '+'
          ((A6N2 '/' 7.0) * T7)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERH2 'ET' ETERH2O 'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ';
RETHER =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

LISCOM2 = 'MOTS' 'UX  ' 'UY  ';
RECIN = 'PSCAL' (0.5 '*' VN) GN LISCOM2 LISCOM2 ;

RET = RECIN '+' RETHER ;

 CVH2 = 'NOMC' (A0H2 '+' (A1H2 * TN) '+'
         (A2H2 * T2) '+' (A3H2 * T3) '+'
         (A4H2 * T4) '+' (A5H2 * T5) '+'
         (A6H2 * T6)) 'H2  ' 'NATU' 'DISCRET' ;

 CVH2O = 'NOMC' (A0H2O '+' (A1H2O * TN) '+'
         (A2H2O * T2) '+' (A3H2O * T3) '+'
         (A4H2O * T4) '+' (A5H2O * T5) '+'
         (A6H2O * T6)) 'H2O ' 'NATU' 'DISCRET' ;

 CVO2 = 'NOMC' (A0O2 '+' (A1O2 * TN) '+'
         (A2O2 * T2) '+' (A3O2 * T3) '+'
         (A4O2 * T4) '+' (A5O2 * T5) '+'
         (A6O2 * T6)) 'O2  ' 'NATU' 'DISCRET' ;

 CVN2 = 'NOMC' (A0N2 '+' (A1N2 * TN) '+'
         (A2N2 * T2) '+' (A3N2 * T3) '+'
         (A4N2 * T4) '+' (A5N2 * T5) '+'
         (A6N2 * T6)) 'N2  ' 'NATU' 'DISCRET' ;


 CPH2  = CVH2  '+' (PGAZ . 'H2  ' . 'R') ;
 CPH2O = CVH2O '+' (PGAZ . 'H2O ' . 'R') ;
 CPN2  = CVN2  '+' (PGAZ . 'N2  ' . 'R') ;
 CPO2  = CVO2  '+' (PGAZ . 'O2  ' . 'R') ;

 CPSIN = CPH2 'ET' CPH2O 'ET' CPN2 'ET' CPO2 ;
 CPTOT = 'PSCAL' CPSIN (YN 'ET' YN2) LISCOM1 LISCOM1 ;

 CVSIN = CVH2 'ET' CVH2O 'ET' CVN2 'ET' CVO2 ;
 CVTOT = 'PSCAL' CVSIN (YN 'ET'YN2) LISCOM1 LISCOM1 ;

 GAMN = CPTOT '/' CVTOT ;

 RTOT = CPTOT '-' CVTOT ;

 PN = (RTOT '*' TN) '*' RN ;
 
*
**** PRIM
*

VITESSE PRES TEMPNEW YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN ;

       
*
**** TEST
*


ERRV = ('MAXIMUM' (VN '-' VITESSE) 'ABS')
        '/' ('MAXIMUM' VN) ;

ERRP  = 'MAXIMUM' ((PRES '-' PN)  '/'  PN) 'ABS';

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TN) '/' TN) 'ABS';  
         
ERRG = 'MAXIMUM' ((GAMN '-' GAMNEW) '/' GAMN) 'ABS'; 
         
ERRY = ('MAXIMUM' (YN '-' YNNEW) 'ABS')
        '/' ('MAXIMUM' YN) ;

        
'SI' (('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY )) '>'
          ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum');
     'LISTE' ('MAXIMUM' ('PROG' ERRV ERRP ERRT ERRG ERRY
      ));
     'ERREUR'  5;
'FINSI' ;

**** Avec une temperature de premier tentative

VITESSE PRES TEMPNEW2 YNNEW GAMNEW
       = 'PRIM' 'PERFTEMP' PGAZ RN GN RET RYN TEMPNEW ;

ERRT  = 'MAXIMUM' ((TEMPNEW '-' TEMPNEW2) '/' TEMPNEW) 'ABS';


'SI' (ERRT > ERRMAX);
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRT) ;
     'ERREUR'  5;
'FINSI' ;

**** On teste aussi la difference entre l'energie initiale et celle la.


T2 = TEMPNEW * TEMPNEW ;
T3 = T2 * TEMPNEW ;
T4 = T3 * TEMPNEW ;
T5 = T4 * TEMPNEW ;
T6 = T5 * TEMPNEW ;
T7 = T6 * TEMPNEW ;

ETERH2 = 'NOMC' ((A0H2 * TEMPNEW) '+' ((A1H2 '/' 2.0) * T2) '+'
         ((A2H2 '/' 3.0) * T3) '+' ((A3H2 '/' 4.0) * T4) '+'
         ((A4H2 '/' 5.0) * T5) '+' ((A5H2 '/' 6.0) * T6) '+'
         ((A6H2 '/' 7.0) * T7)) 'H2  ' 'NATU' 'DISCRET' ;

ETERH2O = 'NOMC' ((A0H2O * TEMPNEW) '+' ((A1H2O '/' 2.0) * T2) '+'
         ((A2H2O '/' 3.0) * T3) '+' ((A3H2O '/' 4.0) * T4) '+'
         ((A4H2O '/' 5.0) * T5)'+' ((A5H2O '/' 6.0) * T6) '+'
          ((A6H2O '/' 7.0) * T7)) 'H2O ' 'NATU' 'DISCRET' ;

ETERO2 = 'NOMC' ((A0O2 * TEMPNEW) '+' ((A1O2 '/' 2.0) * T2) '+'
         ((A2O2 '/' 3.0) * T3) '+' ((A3O2 '/' 4.0) * T4) '+'
         ((A4O2 '/' 5.0) * T5) '+' ((A5O2 '/' 6.0) * T6) '+'
          ((A6O2 '/' 7.0) * T7)) 'O2  ' 'NATU' 'DISCRET' ;

ETERN2 = 'NOMC' ((A0N2 * TEMPNEW) '+' ((A1N2 '/' 2.0) * T2) '+'
         ((A2N2 '/' 3.0) * T3) '+' ((A3N2 '/' 4.0) * T4) '+'
         ((A4N2 '/' 5.0) * T5)'+' ((A5N2 '/' 6.0) * T6) '+'
          ((A6N2 '/' 7.0) * T7)) 'N2  ' 'NATU' 'DISCRET' ;

ETHERSIN = ETERH2 'ET' ETERH2O 'ET' ETERO2 'ET' ETERN2 ;


LISCOM1 = 'MOTS' 'H2  ' 'O2  ' 'H2O ' 'N2  ';
RETHER_N =  'PSCAL' ETHERSIN  (RYN 'ET' RYN2) LISCOM1 LISCOM1 ;

ERRET = 'MAXIMUM' ((RETHER '-' RETHER_N) '/' RETHER) 'ABS' ;


'SI' (ERRET > ERRMAX) ;
     'MESSAGE' ('CHAINE' 'Erreur maximum' ERRET) ;
     'ERREUR'  5 ;
'FINSI' ;


'FIN' ;


 



 

© Cast3M 2003 - All rights reserved.
Disclaimer