Download tube3D_multi_ther.dgibi
* 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