Download tube_multi.dgibi

Back to the list

* fichier :  tube_multi.dgibi
******************************************************************
* CALCUL DU TUBE A CHOC; CAS MULTIESPECE                         *
*                                                                *
* FORMULATION VF COMPRESSIBLE EXPLICITE                          *
* DIFFERENTS SOLVEURS                                            *
*                                                                *
* A. BECCANTINI TTMF    NOVEMBRE  1998                           *
******************************************************************

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

 GRAPH = FAUX ;
* GRAPH = VRAI ;
  
*
*** Methodes possibles :
*
*   'VANLEER'
*   'VLH    '
*   'HUSVL  '
*   'HUSVLH '
*   'GODUNOV'
*

 METO =  'VLH' ;


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

MAILVID = 'DIFF' DOM1 DOM1 ;
**********************
*** OBJETS MODELES ***
**********************

'SI' VRAI ;
   $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 ;
'SINON' ;
   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;
   $DOMTOT = 'MODE' MDOMTOT 'NAVIER_STOKES' 'LINE'   ;
   $DOMINT = 'MODE' MDOMINT 'NAVIER_STOKES' 'LINE'   ;
   $DOM1   = 'MODE' MDOM1   'NAVIER_STOKES' 'LINE'   ;
   $DOM2   = 'MODE' MDOM2   'NAVIER_STOKES' 'LINE'   ;
   $FRONTG = 'MODE' MFRONTG 'NAVIER_STOKES' 'LINE'   ;
   $FRONTD = 'MODE' MFRONTD 'NAVIER_STOKES' 'LINE'   ;
   $FRONT  = 'MODE' MFRONT  'NAVIER_STOKES' 'LINE'   ;
'FINSI' ;


*
******* 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' ;   

************************************************************
* CONDITIONS INITIALES ET LIMITES.                         *
************************************************************

*
**** Proprietes de gaz
*

*
*** GAZ: H_2, O_2, H_2O, N_2
*
*   CP, CV en J/Kg/K @ T = 3000
*

PGAZ = 'TABLE' ;

PGAZ . 'CP' = 'TABLE' ;
PGAZ . 'CP' . 'H2  '  = .18729066D+05 ;
PGAZ . 'CP' . 'O2  '  = .11886820D+04 ;
PGAZ . 'CP' . 'H2O '  = .31209047D+04 ;
PGAZ . 'CP' . 'N2  '  = .12993995D+04 ;

PGAZ . 'CV' = 'TABLE' ;
PGAZ . 'CV' . 'H2  '  = .14571861D+05 ;
PGAZ . 'CV' . 'O2  '  = .92885670D+03 ;
PGAZ . 'CV' . 'H2O '  = .26589930D+04 ;
PGAZ . 'CV' . 'N2  '  =  .10024563D+04;

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

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

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

PGAZ . 'ESPNEULE' = 'N2  ';

*
*** Etat gauche 
*

rog   = 1.0 ;
ung   = 0.0 ;
utg   = 0.0 ;
pg    = 1.0D3 ;
yg    = 'PROG' 0.01 0.2 0.3 ;

*
*** gamg
*

YTOT  = 0.0 ;
CPTOT = 0.0 ;
CVTOT = 0.0 ;

'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
   CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
   CPCEL = PGAZ . 'CP' . CELCAR ;
   CVCEL = PGAZ . 'CV' . CELCAR ;
   YCEL = 'EXTRAIRE' &BL1 yg ;
   YTOT = YTOT '+' YCEL ;
   CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
   CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
'FIN' BL1 ;

 CELCAR = (PGAZ . 'ESPNEULE') ;
 CPCEL = PGAZ . 'CP' . CELCAR ;
 CVCEL = PGAZ . 'CV' . CELCAR ;
 YCEL = 1.0D0 '-' YTOT;
 CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
 CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;

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

recing = 0.5D0 '*' rog '*' ((ung '*' ung) '+' (utg '*' utg));
retg  = (pg '/' (gamg '-' 1.0)) '+' recing;

*
*** Etat droite
*

rod   =  1.250D-1 ;
und   =  0.0D0 ;
utd   =  0.0D0 ;
pd    = 1.0D0 ;
yd    = 'PROG' 0.2 0.4 0.1;

*
*** gamd
*

YTOT  = 0.0 ;
CPTOT = 0.0 ;
CVTOT = 0.0 ;

'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
   CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
   CPCEL = PGAZ . 'CP' . CELCAR ;
   CVCEL = PGAZ . 'CV' . CELCAR ;
   YCEL = 'EXTRAIRE' &BL1 yd ;
   YTOT = YTOT '+' YCEL ;
   CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
   CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;
'FIN' BL1 ;

 CELCAR = (PGAZ . 'ESPNEULE') ;
 CPCEL = PGAZ . 'CP' . CELCAR ;
 CVCEL = PGAZ . 'CV' . CELCAR ;
 YCEL = 1.0D0 '-' YTOT;
 CPTOT = CPTOT '+' (YCEL '*' CPCEL) ;
 CVTOT = CVTOT '+' (YCEL '*' CVCEL) ;

