Download tube_scalpass_multi.dgibi

Back to the list

* fichier :  tube_scalpass_multi.dgibi
******************************************************************
* Calcul du tube a choc; CAS MULTIESPECE                         *
* GAZ multi-especes "calorically perfect",                       * 
* avec le modele "thermally perfect"                             *
*                                                                *
* FORMULATION VF COMPRESSIBLE EXPLICITE                          *
* SOLVEURS: Van Leer - Hanel, Colella-Glaz                       *
*                                                                *
* Splitting de scalaires passifs                                 *
*                                                                *
* A. BECCANTINI TTMF    FEVRIER 2000                             *
******************************************************************

'MESSAGE' 'A mettre à jour' ;
'FIN' ;

'OPTION'  'DIME' 2 ;
'OPTION'  'ELEM' 'QUA4' ;
'OPTION'  'ISOV' 'SULI' ;
'OPTION'  'ECHO' 0 ;
'OPTION' 'TRAC' 'X';

GRAPH   = FAUX ;
* GRAPH   = VRAI ;
  
*
*** Methodes possibles :
*
*   'VLH'
*   'CG' 

METO =  'CG' ;

  
*******************************************************
*******************************************************
** PROCEDURE EXEXSP POUR FORMULATION VF COMPRESSIBLE **
** CAS MULTIESPECES "THERMALLY PERFECT"              **
** TRANSPORT DE SCALAIRES PASSIFS                    **
*******************************************************
*******************************************************

'DEBPROC'  EXEXSP ;
'ARGUMENT' RV*TABLE ;

*******************************************
**** Recherche de RV . *KONV . IDEUL   ****
*******************************************

*
**** Nom de la table RV . *'KONV' -> NOMT
*

  NBOP = 'DIME'  (RV . 'LISTOPER' ) ;

  'REPETER'  BL1 NBOP;
      MCEL = 'EXTRAIRE'  &BL1 RV . 'LISTOPER';
      'SI' ( 'EGA' MCEL 'KONV    ');
       NOMT = 'MOT' ('TEXTE' ('CHAINE'  &BL1 MCEL));
       'QUITTER' BL1;
     'FINSI' ;
  'FIN' BL1;

  IEUL = RV . NOMT . 'KOPT' . 'IDEUL';
  'SI' ('NON' (IEUL 'EGA' 3));
      'MESSAGE' 'EULERMST ???';
      'ERREUR' 21;
  'FINSI' ;

* Mono-espece ou multi-especes  

  'SI' ('EXISTE' (RV . INCO . IPGAZ) 'ESPEULE') ;
      LOGMUL = VRAI ;
  'SINON' ;
      LOGMUL = FAUX ;
  'FINSI' ;
   
*
**** CL
*
  
      
  LOGLIM = RV . 'INCO' . 'CLIM' ;


******************************************
**** Ordre en espace, ordre en temps  ****
******************************************

ORD_ESP = RV . 'ORDREESP' ;
ORD_TPS = RV . 'ORDRETPS' ;

'MESSAGE'  '--------------------------';
'MESSAGE'  'Ordre en Espace :' ord_esp;
'MESSAGE'  'Ordre en Temps  :' ord_tps;
'MESSAGE'  '--------------------------';
 
'SI' ((ORD_ESP 'EGA' 1) 'ET' (ORD_TPS 'EGA' 2));
    'MESSAGE' ;
    'MESSAGE' (CHAINE 'Ordre en Espace doit etre 2');
    'MESSAGE' (CHAINE 'On impose ça.');
    'MESSAGE' ;
      RV . 'ORDREESP' = 2 ;
    'MESSAGE' ;
    'MESSAGE'  '--------------------------';
    'MESSAGE'  'Ordre en Espace :' ord_esp;
    'MESSAGE'  'Ordre en Temps  :' ord_tps;
    'MESSAGE'  '--------------------------';
'FINSI' ;

   
******************************
**** La table 'PASDETPS'  ****
******************************

 TPSI = RV . 'TPSI' ;
 TFIN = RV . 'TFINAL'; 
 RV . 'PASDETPS' . 'TPS' = TPSI;

*
**** DELTAT-1 est un argument de PRET (prediction)
*    Donc on doit l'initialiser.
*

 RV . 'PASDETPS' . 'DELTAT-1' = 0.0D0;
 CFL = rv.'ALFA' ;


*********************
**** Les TABLES *****
*********************

*   
**** RV . 'INCO'      
*    RV . 'DOMAINE'
*    RV . 'KIZD'
*    RV . 'KIZG'


*   
**** RV . 'INCO'      -> KINCO
*

KINCO   = (RV . 'INCO') ;


*
**** RV . 'DOMAINE'   -> KDOMA
*

*KDOMA  = (RV . 'DOMAINE') ;
KDOMA  = (RV . 'MODTOT') ;
KDOMA2  = (RV . 'DOMAINE') ;

*
**** RV . 'KIZD' contient les volumes des ELTs
*

'SI'  ('NON' ('EXISTE'   RV  'KIZD')) ;
    'KDIA'  RV ;
'FINSI'  ;

*
***** RV . 'KIZG' contient les flux aux interfaces. 
*

'SI'  ('NON' ('EXISTE'  RV  'KIZG')) ;
    RV . 'KIZG' = 'TABLE'   'KIZG' ;
'FINSI'  ;

'SI' LOGMUL ;

*********************************************************
****   Multi-especes, boucle Sur les Pas de Temps    ****
*********************************************************

*
**** Evaluation de coeff pour le calcule des pentes
*

 KINCO . 'V'  KINCO . 'P'  KINCO . 'T'  KINCO . 'Y'
      KINCO . 'S'  KINCO . 'GAMMA' =   'PRIM' 'PERFTEMP'
      (KINCO . 'IPGAZ') (KINCO . 'RNI') (KINCO . 'GNI')
      (KINCO . 'ENI')   (KINCO. 'RYNI')   (KINCO. 'RSNI') ;

 GRADR ALR COEFR = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
               (KINCO . 'RNI');

 GRADP ALP COEFP = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
             (KINCO . 'P');

 GRADV ALV COEFV = 'PENT' KDOMA 'CENTRE' 'EULEVECT'   'LIMITEUR'
               (KINCO . 'V');

 GRADY ALY COEFY = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
              (KINCO . 'Y');
                     
 GRADS ALS COEFS = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
               (KINCO . 'S');
                     
      

I = 0 ;
   
'REPETER'  BLOC1 (RV . 'ITMA')  ;

    I = I + 1 ;
 
*
***** Les variables primitives
*
         KINCO . 'V'  KINCO . 'P'  KINCO . 'T'  KINCO . 'Y'
         KINCO . 'S'  KINCO . 'GAMMA' =   'PRIM' 'PERFTEMP'
         (KINCO . 'IPGAZ') (KINCO . 'RNI') (KINCO . 'GNI')
         (KINCO . 'ENI')   (KINCO. 'RYNI')   (KINCO. 'RSNI') ;

