Download tube3D_multi_ther.dgibi

Back to the list

* fichier :  tube3D_multi_ther.dgibi
******************************************************************
* CALCUL DU TUBE A CHOC                                          *
* FORMULATION VF COMPRESSIBLE EXPLICITE                          *
* DIFFERENTS SOLVEURS                                            *
*                                                                *
* A. BECCANTINI TTMF    MARS    1998                             *
* Remise à jours : JUIILETT 2001                                 *
* Remise à jours : SEPTEMBRE 2002 (syntaxe de 'KONV' changé)     *
******************************************************************

'OPTION'  'DIME' 3 ;
'OPTION'  'ELEM' 'CUB8' ;
'OPTION'  'ISOV' 'SULI' ;
'OPTION'  'ECHO' 0 ;
'OPTION' 'TRAC' 'X' ;

 GRAPH  = VRAI ;
 GRAPH  = FAUX ;
 
*
*** Methodes possibles :
*
* VLH
* SS
*

 METO =   'VLH' ;
 LOGSO = VRAI ;
 SAFFAC = 0.7 ;
 NITER = 1000 ;
 TFINAL  = 0.0075 ;
 

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

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

L   = 1.0D0  ;
DX = L '/' NX '/' 2.0D0;
H   = NY '*' DX  ;
P   = NZ '*' DX ;
xD =  0.5D0 '*' L ;
xG = -1.0D0 '*' xD  ;
yH =  0.5D0 '*' H   ;
yB = -1.0D0 '*' yH ;

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

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

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

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 ;
SUR1  = LAT1 'TRANSLATION' NZ (0.0 0.0 P);
LAT12 = A2 'DROI' NY A5 ;
LAT2  = A3 'DROI' NY A4 ;
SUR2  = LAT2 'TRANSLATION' NZ (0.0 0.0 P);
LATD  = B3 'DROI' NY B4 ;


DOM11  = LAT12 'TRANSLATION' NX VECTG ;
DOM1 = 'VOLUME' DOM11 'TRANSLATION' NZ (0.0 0.0 P);

DOM21  = LAT12 'TRANSLATION' NX VECTD ;
DOM2 = 'VOLUME' DOM21 'TRANSLATION' NZ (0.0 0.0 P);


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

FRONTG = 'VOLUME' SUR1 'TRANSLATION' 1 VECTFG;
FRONTG = FRONTG 'COUL' ROUG ;

FRONTD = 'VOLUME'  SUR2  'TRANSLATION' 1 VECTFD;
FRONTD =  FRONTD 'COUL' VERT ;

*
*** Rotation
*

ANGLE = 30.0D0;
ORIG = 0.0D0 0.0D0 0.0D0;
ORIG2 = 0.0D0 0.0D0 1.0D0;

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

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

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

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

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


$DOMTOT = 'MODE' DOMTOT 'EULER'  ;
$DOMINT = 'MODE' DOMINT 'EULER'  ;
$DOM1   = 'MODE' DOM1   'EULER'  ;
$DOM2   = 'MODE' DOM2   'EULER'  ;
$FRONTG = 'MODE' FRONTG 'EULER'  ;
$FRONTD = 'MODE' FRONTD 'EULER'  ;
$FRONT  = 'MODE' FRONT  'EULER'  ;

TDOMTOT = 'DOMA' $DOMTOT 'VF'  ;
TDOMINT = 'DOMA' $DOMINT 'VF'  ;
TDOM1   = 'DOMA' $DOM1   'VF'  ;
TDOM2   = 'DOMA' $DOM2   'VF'  ;
TFRONTG = 'DOMA' $FRONTG 'VF'  ;
TFRONTD = 'DOMA' $FRONTD 'VF'  ;
TFRONT  = 'DOMA' $FRONT  'VF'  ;