gamd = CPTOT '/' CVTOT ;

*

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

recind = 0.5D0 '*' rod '*' ((und '*' und) '+' (utd '*' utd));
retd  = (pd '/' (gamd '-' 1.0)) '+' recind;


*
*** 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);

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

*
*** ro y
*


'REPETER' BL1 ('DIME' (PGAZ . 'ESPEULE') );
   CELCAR = 'EXTRAIRE' &BL1 (PGAZ . 'ESPEULE');
   YCELG = 'EXTRAIRE' &BL1 yg ;
   YCELD = 'EXTRAIRE' &BL1 yd ;
   ROY_f1  = 'KCHT'  $FRONTG  'SCAL' 'CENTRE'
             'COMP' CELCAR (rog '*' ycelg);
   ROY_f2  = 'KCHT'  $FRONTD  'SCAL' 'CENTRE'
             'COMP' CELCAR (rod '*' yceld);
   ROY_i1  = 'KCHT'  $DOM1   'SCAL' 'CENTRE'
             'COMP' CELCAR (rog '*' ycelg);
   ROY_i2  = 'KCHT'  $DOM2   'SCAL' 'CENTRE'
             'COMP' CELCAR (rod '*' yceld);
   'SI' (&BL1 'EGA' 1);
       ROY_f  = 'KCHT'  $FRONT  'SCAL' 'CENTRE' 'COMP' CELCAR
                (ROY_f1 'ET' ROY_f2) ; 
       ROY_i  = 'KCHT'  $DOMINT 'SCAL' 'CENTRE' 'COMP' CELCAR
                (ROY_i1 'ET' ROY_i2);
   'SINON' ;
       ROY_f  = ROY_f 'ET'
              ('KCHT'  $FRONT 'SCAL' 'CENTRE' 'COMP' CELCAR
              (ROY_f1 'ET' ROY_f2)) ;
       ROY_i  = ROY_I 'ET'
              ('KCHT'  $DOMINT 'SCAL' 'CENTRE' 'COMP' CELCAR
              (ROY_i1 'ET' ROY_i2));
   'FINSI' ;
'FIN' BL1 ;

RYNLIM = ROY_f ;
RYN  = ROY_i 'ET' ROY_f ; 


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

*
*** CREATION DE CHAMELEM
*

  CHM_RN   =  'KCHA' $DOMTOT 'CHAM' RN ;
  CHM_GNN  =  'KCHA' $DOMTOT 'CHAM' GNN ;
  CHM_GNT  =  'KCHA' $DOMTOT 'CHAM' GNT ;
  CHM_RETN  =  'KCHA' $DOMTOT 'CHAM' RETN ;
  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);
  
'FINSI' ;

******************************************
************* Computation ****************
******************************************

 SAFFAC   = 0.3D0  ;
 NITER = 1000 ;
 TFINAL  = 0.0075 ;
 LOGSO = VRAI ;
 
*
**** Les variables primitives
*

 VN PN TN YN GAMN =   'PRIM' 'PERFMULT' 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') VN ;

* Names of the residuum components

 LISTINCO = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' 'H2  ' 'O2  ' 'H2O ' ;
  

 TPS = 0.0 ;
 ZERO = 1.0D-12 ;
 'TEMPS' 'ZERO' ;
 'REPETER' BL1 NITER ;
 
    VN PN TN YN GAMN =   'PRIM' 'PERFMULT' 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') VN   'GRADGEO'  COEFVECT ;

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

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

    'SINON' ;
                              
       ROF VITF PF YF GAMF = 'PRET' 'PERFMULT'  1 1 
                              $DOMTOT
                              RN   
                              VN   
                              PN   
                              YN
                              GAMN  ;

    'FINSI' ;

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

    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') RESIDU
       ('MOTS' 'UX' 'UY') ;
    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
*

*
**** Les variables primitives
*

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

*
**** 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_RETN  =  'KCHA' $DOMTOT 'CHAM' RETN;
  TRAC CHM_RN  MOD1 'TITR'  ('CHAINE'  'RO at t=' TFIN);
  TRAC CHM_RETN 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);
  
'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;

 
lroan = 'PROG'
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  9.72615E-01  9.38586E-01
  9.05613E-01  8.73668E-01  8.42723E-01  8.12749E-01  7.83722E-01
  7.55614E-01  7.28401E-01  7.02057E-01  6.76559E-01  6.51882E-01 ;

lroan = lroan 'ET' ('PROG'
  6.28004E-01  6.04902E-01  5.82554E-01  5.60938E-01  5.40035E-01
  5.19822E-01  5.00281E-01  4.81392E-01  4.63135E-01  4.45493E-01
  4.28448E-01  4.11981E-01  3.96075E-01  3.80715E-01  3.65884E-01
  3.51565E-01  3.37744E-01  3.24404E-01  3.11533E-01  2.99115E-01
  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01
  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01
  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01);