*
***** Les valeurs aux interfaces
*
         
         'SI'  (ORD_ESP 'EGA'  1) ;
             
             ROF VITF PF YF  SF = 'PRET' 'PERFTEMP'  ORD_ESP ORD_TPS
                 KDOMA (KINCO . 'IPGAZ') (KINCO . 'RNI') (KINCO . 'V')
                 (KINCO . 'P')  (KINCO . 'Y') ( KINCO . 'S' );

         'SINON';
   
*       
***** Ordre 2 en espace => calcul des pentes
*

            GRADR ALR  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'RNI') 'GRADGEO' COEFR ;

            GRADP ALP  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'P') 'GRADGEO' COEFP ;

            GRADV ALV  = 'PENT' KDOMA 'CENTRE' 'EULEVECT'   'LIMITEUR'
                     (KINCO . 'V') 'GRADGEO' COEFV ;

            GRADY ALY  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'Y') 'GRADGEO' COEFY ;
                     
            GRADS ALS  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'S') 'GRADGEO' COEFS ;
                     

           'SI' (ORD_TPS 'EGA' 1);

               ROF VITF PF YF SF = 'PRET' 'PERFTEMP'  ORD_ESP ORD_TPS
                                   KDOMA (KINCO . 'IPGAZ')
                                   (KINCO . 'RNI') GRADR ALR
                                   (KINCO . 'V')   GRADV ALV
                                   (KINCO . 'P')   GRADP ALP
                                   (KINCO . 'Y')   GRADY ALY
                                   (KINCO . 'S')   GRADS ALS ;


           'SINON' ;              
*       
********* Ordre 2 en temps
*
               ROF VITF PF YF SF = 'PRET' 'PERFTEMP'  ORD_ESP ORD_TPS
                                  KDOMA (KINCO . 'IPGAZ')                                
                                  (KINCO . 'RNI') GRADR ALR
                                  (KINCO . 'V')   GRADV ALV
                                  (KINCO . 'P')   GRADP ALP
                                  (KINCO . 'Y')   GRADY ALY
                                  (KINCO . 'S')   GRADS ALS
                                  (KINCO . 'GAMMA')                                   
                                  ((RV . 'PASDETPS' . 'DELTAT-1')/2.0);
           'FINSI' ;
   
        'FINSI'  ;

*
*********** Creation de MCHAML de type 'FACEL' pour les
*           calcul de flux aux interfaces



 KINCO . 'RNF'    =  ROF ;
 KINCO . 'VITNF'  =  VITF ;
 KINCO . 'PNF'    =  PF ;
 KINCO . 'YF'     =  YF ;
 KINCO . 'SF'     =  SF ;

*
********* Boucle sur les operateurs
*

   'REPETER'   BLOC2  NBOP ;
        NOMPER  = 'EXTRAIRE'  &BLOC2  (RV . 'LISTOPER');
        NOTABLE = 'MOT'  ('TEXTE'  ('CHAINE'  &BLOC2  NOMPER) ) ;
        ('TEXTE'  NOMPER) (RV . NOTABLE) ;
   'FIN'  BLOC2 ;

*
********* Mise a jour de la table RV . 'PASDETPS' 
*

   'SI' ('EXISTE'  RV  'DTI');
        DTI = 'MINIMUM'
            ('PROG' ((RV . 'DTI') '/' CFL)
            (RV . 'PASDETPS' . 'DTCONV') );
   'SINON';
        DTI = (RV . 'PASDETPS' . 'DTCONV');
   'FINSI';
   
    RV .  'PASDETPS' . 'DELTAT'  = DTI ;
    
    TMPS = RV . 'PASDETPS' . 'TPS';
    DTI0 = TFIN '-' TMPS;
    DTI0 = DTI0 '/' CFL;
 
    'SI' (DTI0 '<EG' DTI);
        DTI = DTI0;
        RV . 'PASDETPS' . 'DELTAT' = DTI ;
        LOGQUIT = VRAI;
    'SINON' ;
        LOGQUIT = FAUX ;
    'FINSI' ;


*
******** On avance au pas de temps suivant 
*
*   N.B. Tn+1 = Tn + (CFL *  RV . 'PASDETPS' . 'DELTAT');
*

    'AVCT'  RV CFL  'IMPR' (RV.'FIDT') ;
    
*
******** On detrui les choses qui ne servent plus
*
*
*   Les variables primitives
*
    'DETR'  ( KINCO . 'V');
    'DETR'  ( KINCO . 'P');
    'DETR'  ( KINCO . 'T');
    'DETR'  ( KINCO . 'Y');
    'DETR'  ( KINCO . 'S');
    'DETR'  ( KINCO . 'GAMMA');
    'OUBL'  KINCO  'V';
    'OUBL'  KINCO  'P';
    'OUBL'  KINCO  'T';
    'OUBL'  KINCO  'Y';
    'OUBL'  KINCO  'S';
    'OUBL'  KINCO  'GAMMA';
*
*   Les MCHAML faces
*
    'DETR'  ROF ;
    'DETR'  VITF ;
    'DETR'  PF ;
    'DETR'  YF;
    'OUBL'  KINCO  'RNF';
    'OUBL'  KINCO  'VITNF';
    'OUBL'  KINCO  'PNF';
    'OUBL'  KINCO  'YF';
    'OUBL'  KINCO  'SF';
    
*
*   Les pentes 'ET' les limiteurs
*
    'SI' (ORD_ESP 'EGA' 2);
       'DETR' GRADR; 
       'DETR' GRADP;
       'DETR' GRADV;
       'DETR' GRADY;
       'DETR' GRADS;
       'DETR' ALR;
       'DETR' ALP;
       'DETR' ALV;
       'DETR' ALY;
       'DETR' ALS;
    'FINSI' ;
        
    
*
******** On impose le CL
*
*
   'SI' LOGLIM;
      PROLIM RV ;
   'FINSI' ;   
     

    'SI' LOGQUIT;
        'QUITTER' BLOC1;
    'FINSI';


'FIN'  BLOC1 ;

********************************************
**** FIN de Boucle Sur les Pas de Temps  ***
********************************************

'SINON'  ;