MDOMTOT = TDOMTOT . 'QUAF' ;
MDOMINT = TDOMINT . 'QUAF' ;
MDOM1   = TDOM1   . 'QUAF' ;
MDOM2   = TDOM2   . 'QUAF' ;
MFRONTG = TFRONTG . 'QUAF' ;
MFRONTD = TFRONTD . 'QUAF' ;
MFRONT  = TFRONT  . 'QUAF' ;
'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1 'ET' MDOM2 'ET'
        MFRONTG 'ET' MFRONTD 'ET' MFRONT) 1.E-5 ;

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

  XINIT = XG '+' (0.5D0 '*' DX) ;
  YINIT = YB '+' (0.5D0 '*' DX) ;
  ZINIT = 0.5D0 '*' DX ;
  XFIN  = XD '-' (0.5D0 '*' DX) ;
  YFIN = YINIT ;
  ZFIN = ZINIT ;
  PINI = XINIT YINIT ZINIT;
  PFIN = XFIN YFIN ZFIN;
  IAUX = (2 '*' NX) '-' 1 ;
  COURB = PINI 'DROIT' IAUX PFIN;
  COURB = COURB 'TOURNER' ANGLE ORIG ORIG2;
  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 ;

*
*** Fin PGAZ
*

*
*** Etat gauche 
*

rog   = 1.0  ;
ung   = 0.0 ;
utg   = 0.0 ;
uvg   = 0.0 ;
retg  = .4291145555695540D+04 ;
yh2g = 0.01 ;
yo2g = 0.2 ;
yh2og = 0.3 ;

 
*
   
rouxg  = ((ung '*' ('COS' ANGLE)) '-'
          (utg '*' ('SIN' ANGLE))) '*' rog ;
          
rouyg  = ((ung '*' ('SIN' ANGLE)) '+'
          (utg '*' ('COS' ANGLE))) '*' rog;

rouzg  = rog '*' uvg ;
*
*** Etat droite
*

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

*rod   =  rog ;
*und   =  0.0D0 ;
*utd   =  0.0D0 ;
*retd  = retg;
*yh2d = yh2g  ;
*yo2d = yo2g ;
*yh2od = yh2og ;
*

rouxd = ((und '*' ('COS' ANGLE)) '-'
         (utd '*' ('SIN' ANGLE))) '*' rod;
rouyd = ((und '*' ('SIN' ANGLE)) '+'
         (utd '*' ('COS' ANGLE))) '*' rod;
rouzd = rod '*' uvd ;
*
*** 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 rouzg);
GN_f2  = 'KCHT'  $FRONTD   'VECT' 'CENTRE' (rouxd rouyd rouzd);
GN_f   = 'KCHT'  $FRONT    'VECT' 'CENTRE' (GN_f1 'ET' GN_f2);

GN_i1  = 'KCHT'  $DOM1    'VECT' 'CENTRE' (rouxg rouyg rouzg);
GN_i2  = 'KCHT'  $DOM2    'VECT' 'CENTRE' (rouxd rouyd rouzd);
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);

RETN = '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 ;

********************************************************
*** 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));
GNV = 'EXCO' 'UZ' GN ; 
*
*** 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_GNV  =  'KCHA' $DOMTOT 'CHAM' GNV ;
  CHM_RETN  =  'KCHA' $DOMTOT 'CHAM' RETN ;
  CHM_RH2  =  'KCHA' $DOMTOT 'CHAM' RYH2 ;
  CHM_RO2  =  'KCHA' $DOMTOT 'CHAM' RYO2 ;
  CHM_RH2O  =  'KCHA' $DOMTOT 'CHAM' RYH2O ;
  TRAC CHM_RN  MOD1 'TITR'  ('CHAINE'  'RO at t=' 0.0);
  TRAC CHM_RETN 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_GNV MOD1 'TITR'  ('CHAINE'  'ROUV at t=' 0.0);
  TRAC CHM_RH2 MOD1 'TITR'  ('CHAINE'  'RYH2 at t=' 0.0);
  TRAC CHM_RO2 MOD1 'TITR'  ('CHAINE'  'RYO2 at t=' 0.0);

  
'FINSI' ;

*
**** Les variables primitives
*

VN PN TN YN GAMN =   'PRIM' 'PERFTEMP' PGAZ
           RN GN RETN RYN ;

*
**** Les gradients
*
 CACCA CHLIM COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
                ('MOTS' 'SCAL') RN  ;
 CACCA CHLIM COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
                ('MOTS' 'UX' 'UY' 'UZ') VN ;

* Names of the residuum components

 LISTINCO = 'MOTS' 'RN' 'RUX' 'RUY' 'RUZ' 'RETN' 'H2  ' 'O2  ' 'H2O ' ;
  
                