lroan = lroan 'ET' ('PROG'
  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01  2.98571E-01
  2.98571E-01  2.98571E-01  9.89151E-01  9.89151E-01  9.89151E-01
  9.89151E-01  1.25000E-01  1.25000E-01  1.25000E-01  1.25000E-01
  1.25000E-01  1.25000E-01  1.25000E-01  1.25000E-01  1.25000E-01
  1.25000E-01  1.25000E-01  1.25000E-01  1.25000E-01  1.25000E-01
  1.25000E-01) ;
 
lpan = 'PROG'
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  9.66342E+02  9.24825E+02
  8.84930E+02  8.46600E+02  8.09779E+02  7.74414E+02  7.40454E+02
  7.07847E+02  6.76547E+02  6.46505E+02  6.17676E+02  5.90016E+02 ;

lpan = lpan 'ET' ('PROG'
  5.63482E+02  5.38033E+02  5.13630E+02  4.90233E+02  4.67806E+02
  4.46312E+02  4.25715E+02  4.05984E+02  3.87084E+02  3.68984E+02
  3.51654E+02  3.35065E+02  3.19187E+02  3.03993E+02  2.89458E+02
  2.75555E+02  2.62259E+02  2.49546E+02  2.37395E+02  2.25781E+02
  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02
  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02
  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02) ;

lpan = lpan 'ET' ('PROG'
  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02
  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02  2.25275E+02
  2.25275E+02  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00  1.00000E+00
  1.00000E+00) ;
  
luan = 'PROG'
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  9.73439E-01  2.21738E+00
  3.46133E+00  4.70528E+00  5.94922E+00  7.19317E+00  8.43711E+00
  9.68106E+00  1.09250E+01  1.21689E+01  1.34129E+01  1.46568E+01 ;

luan = luan 'ET' ('PROG'
  1.59008E+01  1.71447E+01  1.83887E+01  1.96326E+01  2.08766E+01
  2.21205E+01  2.33645E+01  2.46084E+01  2.58524E+01  2.70963E+01
  2.83402E+01  2.95842E+01  3.08281E+01  3.20721E+01  3.33160E+01
  3.45600E+01  3.58039E+01  3.70479E+01  3.82918E+01  3.95358E+01
  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01
  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01
  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01) ;
    
luan = luan 'ET' ('PROG'
  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01
  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01  3.95913E+01
  3.95913E+01  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.00000E+00) ;
    
lsan = 'PROG' 
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03 ;

lsan = lsan 'ET' ('PROG'
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03);

lsan = lsan 'ET' ('PROG'
  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03  1.00000E+03
  1.00000E+03  1.00000E+03  2.28438E+02  2.28438E+02  2.28438E+02
  2.28438E+02  1.42582E+01  1.42582E+01  1.42582E+01  1.42582E+01
  1.42582E+01  1.42582E+01  1.42582E+01  1.42582E+01  1.42582E+01
  1.42582E+01  1.42582E+01  1.42582E+01  1.42582E+01  1.42582E+01
  1.42582E+01) ;  
    
lgaman = 'PROG' 
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00 ;

lgaman = lgaman 'ET' ('PROG'   
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00) ;

lgaman = lgaman 'ET' ('PROG'   
  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00  1.23304E+00
  1.23304E+00  1.23304E+00  1.27791E+00  1.27791E+00  1.27791E+00
  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00
  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00
  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00  1.27791E+00
  1.27791E+00) ;  

lyan = 'TABLE'  ;

lyan . 1 = 'PROG'
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02 ;
 
lyan . 1 = lyan . 1  'ET' ('PROG'
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02 );

lyan . 1 = lyan . 1  'ET' ('PROG'
  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02  1.00000E-02
  1.00000E-02  1.00000E-02  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01) ;

lyan . 2 = 'PROG' 
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01 ;

lyan . 2 = lyan . 2 'ET' ('PROG'
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01 );

lyan . 2 = lyan . 2 'ET' ('PROG'
  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01  2.00000E-01
  2.00000E-01  2.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01
  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01
  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01
  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01  4.00000E-01
  4.00000E-01 ) ;

lyan . 3 = 'PROG'   
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01 ;

lyan . 3 = lyan . 3 'ET' ('PROG'
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01);

lyan . 3 = lyan . 3 'ET' ('PROG'
  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01  3.00000E-01
  3.00000E-01  3.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01
  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01
  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01
  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01  1.00000E-01
  1.00000E-01 ) ;            

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)) ;
     

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

'SI' (('MAXIMUM' LV 'ABS') > 1.0D-6) ;
   'ERREUR' 5 ;
'FINSI' ;

*
*** 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' (evp 'ET' evpa) 'TITRE' tp 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evu 'ET' evua) 'TITRE' tu 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evgam 'ET' evgama) 'TITRE' tgam 'XBOR' x0 x1
    'LEGE' TAB1;
    'DESSIN' (evs 'ET' evsa) 'TITRE' ts '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' ;

'FIN' ;
 

© Cast3M 2003 - All rights reserved.
Disclaimer