*********************************************************
****   Mono-espece,   boucle sur les pas de temps    ****
*********************************************************


 KINCO . 'V'  KINCO . 'P'  KINCO . 'T'  KINCO . 'S' 
    KINCO . 'GAMMA' =   'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
   (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI') (KINCO . 'RSNI');

 GRADR ALR COEFR = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
               (KINCO . 'RNI');

 GRADP ALP COEFP = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
             (KINCO . 'P');

 GRADV ALV COEFV = 'PENT' KDOMA 'CENTRE' 'EULEVECT'   'LIMITEUR'
               (KINCO . 'V');

                     
 GRADS ALS COEFS = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
               (KINCO . 'S');
                     


I = 0 ;
   
'REPETER'  BLOC1 (RV . 'ITMA')  ;

    I = I + 1 ;
 
*
***** Les variables primitives
*

    KINCO . 'V'  KINCO . 'P'  KINCO . 'T'  KINCO . 'S' 
       KINCO . 'GAMMA' =   'PRIM' 'PERFTEMP' (KINCO . 'IPGAZ')
       (KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI') (KINCO . 'RSNI');

*
***** Les valeurs aux interfaces
*
       
              
    'SI'  (ORD_ESP 'EGA'  1) ;
             
        ROF VITF PF SF  =  'PRET' 'PERFTEMP'   ORD_ESP ORD_TPS
            KDOMA (KINCO . 'IPGAZ') (KINCO . 'RNI') (KINCO . 'V')
            (KINCO . 'P') (KINCO . 'S')  ;

    'SINON';
   
*       
***** Ordre 2 en espace => calcul des pentes
*


        GRADR ALR  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'RNI') 'GRADGEO' COEFR ;

        GRADP ALP  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'P')  'GRADGEO' COEFP ; 

        GRADV ALV  = 'PENT' KDOMA 'CENTRE' 'EULEVECT'   'LIMITEUR'
                     (KINCO . 'V')  'GRADGEO' COEFV ;

        GRADS ALS  = 'PENT' KDOMA 'CENTRE' 'EULESCAL'   'LIMITEUR'
                     (KINCO . 'S')  'GRADGEO' COEFS ;


        'SI' (ORD_TPS 'EGA' 1);

            ROF VITF PF SF = 'PRET' 'PERFTEMP'  ORD_ESP ORD_TPS
                              KDOMA (KINCO . 'IPGAZ')
                              (KINCO . 'RNI') GRADR ALR
                              (KINCO . 'V')   GRADV ALV
                              (KINCO . 'P')   GRADP ALP ;

        'SINON' ;              
*       
********* Ordre 2 en temps
*
            ROF VITF PF SF  = 'PRET' 'PERFTEMP'  ORD_ESP ORD_TPS
                               KDOMA (KINCO . 'IPGAZ')                                
                               (KINCO . 'RNI') GRADR ALR
                               (KINCO . 'V')   GRADV ALV
                               (KINCO . 'P')   GRADP ALP
                               (KINCO . 'S')   GRADS ALS
                               (KINCO . 'GAMMA')
                               ((RV . 'PASDETPS' . 'DELTAT-1')/2.0);
        'FINSI' ;
   
    'FINSI'  ;

    
*
*********** Creation de MCHAML de type 'FACEL' pour les
*           calcul de flux aux interfaces


    KINCO . 'RNF'    =  ROF ;
    KINCO . 'VITNF'  =  VITF ;
    KINCO . 'PNF'    =  PF ;
    KINCO . 'SF'     =  SF ;

*
********* Boucle sur les operateurs
*

   'REPETER'   BLOC2  NBOP ;
        NOMPER  = 'EXTRAIRE'  &BLOC2  (RV . 'LISTOPER');
        NOTABLE = 'MOT'  ('TEXTE'  ('CHAINE'  &BLOC2  NOMPER) ) ;
        ('TEXTE'  NOMPER) (RV . NOTABLE) ;
   'FIN'  BLOC2 ;

*
********* Mise a jour de la table RV . 'PASDETPS' 
*

   'SI' ('EXISTE'  RV  'DTI');
        DTI = 'MINIMUM'
            ('PROG' ((RV . 'DTI') '/' CFL)
            (RV . 'PASDETPS' . 'DTCONV') );
   'SINON';
        DTI = (RV . 'PASDETPS' . 'DTCONV');
   'FINSI';
   
    RV .  'PASDETPS' . 'DELTAT'  = DTI ;
    
    TMPS = RV . 'PASDETPS' . 'TPS';
    DTI0 = TFIN '-' TMPS;
    DTI0 = DTI0 '/' CFL;
 
    'SI' (DTI0 '<EG' DTI);
        DTI = DTI0;
        RV . 'PASDETPS' . 'DELTAT' = DTI ;
        LOGQUIT = VRAI;
    'SINON' ;
        LOGQUIT = FAUX ;
    'FINSI' ;


*
******** On avance au pas de temps suivant 
*
*   N.B. Tn+1 = Tn + (CFL *  RV . 'PASDETPS' . 'DELTAT');
*

    'AVCT'  RV CFL  'IMPR' (RV.'FIDT') ;
    
*
******** On detrui les choses qui ne servent plus
*
*
*   Les variables primitives
*
    'DETR'  ( KINCO . 'V');
    'DETR'  ( KINCO . 'P');
    'DETR'  ( KINCO . 'T');
    'DETR'  ( KINCO . 'S');
    'DETR'  ( KINCO . 'GAMMA');
    'OUBL'  KINCO  'V';
    'OUBL'  KINCO  'P';
    'OUBL'  KINCO  'T';
    'OUBL'  KINCO  'S';
    'OUBL'  KINCO  'GAMMA';
*
*   Les MCHAML faces
*
    'DETR'  ROF ;
    'DETR'  VITF ;
    'DETR'  PF ;
    'DETR'  SF ;
    'OUBL'  KINCO  'RNF';
    'OUBL'  KINCO  'VITNF';
    'OUBL'  KINCO  'PNF';
    'OUBL'  KINCO  'SF';
*
*   Les pentes 'ET' les limiteurs
*
    'SI' (ORD_ESP 'EGA' 2) ;
       'DETR' GRADR ; 
       'DETR' GRADP ;
       'DETR' GRADV ;
       'DETR' GRADS ; 
       'DETR' ALR ;
       'DETR' ALP ;
       'DETR' ALV ;
       'DETR' ALS ;
    'FINSI' ;
        
    
*
******** On impose le CL
*
*
   'SI' LOGLIM;
      PROLIM RV ;
   'FINSI' ;   
     

    'SI' LOGQUIT;
        'QUITTER' BLOC1;
    'FINSI';


    'MENAGE' ;

'FIN'  BLOC1 ;

********************************************
**** FIN de Boucle Sur les Pas de Temps  ***
********************************************

'FINSI' ;

'FINPROC'  ;

*****************************************************
*****************************************************
** FIN PROCEDURE EXEXSP                              **
*****************************************************
*****************************************************
*****************************************************
*****************************************************
***** PROCEDURE PROLIM                          *****
*****************************************************
*****************************************************


*****************************************************
*****************************************************
***** FIN PROCEDURE PROLIM                      *****
*****************************************************
*****************************************************


************ 
* MAILLAGE *
************

RAF = 4 ;
NY = RAF ;
NX = 12 '*' RAF ;

L   = 1.0D0  ;
DX = L '/' NX '/' 2.0D0;
H   = NY '*' DX  ;

xD =  0.5D0 '*' L ;
xG = -1.0D0 '*' xD  ;
yH =  0.5D0 '*' H   ;
yB = -1.0D0 '*' yH ;