*
**** Le calcul
*
 TPS = 0.0 ;
 ZERO = 1.0D-12 ;
 'TEMPS' 'ZERO' ;
 'REPETER' BL1 NITER ;
*
**** Primitive variables
*
    VN PN TN YN GAMN =   'PRIM' 'PERFTEMP' PGAZ
           RN GN RETN RYN ;

    'SI' LOGSO ;
    
       GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
          ('MOTS' 'SCAL') RN  'GRADGEO' COEFSCAL ;

       GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
          ('MOTS' 'SCAL') PN  'GRADGEO' COEFSCAL ;

       GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
          ('MOTS' 'UX' 'UY' 'UZ') VN   'GRADGEO'  COEFVECT ;

       GRADY ALY = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
          PGAZ . 'ESPEULE'  YN  'GRADGEO'  COEFSCAL ;

       ROF VITF PF YF  = 'PRET' 'PERFTEMP'  2 1
                            $DOMTOT PGAZ
                            RN    GRADR  ALR
                            VN    GRADV  ALV
                            PN    GRADP  ALP
                            YN    GRADY  ALY ;

    'SINON' ;
                              
       ROF VITF PF YF  = 'PRET' 'PERFTEMP'  1 1 
                              $DOMTOT PGAZ
                              RN   
                              VN   
                              PN   
                              YN    ;

    'FINSI' ;

    RESIDU DELTAT =  'KONV' 'VF' 'PERFTEMP' 'RESI' METO
         $DOMTOT PGAZ LISTINCO  ROF VITF PF YF ;

    DT_CON = SAFFAC '*' DELTAT ;
*
**** The time step linked to tps
*
    DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ;
*
**** Total time step
*
    DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS) ;
*
**** Increment of the variables (convection)
*
    RESIDU = DTMIN '*' RESIDU ;
    
    DRN = 'EXCO' 'RN' RESIDU 'SCAL' ;
    DGN = 'EXCO' ('MOTS' 'RUX' 'RUY' 'RUZ') RESIDU
       ('MOTS' 'UX' 'UY' 'UZ') ;
    DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ;
    DRYN  = 'EXCO' (PGAZ . 'ESPEULE') RESIDU
            (PGAZ . 'ESPEULE') ;
    
    TPS  = TPS '+' DTMIN ;
    RN   = RN '+' DRN ;
    GN   = GN '+' DGN ;
    RETN = RETN '+' DRETN ;
    RYN = RYN '+' DRYN ;

    'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ;
        'MESSAGE' ('CHAINE' 'ITER =' &BL1 '  TPS =' TPS) ;
    'FINSI' ;

    'SI' (TPS > TFINAL) ;
       'QUITTER' BL1 ;
    'FINSI' ;

 'FIN' BL1 ;
 'TEMPS' ;
*
***** On calcule les variables primitive
*
 
  VN PN TN YN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN ;
  
 'SI' GRAPH ;

    CHM_RN  =  'KCHA'  $DOMTOT  'CHAM'  RN  ;
    CHM_VN  =  'KCHA'  $DOMTOT  'CHAM'  VN  ;
    CHM_PN  =  'KCHA'  $DOMTOT  'CHAM'  PN  ;
    CHM_TN  =  'KCHA'  $DOMTOT  'CHAM'  TN  ;
    CHM_YN  =  'KCHA'  $DOMTOT  'CHAM'  YN  ;
    
    'TRAC' CHM_RN  MOD1 
       'TITR' ('CHAINE' 'rho at t=' TPS)   ;
    'TRAC' CHM_VN  MOD1 
       'TITR' ('CHAINE' 'v at t= '  TPS)   ;
    'TRAC' CHM_PN  MOD1 
       'TITR' ('CHAINE' 'p at t= '  TPS)   ;
    'TRAC' CHM_TN  MOD1 
       'TITR' ('CHAINE' 'T at t= '  TPS)   ;
    'TRAC' CHM_YN  MOD1 
       'TITR' ('CHAINE' 'y at t= '  TPS)   ;
 
 'FINSI' ;

*
**** 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;
 
 
*
*** Objects evolutions
*

xx yy zz = '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;
 
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;

'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