A1 = xG yB     ;
A2 = 0.0D0 yB  ;
A3 = xD yB     ;
A4 = xD yH     ;
A5 = 0.0D0 yH  ;
A6 = xG yH     ;
VECTG = XG 0.0D0 ;
VECTD = XD 0.0D0 ;

xBG = xG '-' DX;
XBD = xD '+' DX;

B1 = xBG yB;
B2 = xBG yH;
B3 = xBD yB;
B4 = xBD yH;

BAS1  = A1 'DROI' NX A2 ;
BAS2  = A2 'DROI' NX A3 ;
HAU2  = A4 'DROI' NX A5 ;
HAU1  = A5 'DROI' NX A6 ;
LATG  = B1 'DROI' NY B2 ;
LAT1  = A1 'DROI' NY A6 ;
LAT12 = A2 'DROI' NY A5 ;
LAT2  = A3 'DROI' NY A4 ;
LATD  = B3 'DROI' NY B4 ;


DOM1  = LAT12 'TRANSLATION' NX VECTG ;

DOM2  = LAT12 'TRANSLATION' NX VECTD ;

VECTFG = (-1.0D0 '*' DX) 0.0D0;
VECTFD = DX 0.0D0;

FRONTG = LAT1 'TRANSLATION' 1 VECTFG;
FRONTG = FRONTG 'COUL' ROUG ;

FRONTD =  LAT2  'TRANSLATION' 1 VECTFD;
FRONTD = FRONTD 'COUL' VERT ;

*
*** Rotation
*

ANGLE = 30.0D0;
ORIG = 0.0D0 0.0D0;

'MESSAGE';
'MESSAGE' (CHAIN 'ANGLE = ' ANGLE);
'MESSAGE';

DOM1   = DOM1   'TOURNER' ANGLE ORIG;
DOM2   = DOM2   'TOURNER' ANGLE ORIG;
FRONTG = FRONTG 'TOURNER' ANGLE ORIG;
FRONTD = FRONTD 'TOURNER' ANGLE ORIG;

DOMINT = DOM1 'ET' DOM2 ;
'ELIMINATION' DOMINT 1D-6;

FRONT = FRONTG 'ET'  FRONTD ;
'ELIMINATION' FRONT 1D-6;

DOMTOT = DOMINT 'ET'  FRONT;
'ELIMINATION' DOMTOT 1D-6;

**********************
*** OBJETS MODELES ***
**********************
MDOMTOT = 'CHANGER' DOMTOT 'QUAF' ;
MDOMINT = 'CHANGER' DOMINT 'QUAF' ;
MDOM1   = 'CHANGER' DOM1   'QUAF' ;
MDOM2   = 'CHANGER' DOM2   'QUAF' ;
MFRONTG = 'CHANGER' FRONTG 'QUAF' ;
MFRONTD = 'CHANGER' FRONTD 'QUAF' ;
MFRONT  = 'CHANGER' FRONT  'QUAF' ;
'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1 'ET' MDOM2 'ET' 
        MFRONTG 'ET' MFRONTD 'ET' MFRONT) 1.E-5;
MDNS    = 'EULER' ;
$DOMTOT = 'MODE' MDOMTOT MDNS  ;
$DOMINT = 'MODE' MDOMINT MDNS  ;
$DOM1   = 'MODE' MDOM1   MDNS  ;
$DOM2   = 'MODE' MDOM2   MDNS  ;
$FRONTG = 'MODE' MFRONTG MDNS  ;
$FRONTD = 'MODE' MFRONTD MDNS  ;
$FRONT  = 'MODE' MFRONT  MDNS  ;

*
******* Creation de la ligne Utilisée pour le Post-Traitement
*       reliant les points centres
*

  XINIT = XG '+' (0.5D0 '*' DX) ;
  YINIT = YB '+' (0.5D0 '*' DX) ;
  XFIN  = XD '-' (0.5D0 '*' DX) ;
  YFIN = YINIT ;
  PINI = XINIT YINIT;
  PFIN = XFIN YFIN ;
  IAUX = (2 '*' NX) '-' 1 ;
  COURB = PINI 'DROIT' IAUX PFIN;
  COURB = COURB 'TOURNER' ANGLE ORIG;
  COURB = COURB 'COULEUR' 'VERT';
  'ELIMINATION'  0.001 Courb ('DOMA' $DOMTOT 'CENTRE') ;

'SI' GRAPH ;
   'TRACER' ('DOMA' $DOMTOT 'MAILLAGE' 'ET' COURB)
   'TITRE' ('CHAINE' 'Maillage ');
'FINSI' ;   


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

PGAZ = 'TABLE' ;

*
**** Ordre des polynoms cv_i
*

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' .14571861D+05 ; 
PGAZ .  'H2O ' . 'A' = 'PROG' .26589930D+04 ; 
PGAZ .  'N2  ' . 'A' = 'PROG' .10024563D+04 ; 
PGAZ .  'O2  ' . 'A' = 'PROG' .92885670D+03 ; 
                              
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
*     Note: ce sont des entites numeriques
*     h_i = h_i(T0) '-' \int_0^{T0} cp_i(x) dx =
*           h_i(T0) '-' (\int_0^{T0} cv_i(x) dx '+' R_i * T0)
*
*     Pour H2, H20, O2, N2 on a:
*
*     T0 = 298.15
*     

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

*

PGAZ . 'SCALPASS' = 'MOTS' 'TAU ' 'EPS ' ;

*
*** Fin PGAZ
*

*
*** Etat gauche 
*

rog   = 1.0  ;
ung   = 0.0 ;
utg   = 0.0 ;
retg  = .4291145555695540D+04 ;
yh2g = 0.01 ;
yo2g = 0.2 ;
yh2og = 0.3 ;
taug = yo2g ;
epsg = yh2g ;
 
*
   
rouxg  = ((ung '*' ('COS' ANGLE)) '-'
          (utg '*' ('SIN' ANGLE))) '*' rog ;
          
rouyg  = ((ung '*' ('SIN' ANGLE)) '+'
          (utg '*' ('COS' ANGLE))) '*' rog;


*
*** Etat droite
*

rod   =  1.250D-1 ;
und   =  0.0D0 ;
utd   =  0.0D0 ;
retd  = .3598345082089522D+01 ;
yh2d = 0.2 ;
yo2d = 0.4 ;
yh2od = 0.1 ;
taud = yo2d ;
epsd = yh2d ;


rouxd = ((und '*' ('COS' ANGLE)) '-'
         (utd '*' ('SIN' ANGLE))) '*' rod;
rouyd = ((und '*' ('SIN' ANGLE)) '+'
         (utd '*' ('COS' ANGLE))) '*' rod;

*
*** ro
*

RO_f1  = 'KCHT'  $FRONTG  'SCAL' 'CENTRE' rog ;
RO_f2  = 'KCHT'  $FRONTD  'SCAL' 'CENTRE' rod ;
RO_f   = 'KCHT'  $FRONT   'SCAL' 'CENTRE' (RO_f1 'ET' RO_f2) ; 

RO_i1  = 'KCHT'  $DOM1   'SCAL' 'CENTRE' rog;
RO_i2  = 'KCHT'  $DOM2   'SCAL' 'CENTRE' rod;
RO_i   = 'KCHT'  $DOMINT 'SCAL' 'CENTRE' (RO_i1 'ET' RO_i2);

RN  = 'KCHT'  $DOMTOT 'SCAL' 'CENTRE' (RO_i 'ET'  RO_f) ;

*
*** ro u, ro v
*

GN_f1  = 'KCHT'  $FRONTG   'VECT' 'CENTRE' (rouxg rouyg);
GN_f2  = 'KCHT'  $FRONTD   'VECT' 'CENTRE' (rouxd rouyd);
GN_f   = 'KCHT'  $FRONT    'VECT' 'CENTRE' (GN_f1 'ET' GN_f2);

GN_i1  = 'KCHT'  $DOM1    'VECT' 'CENTRE' (rouxg rouyg);
GN_i2  = 'KCHT'  $DOM2    'VECT' 'CENTRE' (rouxd rouyd);
GN_i   = 'KCHT'  $DOMINT  'VECT' 'CENTRE' (GN_i1 'ET' GN_i2);

GN  = 'KCHT'  $DOMTOT 'VECT' 'CENTRE' (GN_i 'ET'  GN_f) ;

*
*** ro e 
*

RE_f1  = 'KCHT'  $FRONTG  'SCAL' 'CENTRE'  retg ;
RE_f2  = 'KCHT'  $FRONTD  'SCAL' 'CENTRE'  retd ;
RE_f   = 'KCHT'  $FRONT   'SCAL' 'CENTRE' (RE_f1 'ET' RE_f2) ; 

RE_i1  = 'KCHT'  $DOM1   'SCAL' 'CENTRE'  retg ;
RE_i2  = 'KCHT'  $DOM2   'SCAL' 'CENTRE'  retd ;
RE_i   = 'KCHT'  $DOMINT 'SCAL' 'CENTRE' (RE_i1 'ET' RE_i2);

REN = 'KCHT'  $DOMTOT 'SCAL' 'CENTRE' (RE_i ET RE_f) ;

*
*** ro y
*

RYH2 =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'H2  ' (rog '*' yh2g)) 'ET' 
      ('KCHT' $DOM1   'SCAL' 'CENTRE' 'COMP' 'H2  ' (rog '*' yh2g)) 'ET' 
      ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP' 'H2  ' (rod '*' yh2d)) 'ET' 
      ('KCHT' $DOM2   'SCAL' 'CENTRE' 'COMP' 'H2  ' (rod '*' yh2d)); 

RYO2 =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'O2  ' (rog '*' yO2g)) 'ET' 
      ('KCHT' $DOM1   'SCAL' 'CENTRE' 'COMP' 'O2  ' (rog '*' yO2g)) 'ET' 
      ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP' 'O2  ' (rod '*' yO2d)) 'ET' 
      ('KCHT' $DOM2   'SCAL' 'CENTRE' 'COMP' 'O2  ' (rod '*' yO2d));

RYH2O =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'H2O ' (rog '*' yH2Og))
  'ET' ('KCHT' $DOM1   'SCAL' 'CENTRE' 'COMP'  'H2O ' (rog '*' yH2Og))
  'ET' ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP'  'H2O ' (rod '*' yH2Od))
  'ET' ('KCHT' $DOM2   'SCAL' 'CENTRE' 'COMP'  'H2O ' (rod '*' yH2Od)); 

RYN = RYH2 'ET' RYO2 'ET' RYH2O ;

*
*** ro scal
*

REPS =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'EPS ' (rog '*' epsg)) 'ET' 
      ('KCHT' $DOM1   'SCAL' 'CENTRE' 'COMP' 'EPS ' (rog '*' epsg)) 'ET' 
      ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP' 'EPS ' (rod '*' epsd)) 'ET' 
      ('KCHT' $DOM2   'SCAL' 'CENTRE' 'COMP' 'EPS ' (rod '*' epsd)); 

RTAU =('KCHT' $FRONTG 'SCAL' 'CENTRE' 'COMP' 'TAU ' (rog '*' taug)) 'ET' 
      ('KCHT' $DOM1   'SCAL' 'CENTRE' 'COMP' 'TAU ' (rog '*' taug)) 'ET' 
      ('KCHT' $FRONTD 'SCAL' 'CENTRE' 'COMP' 'TAU ' (rod '*' taud)) 'ET' 
      ('KCHT' $DOM2   'SCAL' 'CENTRE' 'COMP' 'TAU ' (rod '*' taud));

RSCA = REPS 'ET' RTAU ;



********************************************************
*** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM   ***
********************************************************

MOD1     =  'MODELISER'  ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;

*
**** Les debits dans le repaire tube
*

GNX = 'EXCO' 'UX' GN;
GNY = 'EXCO' 'UY' GN;

GNN = (GNX * ('COS' ANGLE)) '+'
      (GNY * ('SIN' ANGLE));

GNT = (GNY * ('COS' ANGLE)) '-'
      (GNX * ('SIN' ANGLE));

*
*** GRAPHIQUE DES C.I.
*

'SI' GRAPH ;
* 'SI' FAUX ;
*
*** CREATION DE CHAMELEM
*

  CHM_RN   =  'KCHA' $DOMTOT 'CHAM' RN ;
  CHM_GNN  =  'KCHA' $DOMTOT 'CHAM' GNN ;
  CHM_GNT  =  'KCHA' $DOMTOT 'CHAM' GNT ;
  CHM_REN  =  'KCHA' $DOMTOT 'CHAM' REN ;
  CHM_RYN   =  'KCHA' $DOMTOT 'CHAM' RYN ;
  CHM_RSCA  =  'KCHA' $DOMTOT 'CHAM' RSCA ;
  TRAC CHM_RN  MOD1 'TITR'  ('CHAINE'  'RO at t=' 0.0);
  TRAC CHM_REN MOD1 'TITR'  ('CHAINE'  'ROET at t=' 0.0);
  TRAC CHM_GNN MOD1 'TITR'  ('CHAINE'  'ROUN at t=' 0.0);
  TRAC CHM_GNT MOD1 'TITR'  ('CHAINE'  'ROUT at t=' 0.0);
  TRAC CHM_RYN MOD1 'TITR'  ('CHAINE'  'RYN at t=' 0.0);
  TRAC CHM_RSCA MOD1 'TITR'  ('CHAINE'  'RSCA at t=' 0.0);
  
'FINSI' ;
 

***********************
**** La table EQEX **** 
***********************


 CFL   = 1.4D0  ;
 NITER = 10000 ;
 TFIN  = 0.0075 ;
 
 RV = 'EQEX' ('DOMA' $DOMTOT 'TABLE') 'ITMA' NITER 'ALFA' CFL
      'TPSI' 0. 'TFINAL' TFIN
*
***** Option VF       = volumes finis
*            CONS     = conservative
*            EULERMST = euler "thermally perfect"
*            METO     = methode
*
      'OPTI' 'VF' 'CONS' 'EULERMST' METO
*
***** Operateur 'KONV'
*      
      'ZONE' $DOMTOT 'OPER' 'KONV'
*
***** Arguments de 'KONV' (maximum 8 chatacters)
*      
      'IPGAZ' 'RNF' 'VITNF' 'PNF'  'YF' 'SF'
*
***** LIST des inconnues
*
      'INCO' 'RNI' 'GNI' 'ENI' 'RYNI' 'RSNI' ;


*
*** La table RV . INCO (de soustype INCO);
*

RV . 'INCO'  = TABLE  'INCO' ;

*
*** Stokage des inconnues des equations d'Euler.
*

RV . 'INCO' . 'RNI' = 'COPIER' RN ;
RV . 'INCO' . 'GNI' = 'COPIER' GN ;
RV . 'INCO' . 'ENI' = 'COPIER' REN ;
RV . 'INCO' . 'RYNI' = 'COPIER' RYN ;
RV . 'INCO' . 'RSNI' = 'COPIER' RSCA ;

*
*** Le gaz
*

RV . 'INCO' . 'IPGAZ' =  PGAZ ;

*
*** CONDITIONS LIMITS
*

RV . 'INCO' . 'CLIM'   = FAUX  ;

*
**** Ordre en espace
*    Ordre en temps     
*

IE = 2 ;
IT = 2 ;

RV . 'ORDREESP' = IE ;
RV . 'ORDRETPS' = IT ;

*???
RV . 'MODTOT' = $DOMTOT ;

*
***********************************
*** Execution EXEXSP            ***
***********************************
*


 'MESSAGE'  ;
 'MESSAGE'  '**************************';
 'MESSAGE'   ('CHAINE'  'METHODE : ' METO) ;
 'MESSAGE'  '**************************';
 'MESSAGE' ;

  
 
'TEMPS' ;
   EXEXSP   RV ;
'TEMPS' ;


TFIN = RV. 'PASDETPS'. 'TPS'; 

*
**** SOLUTIONS
*

*
**** Les variables conservatives
*

RN  = 'COPIER' (RV . 'INCO' . 'RNI');
GN  = 'COPIER' (RV .  'INCO'. 'GNI'); 
REN = 'COPIER' (RV .  'INCO'. 'ENI');
RYN = 'COPIER' (RV .  'INCO'. 'RYNI');
RSN = 'COPIER' (RV .  'INCO'. 'RSNI');

ERR1 = 'MAXIMUM' (('EXCO'  'H2' RYN) '-' ('EXCO'  'EPS' RSN)) 'ABS' ;
ERR2 = 'MAXIMUM' (('EXCO'  'O2' RYN) '-' ('EXCO'  'TAU' RSN)) 'ABS' ;

'SI' (('MAXIMUM' ('PROG' ERR1 ERR2)) > 1.0D-12) ;
    'MESSAGE' 'Probleme dans les transport de scalaires passifs' ;
    'ERREUR' 5 ;
'FINSI' ;
*
**** Les variables primitives
*

VN PN TN YN SCAN GAMN =   'PRIM' 'PERFTEMP' PGAZ
           RN GN REN RYN RSN ;

*
**** La vitesse dans le repaire tube
*

VNX = 'EXCO' 'UX' VN;
VNY = 'EXCO' 'UY' VN;

VNN = (VNX * ('COS' ANGLE)) '+'
      (VNY * ('SIN' ANGLE));

VNT = (VNY * ('COS' ANGLE)) '-'
      (VNX * ('SIN' ANGLE));
      
GNN = VNN * RN;
GNT = VNT * RN;

*
*** GRAPHIQUE DES SOLUTIONS
*

'SI' GRAPH ;

*
*** CREATION DE CHAMELEM
*

  CHM_RN   =  'KCHA' $DOMTOT 'CHAM' RN;
  CHM_GNN  =  'KCHA' $DOMTOT 'CHAM' GNN ;
  CHM_GNT  =  'KCHA' $DOMTOT 'CHAM' GNT ;
  CHM_REN  =  'KCHA' $DOMTOT 'CHAM' REN;
  CHM_RYN  =  'KCHA' $DOMTOT 'CHAM' RYN;
  CHM_RSN  =  'KCHA' $DOMTOT 'CHAM' RSN;
  TRAC CHM_RN  MOD1 'TITR'  ('CHAINE'  'RO at t=' TFIN);
  TRAC CHM_REN MOD1 'TITR'  ('CHAINE'  'ROET at t=' TFIN);
  TRAC CHM_GNN MOD1 'TITR'  ('CHAINE'  'ROUN at t=' TFIN);
  TRAC CHM_GNT MOD1 'TITR'  ('CHAINE'  'ROUT at t=' TFIN);
  TRAC CHM_RYN  MOD1 'TITR'  ('CHAINE' 'RY at t=' TFIN);
  TRAC CHM_RSN  MOD1 'TITR'  ('CHAINE' 'RS at t=' TFIN);
  
'FINSI' ;

*
*** Objects evolutions
*

xx yy = 'COORDONNEE' Courb;
ss =  'KOPS' ('KOPS' ('COS' ANGLE) '*' xx) '+'
             ('KOPS' ('SIN' ANGLE) '*' yy);

evxx = 'EVOL' 'CHPO' ss Courb ;
lxx = 'EXTRAIRE'  evxx 'ORDO' ;

x0 = 'MINIMUM' lxx;
x1 = 'MAXIMUM' lxx ;

* ro

evro = 'EVOL'  'CHPO' RN Courb ;
lro  = 'EXTRAIRE'  evro 'ORDO' ;
evro = 'EVOL' 'MANU' 'x' lxx 'ro' lro;
tro  = CHAINE  '1D ' METO  ' : RO   IT '  IT     '  IE ' IE   
      '  tmps ' TFIN  ' elem ' 'QUA4' ;

* u
      
evu  = 'EVOL' 'CHPO' VNN Courb ;
lu   = 'EXTRAIRE'  evu 'ORDO' ;
evu  = 'EVOL' 'MANU' 'x' lxx 'u' lu ;
tu   = CHAINE  '1D ' METO ' : U  IT '  IT     '  IE ' IE   
      '  tmps ' TFIN  ' elem ' 'QUA4' ;

* v
      
evv  = 'EVOL' 'CHPO' VNT Courb ;
lv   = 'EXTRAIRE'  evv 'ORDO' ;
evv  = 'EVOL' 'MANU' 'x' lxx 'v' lv ;
tv   = CHAINE  '1D ' METO ' : V  IT '  IT     '  IE ' IE   
      '  tmps ' TFIN  ' elem ' 'QUA4' ;
      
'SI' GRAPH ;      
  'DESSIN' evv 'TITRE' tv 'XBOR' x0 x1;
'FINSI' ;

* p
 
evp  = 'EVOL' 'CHPO' PN Courb ;
lp   = 'EXTRAIRE'  evp 'ORDO' ;
evp  = 'EVOL' 'MANU' 'x' lxx 'p' lp ;
tp   = CHAINE  '1D ' METO ' : P  IT '  IT     '  IE ' IE   

      '  tmps ' TFIN  ' elem ' 'QUA4' ;
* gamma
      
evgam  = 'EVOL' 'CHPO' GAMN Courb ;
lgam     = 'EXTRAIRE'  evgam 'ORDO' ;
evgam    = 'EVOL' 'MANU' 'x' lxx 'gamma' lgam ;
tgam   = CHAINE  '1D ' METO ' : GAMMA  IT '  IT  '  IE ' IE   
      '  tmps ' TFIN  ' elem ' 'QUA4' ;


* s

ls = 'PROG' ;
'REPETER' BL1 ('DIME' lro);
   rocel = 'EXTRAIRE' &BL1 lro ;
   pcel  = 'EXTRAIRE' &BL1 lp ;
   gamcel = 'EXTRAIRE' &BL1 lgam ;
   scel = pcel '/' (rocel '**' gamcel) ;
   ls = ls 'ET' ('PROG' scel) ;
'FIN' BL1 ;
evs  = 'EVOL' 'MANU' 'x' lxx 's' ls ;
ts   = CHAINE  '1D ' METO ' : s  IT '  IT     '  IE ' IE   
      '  tmps ' TFIN  ' elem ' 'QUA4' ;

* Fractions massiques


 EVY = 'TABLE'  ;
 TY   = CHAINE  '1D ' METO ' : Y  IT '  IT     '  IE ' IE   
   '  tmps ' TFIN  ' elem ' 'QUA4' ;
 YOLD   = 'COPIER' YN ;
 NOMECO = 'EXTR' YOLD 'COMP';
 NUMECO = 'DIME' NOMECO ;
 'REPETER'  BLOCCO NUMECO;
     NOMCEL = 'EXTRAIRE' NOMECO &BLOCCO  ;
     Y0     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
              'COMP'  NOMCEL
              ('EXCO' NOMCEL YOLD NOMCEL) ;
     N0     = NOMCEL ;
     EVY0   =  'EVOL' 'CHPO' Y0 Courb ;
     LY0    =  'EXTRAIRE'  EVY0 'ORDO' ;
     EVY0   =  'EVOL' 'MANU' 'x' lxx N0 LY0 ;
     EVY . &BLOCCO   = EVY0;
 'FIN' BLOCCO;


 EVSCA = 'TABLE'  ;
 TSCA   = CHAINE  '1D ' METO ' : S  IT '  IT     '  IE ' IE   
   '  tmps ' TFIN  ' elem ' 'QUA4' ;
 SCAOLD   = 'COPIER' SCAN ;
 NOMSCA = 'EXTR' SCAOLD 'COMP';
 NUMSCA = 'DIME' NOMSCA ;
 'REPETER'  BLOCCO NUMSCA;
     NOMCEL = 'EXTRAIRE' NOMSCA &BLOCCO  ;
     SCA0   = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
              'COMP'  NOMCEL
              ('EXCO' NOMCEL SCAOLD NOMCEL) ;
     N0     = NOMCEL ;
     EVSCA0  =  'EVOL' 'CHPO' SCA0 Courb ;
     LSCA0   =  'EXTRAIRE'  EVSCA0 'ORDO' ;
     EVSCA0  =  'EVOL' 'MANU' 'x' lxx N0 LSCA0 ;
     EVSCA . &BLOCCO   = EVSCA0;
 'FIN' BLOCCO;

 
lroan = 'PROG'
 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01
 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01
 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01
 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01 .10000000D+01
 .10000000D+01 .10000000D+01 .10000000D+01 .97328030D+00 .93919980D+00
 .90617814D+00 .87418663D+00 .84319724D+00 .81318261D+00 .78411600D+00 ;

lroan = lroan 'ET' ('PROG'
 .75597130D+00 .72872302D+00 .70234626D+00 .67681672D+00 .65211066D+00 
 .62820492D+00 .60507689D+00 .58270451D+00 .56106625D+00 .54014110D+00
 .51990856D+00 .50034865D+00 .48144185D+00 .46316916D+00 .44551201D+00
 .42845233D+00 .41197248D+00 .39605527D+00 .38068395D+00 .36584219D+00
 .35151407D+00 .33768408D+00 .32433713D+00 .31145849D+00 .29903383D+00
 .29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00);

lroan = lroan 'ET' ('PROG'
.29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00
.29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00
.29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00 .29845131D+00
.29845131D+00 .99363934D+00 .99363934D+00 .99363934D+00 .99363934D+00
.99363934D+00 .12500000D+00 .12500000D+00 .12500000D+00 .12500000D+00
.12500000D+00 .12500000D+00 .12500000D+00 .12500000D+00 .12500000D+00) ;

lroan = lroan 'ET' ('PROG'
.12500000D+00 .12500000D+00 .12500000D+00 .12500000D+00 .12500000D+00
.12500000D+00) ;
 
lpan = 'PROG'
.99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
.99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
.99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
.99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
.99867381D+03 .99867381D+03 .99867381D+03 .96588232D+03 .92436107D+03
.88446286D+03 .84613062D+03 .80930907D+03 .77394466D+03 .73998551D+03;

lpan = lpan 'ET' ('PROG'
.70738140D+03 .67608370D+03 .64604531D+03 .61722065D+03 .58956562D+03
.56303751D+03 .53759501D+03 .51319816D+03 .48980829D+03 .46738801D+03
.44590117D+03 .42531280D+03 .40558909D+03 .38669738D+03 .36860608D+03
.35128469D+03 .33470372D+03 .31883470D+03 .30365012D+03 .28912341D+03
.27522894D+03 .26194192D+03 .24923848D+03 .23709554D+03 .22549085D+03
.22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03);

lpan = lpan 'ET' ('PROG'
.22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03
.22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03
.22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03
.22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03 .22494948D+03
.22494948D+03 .99482065D+00 .99482065D+00 .99482065D+00 .99482065D+00
.99482065D+00 .99482065D+00 .99482065D+00 .99482065D+00 .99482065D+00);

lpan = lpan 'ET' ('PROG'
.99482065D+00 .99482065D+00 .99482065D+00 .99482065D+00 .99482065D+00
.99482065D+00) ;
  
luan = 'PROG'
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00 .00000000D+00 .00000000D+00 .94876987D+00 .21928876D+01
 .34370054D+01 .46811232D+01 .59252410D+01 .71693587D+01 .84134765D+01;

luan = luan 'ET' ('PROG'
 .96575943D+01 .10901712D+02 .12145830D+02 .13389948D+02 .14634065D+02
 .15878183D+02 .17122301D+02 .18366419D+02 .19610537D+02 .20854654D+02
 .22098772D+02 .23342890D+02 .24587008D+02 .25831125D+02 .27075243D+02
 .28319361D+02 .29563479D+02 .30807596D+02 .32051714D+02 .33295832D+02
 .34539950D+02 .35784068D+02 .37028185D+02 .38272303D+02 .39516421D+02
 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02);
    
luan = luan 'ET' ('PROG'
 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02
 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02
 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02
 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02 .39575864D+02
 .39575864D+02 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00);
 
luan = luan 'ET' ('PROG'
 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00 .00000000D+00
 .00000000D+00) ;
    
lsan = 'PROG' 
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03;

lsan = lsan 'ET' ('PROG'
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03);

lsan = lsan 'ET' ('PROG'
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03 .99867381D+03
 .99867381D+03 .22678920D+03 .22678920D+03 .22678920D+03 .22678920D+03
 .22678920D+03 .14141927D+02 .14141927D+02 .14141927D+02 .14141927D+02
 .14141927D+02 .14141927D+02 .14141927D+02 .14141927D+02 .14141927D+02);

lsan = lsan 'ET' ('PROG' 
 .14141927D+02 .14141927D+02 .14141927D+02 .14141927D+02 .14141927D+02
 .14141927D+02) ;  
    
lgaman = 'PROG' 
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01;

lgaman = lgaman 'ET' ('PROG'   
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01);

lgaman = lgaman 'ET' ('PROG'   
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01 .12327290D+01
 .12327290D+01 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01
 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01
 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01);

lgaman = lgaman 'ET' ('PROG'    
.12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01 .12764662D+01
.12764662D+01) ;  

lyan = 'TABLE'  ;

lyan . 1 = 'PROG'
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01;
 
lyan . 1 = lyan . 1  'ET' ('PROG'
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01);

lyan . 1 = lyan . 1  'ET' ('PROG'
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01 .10000000D-01
 .10000000D-01 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00);

lyan . 1 = lyan . 1  'ET' ('PROG' 
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00) ;

lyan . 2 = 'PROG' 
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00;

lyan . 2 = lyan . 2 'ET' ('PROG'
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00);

lyan . 2 = lyan . 2 'ET' ('PROG'
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00 .20000000D+00
 .20000000D+00 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00
 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00
 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00);

lyan . 2 = lyan . 2 'ET' ('PROG' 
 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00 .40000000D+00
 .40000000D+00) ;

lyan . 3 = 'PROG'   
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00;

lyan . 3 = lyan . 3 'ET' ('PROG'
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00);

lyan . 3 = lyan . 3 'ET' ('PROG'
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00 .30000000D+00
 .30000000D+00 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00
 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00
 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00);

lyan . 3 = lyan . 3 'ET' ('PROG'
 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00 .10000000D+00
 .10000000D+00 ) ;            

ERRO  = 'ABS' (LRO '-' LROAN) ;
ERP   = 'ABS' (LP  '-' LPAN)  ;
ERU   = 'ABS' (LU  '-' LUAN)  ;
ERS   = 'ABS' (LS '-'  LSAN)  ;

L1RO = 0.0 ;
L1P  = 0.0 ;
L1U  = 0.0 ;
L1S  = 0.0 ;

NDIM = 'DIME' erro ;
 
'REPETER' BL1 NDIM ;
   L1RO = L1RO '+' ('EXTRAIRE' &BL1 ERRO) ;
   L1P  = L1P  '+' ('EXTRAIRE' &BL1 ERP) ;
   L1U  = L1U  '+' ('EXTRAIRE' &BL1 ERU) ;
   L1S  = L1S  '+' ('EXTRAIRE' &BL1 ERS) ;
'FIN' BL1 ;

L1RO = L1RO '/' (NDIM * ('MAXIMUM' lroan)) ;

  
L1P  = L1P '/' (NDIM * ('MAXIMUM' lpan)) ;

L1U  = L1U '/' (NDIM * ('MAXIMUM' luan)) ;
L1S  = L1S '/' (NDIM * ('MAXIMUM' lsan)) ;
     


*
*** Quelque DESSIN
*

'SI' GRAPH ;
    evroa  = 'EVOL' 'MANU' 'x' lxx 'ro' lroan ;
    evpa   = 'EVOL' 'MANU' 'x' lxx 'p'  lpan ;
    evua   = 'EVOL' 'MANU' 'x' lxx 'ua' luan ;
    evsa   = 'EVOL' 'MANU' 'x' lxx 's'  lsan ;
    evgama = 'EVOL' 'MANU' 'x' lxx 'gamma'  lgaman ;
    TAB1=TABLE;
    TAB1.'TITRE'= TABLE ;
    TAB1.1='MARQ TRIB REGU';
    TAB1.'TITRE' . 1  = MOT 'Numerique' ;
    TAB1.2='MARQ CROI REGU';
    TAB1.'TITRE' . 2  = MOT 'Exacte' ;
    'DESSIN' (evro 'ET' evroa) 'TITRE' tro 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evp 'ET' evpa) 'TITRE' tp 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evu 'ET' evua) 'TITRE' tu 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evs 'ET' evsa) 'TITRE' ts 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evgam 'ET' evgama) 'TITRE' tgam 'XBOR' x0 x1
    'LEGE' TAB1;
     'REPETER'  BL 3 ;
         NOMCEL = 'EXTRAIRE' NOMECO &BL  ;
         evyacel = 'EVOL' 'MANU' 'x' lxx nomcel
                (lyan . &BL )  ;
        'DESSIN' ((evy . &BL)  'ET' evyacel) 'TITRE' TY
        'XBOR' x0 x1 'YBOR' -0.01 1.01  'LEGE' TAB1;
     'FIN' BL;
*    TAU = YO2, EPS = YH2
      evscaan = 'EVOL' 'MANU' 'x' lxx 'TAU' 
                (lyan . 2 ) ;
      'DESSIN' ((EVSCA . 1) 'ET' evscaan ) 'TITRE' TSCA
           'XBOR' x0 x1 'YBOR' 0.15 0.45
           'LEGE' TAB1;    
      evscaan = 'EVOL' 'MANU' 'x' lxx 'TAU' 
                (lyan . 1 ) ;
      'DESSIN' ((EVSCA . 2) 'ET' evscaan ) 'TITRE' TSCA
           'XBOR' x0 x1 'YBOR' 0. 0.25
           'LEGE' TAB1;    
         
'FINSI' ;

'SI' (L1RO > 5.0D-2);
   'ERREUR' 5 ;
'FINSI' ;

'SI' (L1P > 1.0D-2);
   'ERREUR' 5 ;
'FINSI' ;

'SI' (L1U > 5.0D-2);
   'ERREUR' 5 ;
'FINSI' ;

'SI' (L1S > 5.0D-2);
   'ERREUR' 5 ;
'FINSI' ;

'FIN' ;
 

 

 

 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer