* fichier : sinebump.dgibi
*********************************************************************
* *
* SINE-SHAPED BUMP *
* *
* CALCUL DE L'ECOULEMENT SUBSONIQUE ISENTROPIQUE STATIONNAIRE DANS *
* UN CANAL *
* *
* BECCANTNI/PAILLERE, *
* UPWIND FLUX SPLITTING SCHEMES FOR THE MULTIDIMENSIONAL EULER *
* EQUATIONS, 1998 *
* *
* BECCANTINI A., DRN/DMT/SEMT/TTMF, NOVEMBRE 98 *
* Modif, 10/07/01, syntaxe de PENT changée *
*********************************************************************
'OPTION' 'ECHO' 0 ;
'OPTION' 'DIME' 2 ;
'OPTION' 'ELEM' 'TRI3' ;
'OPTION' 'TRAC' 'PSC' ;
'MESSAGE' 'A mettre a jours' ;
'FIN' ;
COMPLET = FAUX ;
GRAPH = FAUX ;
NY = 4 ;
NX1 = NY ;
NX2 = 2 '*' NX1 ;
NX3 = NX1 ;
NX = NX1 '+' NX2 '+' NX3 ;
DX = 4.0 '/' NX ;
CFL = 1.0D0 ;
TFIN = 10.0 ;
'SI' COMPLET ;
NRAFF = 3 ;
'SINON' ;
NRAFF = 0 ;
'FINSI' ;
*
*** Methodes possibles :
*
* 'VANLEER'
* 'VLH '
* 'HUSVL '
* 'HUSVLH '
* 'GODUNOV'
METO = 'HUSVL ' ;
***************************************************************
***** PROCEDURE POUR CALCULER LES VARIABLES CONSERVATIVES *****
***************************************************************
'DEBPROC' CONS ;
'ARGUMENT' RN*'CHPOINT' VN* 'CHPOINT' PN*'CHPOINT' GAMN*'CHPOINT'
$MODE*'MMODEL' ;
RN = 'KCHT' $MODE 'SCAL' 'CENTRE' RN ;
PN = 'KCHT' $MODE 'SCAL' 'CENTRE' PN ;
VN = 'KCHT' $MODE 'VECT' 'CENTRE' VN ;
GAMN = 'KCHT' $MODE 'SCAL' 'CENTRE' GAMN ;
RVN = 'KOPS' RN '*' VN ;
RECIN = 'KOPS' 0.5 '*' ('KOPS' RVN 'PSCA' VN) ;
RETER = 'KOPS' PN '/' ('KOPS' GAMN '-' 1) ;
REN = 'KOPS' RETER '+' RECIN ;
'RESPRO' RVN REN ;
'FINPROC' ;
****************************************************************
***** PROCEDURE POUR CALCULER LES VARIABLES ENTROPIE, MACH *****
****************************************************************
'DEBPROC' EMMA ;
'ARGUMENT' RN*'CHPOINT' VN* 'CHPOINT' PN*'CHPOINT' GAMN*'CHPOINT'
$MODE*'MMODEL' ;
RN = 'KCHT' $MODE 'SCAL' 'CENTRE' RN ;
PN = 'KCHT' $MODE 'SCAL' 'CENTRE' PN ;
VN = 'KCHT' $MODE 'VECT' 'CENTRE' VN ;
GAMN = 'KCHT' $MODE 'SCAL' 'CENTRE' GAMN ;
MV = 'KOPS' ('KOPS' VN 'PSCA' VN) '**' 0.5 ;
ASON = 'KOPS' ('KOPS' ('KOPS' PN '/' RN) '*' GAMN) '**' 0.5 ;
MACHN = 'KOPS' MV '/' ASON ;
AN = 'KOPS' PN '/' ('KOPS' RN '**' GAMN) ;
'RESPRO' MACHN AN ;
'FINPROC' ;
*******************************************************
***** PROCEDURE POUR TESTER CONVERGENCE *****
*******************************************************
'DEBPROC' CALCUL ;
'ARGUMENT' RVX*'TABLE' ;
RV = RVX . 'EQEX' ;
KINCO = RV . 'INCO' ;
*KDOMA = RV . 'DOMAINE' ;
KDOMA = RV . 'MODTOT' ;
RNi = 'COPIER' (RV . 'INCO' . 'RNI') ;
RN0 = 'COPIER' (RV . 'INCO' . 'RN0') ;
*
*** RN0 = solution à t = tn_M1;
*
TPS = RV . 'PASDETPS' . 'TPS' ;
DD = RV . 'PASDETPS' . 'NUPASDT' ;
NINTE = 10 ;
NN = DD '/' NINTE ;
LO = ( DD '-' (NINTE '*' NN)) 'EGA' 0 ;
'SI' ( LO ) ;
RNi = 'KCHT' KDOMA 'SCAL' 'CENTRE' RNi ;
RN0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' RN0 ;
ERR = 'KOPS' RNi '-' RN0 ;
ERR = 'ABS' ERR ;
ERR = 'KOPS' ERR '/' RN0;
KINCO . 'ERR' = ERR ;
ELI = 'MAXIMUM' ERR 'ABS' ;
ELI = ('LOG' (ELI + 1.0E-20))/('LOG' 10.) ;
'MESSAGE' ('CHAINE' 'ITER ' DD
' TPS ' TPS ' ERREUR LINF ' ELI );
IT = 'PROG' DD ;
ER = 'PROG' ELI ;
RV . 'INCO' . 'IT' = (RV . 'INCO' . 'IT') 'ET' IT ;
RV . 'INCO' . 'ER' = (RV . 'INCO' . 'ER') 'ET' ER ;
'FINSI' ;
RV . 'INCO' . 'RN0' = 'COPIER' RNi;
'FINPROC' ;
*******************************************************
***** PROCEDURE POUR CALCULER L2 entropie *****
*******************************************************
'DEBPROC' CALCUL2 ;
'ARGUMENT' RVX*'TABLE' ;
RV = RVX . 'EQEX' ;
KINCO = RV . 'INCO' ;
*KDOMA = RV . 'DOMAINE' ;
KDOMA = RV . 'MODTOT' ;
RN = KINCO . 'RNI' ;
GN = KINCO . 'GNI' ;
EN = KINCO . 'ENI' ;
GAMMA = KINCO . 'GAMMA' ;
VN PN = 'PRIM' 'PERFMONO' RN GN EN GAMMA ;
MACHN AN = EMMA RN VN PN GAMMA KDOMA ;
SNi = AN ;
SN0 = 'COPIER' (RV . 'INCO' . 'SN0') ;
*
DD = RV . 'PASDETPS' . 'NUPASDT' ;
NINTE = 10 ;
NN = DD '/' NINTE ;
LO = ( DD '-' (NINTE '*' NN)) 'EGA' 0 ;
'SI' ( LO ) ;
SNi = 'KCHT' KDOMA 'SCAL' 'CENTRE' SNi ;
SN0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' SN0 ;
ERR = 'KOPS' ('KOPS' SNi '-' SN0) '/' SN0 ;
ERR = 'KOPS' ERR '**' 2 ;
UNO = 'KCHT' KDOMA 'SCAL' 'CENTRE' 1.0 ;
CHVOLU = 'DOMA' KDOMA 'XXVOLUM' ;
TOTVOL = 'XTY' UNO CHVOLU ('MOTS' 'SCAL') ('MOTS' 'SCAL') ;
ERRVOL = 'XTY' ERR CHVOLU ('MOTS' 'SCAL') ('MOTS' 'SCAL') ;
EL2 = (ERRVOL '/' TOTVOL) '**' 0.5 ;
'MESSAGE' ('CHAINE'
'ITER ' DD ' ERREUR ENTROPIE L2 ' EL2 );
IT = 'PROG' DD ;
ER = 'PROG' EL2 ;
RV . 'INCO' . 'IT1' = (RV . 'INCO' . 'IT1') 'ET' IT ;
RV . 'INCO' . 'ER1' = (RV . 'INCO' . 'ER1') 'ET' ER ;
'FINSI' ;
RV . 'INCO' . 'SN0' = 'COPIER' SNi;
'FINPROC' ;
*****************************************************
*****************************************************
** PROCEDURE EXEX POUR FORMULATION VF COMPRESSIBLE **
** CAS MONOESPECE **
*****************************************************
*****************************************************
'DEBPROC' EXEX ;
'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' 1));
'MESSAGE' 'EULER 1E ???';
'ERREUR' 21;
'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' ;
******************************************
**** Boucle Sur les Pas de Temps ****
******************************************
* No limiteurs des pentes
ALSF0 = 'KCHT' (KDOMA2.'FRONT') 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0;
ALVF0 = 'KCHT' (KDOMA2.'FRONT') 'VECT'
'CENTRE' 'COMP' 'P1' 'P2' (0.0 0.0);
ALR0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' 'COMP' 'P1' 1.0 ;
ALR0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' 'COMP' 'P1'ALR0 ALSF0;
ALV0 = 'KCHT' KDOMA 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' (1.0 1.0) ;
ALV0 = 'KCHT' KDOMA 'VECT' 'CENTRE' 'COMP' 'P1' 'P2' ALV0 ALVF0;
ALP0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' 'COMP' 'P1' 1.0 ;
ALP0 = 'KCHT' KDOMA 'SCAL' 'CENTRE' 'COMP' 'P1' ALP0 ALSF0;
*
**** Evaluation de coeff pour le calcule des pentes
*
KINCO . 'V' KINCO . 'P' = 'PRIM' 'PERFMONO'
(KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI')
(KINCO. 'GAMMA');
GRADR CHPLIM COEFR = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'NOLIMITE'
(KINCO . 'RNI');
GRADP CHPLIM COEFP = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'NOLIMITE'
(KINCO . 'P');
GRADV CHPLIM COEFV = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'NOLIMITE'
(KINCO . 'V');
I = 0 ;
'REPETER' BLOC1 (RV . 'ITMA') ;
I = I + 1 ;
*
***** Les variables primitives
*
KINCO . 'V' KINCO . 'P' = 'PRIM' 'PERFMONO'
(KINCO . 'RNI') (KINCO . 'GNI') (KINCO . 'ENI')
(KINCO. 'GAMMA');
'SI' (ORD_ESP 'EGA' 1) ;
ROF VITF PF GAMF =
'PRET' 'PERFMONO' ORD_ESP ORD_TPS KDOMA
(KINCO . 'RNI') (KINCO . 'V')
(KINCO . 'P') (KINCO . 'GAMMA');
'SINON';
*
***** Ordre 2 en espace => calcul des pentes
*
ALR = 'COPIER' ALR0 ;
ALP = 'COPIER' ALP0 ;
ALV = 'COPIER' ALV0 ;
GRADR CHPLIM = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'NOLIMITE'
(KINCO . 'RNI') 'GRADGEO' COEFR ;
GRADP CHPLIM = 'PENT' KDOMA 'CENTRE' 'EULESCAL' 'NOLIMITE'
(KINCO . 'P') 'GRADGEO' COEFP ;
GRADV CHPLIM = 'PENT' KDOMA 'CENTRE' 'EULEVECT' 'NOLIMITE'
(KINCO . 'V') 'GRADGEO' COEFV ;
'SI' (ORD_TPS 'EGA' 1);
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORD_ESP ORD_TPS
KDOMA
(KINCO . 'RNI') GRADR ALR
(KINCO . 'V') GRADV ALV
(KINCO . 'P') GRADP ALP
(KINCO . 'GAMMA') ;
'SINON' ;
*
********* Ordre 2 en temps
*
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORD_ESP ORD_TPS
KDOMA
(KINCO . 'RNI') GRADR ALR
(KINCO . 'V') GRADV ALV
(KINCO . 'P') GRADP ALP
(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 . 'GAMMAF' = GAMF;
*
********* 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' ********
************************************************************
*
**** Calcul du DT
*
'SI' ('EXISTE' RV 'DTI');
*
* Il faut comparer DTIMP, (DTCONV '*' CFL)
*
DTI = 'MINIMUM' ('PROG'
(((RV . 'DTI') '/' CFL) (RV . 'PASDETPS' . 'DTCONV')
));
'SINON';
DTI = (RV . 'PASDETPS' . 'DTCONV') ;
'FINSI';
RV . 'PASDETPS' . 'DELTAT' = DTI ;
*
**** On verifie que (DTI * CFL) < (TFIN '-' TMPS)
*
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 impose les CL ****
******************************
*
*
'SI' LOGLIM;
PROLIM RV ;
'FINSI' ;
'SI' LOGQUIT;
'QUITTER' BLOC1;
'FINSI';
'FIN' BLOC1 ;
********************************************************
******** On detrui les choses qui ne servent plus ****
********************************************************
*
* Les variables primitives
*
'DETR' ( KINCO . 'V');
'DETR' ( KINCO . 'P');
'OUBL' KINCO 'V';
'OUBL' KINCO 'P';
*
* Les MCHAML faces
*
'DETR' ROF ;
'DETR' VITF ;
'DETR' PF ;
'DETR' GAMF;
'OUBL' KINCO 'RNF';
'OUBL' KINCO 'VITNF';
'OUBL' KINCO 'PNF';
'OUBL' KINCO 'GAMMAF';
*
* Les pentes 'ET' les limiteurs
*
'SI' (ORD_ESP 'EGA' 2);
'DETR' GRADR;
'DETR' GRADP;
'DETR' GRADV;
'DETR' ALR;
'DETR' ALP;
'DETR' ALV;
'FINSI' ;
********************************************
**** FIN de Boucle Sur les Pas de Temps ***
********************************************
'FINPROC' ;
*****************************************************
*****************************************************
** FIN PROCEDURE EXEX **
*****************************************************
*****************************************************
*****************************************************
*****************************************************
***** PROCEDURE PROLIM *****
*****************************************************
*****************************************************
*
*
**** Cas Euler Mono especes
*
'DEBPROC' PROLIM ;
'ARGUMENT' RV*TABLE ;
*
**** RV . 'DOMAINE' -> KDOMA
*
KDOMA = RV . 'DOMAINE' ;
KINCO = RV . 'INCO' ;
KFRONT = RV . 'MODFRONT' ;
* Domaine et connectivite entree subsonic
KENTSUB = KDOMA . 'ENTSUB' ;
KCONENT = KDOMA . 'CONENT' ;
* Domaine et connectivite sortie subsonic
KSORSUB = KDOMA . 'SORSUB' ;
KCONSOR = KDOMA . 'CONSOR' ;
RNPE = 'KCHT' KFRONT 'SCAL' 'CENTRE'
('KPRO' (KINCO . 'RNI') KCONENT)
('KPRO' (KINCO . 'RNI') KCONSOR) ;
GNPE = 'KCHT' KFRONT 'VECT' 'CENTRE'
('KPRO' (KINCO . 'GNI') KCONSOR)
('KPRO' (KINCO . 'GNI') KCONENT) ;
ENPE = 'KCHT' KFRONT 'SCAL' 'CENTRE'
('KPRO' (KINCO . 'ENI') KCONENT)
('KPRO' (KINCO . 'ENI') KCONSOR) ;
GAPE = 'KCHT' KFRONT 'SCAL' 'CENTRE'
(KINCO . 'GAMMA' );
SCAGAM = KINCO . 'SCALGAM' ;
GM1PE = SCAGAM '-' 1.0 ;
UNSGM1 = 1.0 '/' GM1PE ;
VNPE PNPE = 'PRIM' 'PERFMONO' RNPE GNPE ENPE GAPE ;
*
*
* R1 = u '-' (2 '/' (gamma '-' 1)) '*' C (L2 = u '-' 'C)
* R2 = s (L1 = u)
* R3 = u '+' (2 '/' (gamma '-' 1)) '*' C (L2 = u '+' C)
*
UXPE = 'EXCO' 'UX' VNPE ;
UYPE = 'EXCO' 'UY' VNPE 'UY' ;
ASPE = (2.0 '/' GM1PE) '*' ((GAPE '*' PNPE '/' RNPE ) '**' 0.5) ;
R1PE = UXPE '-' ASPE ;
R2PE = PNPE '/' (RNPE '**' SCAGAM) ;
R3PE = UXPE '+' ASPE ;
*
**** Entree subsonic (u > 0)
*
* R2, R3, Uy sortent
* R1 sort
*
**** Sortie subsonic (u > 0)
*
* R1 entre
* R2, R3, Uy sortent
*
*
R1PE = 'KCHT' KFRONT 'SCAL' 'CENTRE' R1PE
(KINCO . 'R1PE') ;
R2PE = 'KCHT' KFRONT 'SCAL' 'CENTRE' R2PE
(KINCO . 'R2PE') ;
R3PE = 'KCHT' KFRONT 'SCAL' 'CENTRE' R3PE
(KINCO . 'R3PE') ;
UYPE = 'KCHT' KFRONT 'SCAL' 'CENTRE' 'COMP' 'UY'
UYPE (KINCO . 'UYPE') ;
VNE = 'KCHT' KFRONT 'VECT' 'CENTRE'
('NOMC' 'UX' (0.5 '*' (R1PE '+' R3PE))) UYPE ;
ASE2 = 'KCHT' KFRONT 'SCAL' 'CENTRE'
(((GM1PE '/' 4.0) '*' (R3PE '-' R1PE)) '**' 2 ) ;
RNE = 'KCHT' KFRONT 'SCAL' 'CENTRE'
((ASE2 '/' (R2PE '*' GAPE)) '**' UNSGM1) ;
PNE = 'KOPS' ('KOPS' ASE2 '*' RNE) '/' GAPE ;
GNE ENE = CONS RNE VNE PNE GAPE KFRONT ;
KINCO . 'RNI' = 'KCHT' KDOMA 'SCAL' 'CENTRE'
(KINCO . 'RNI') RNE ;
KINCO . 'GNI' = 'KCHT' KDOMA 'VECT' 'CENTRE'
(KINCO . 'GNI') GNE ;
KINCO . 'ENI' = 'KCHT' KDOMA 'SCAL' 'CENTRE'
(KINCO . 'ENI') ENE ;
'FINPROC' ;
*****************************************************
*****************************************************
***** FIN PROCEDURE PROLIM *****
*****************************************************
*****************************************************
******************
**** MAILLAGE ****
******************
A0 = -2.0 0.0 ;
A1 = -1.0 0.0 ;
A2 = 1.0 0.0 ;
A3 = 2.0 0.0 ;
A4 = 2.0 1.0 ;
A5 = -2.0 1.0 ;
*
**** LIGB
*
LIGB1 = A0 'DROIT' NX1 A1 ;
* LIGB2 (On utilise un propriete de 'ET' ; 'SI' 'ET' change ?)
xcel = ('COORDONNEE' 1 A1) '+' DX ;
ycel = 0.1 '*' ( 1.0 '+' ('COS' (180 '*' xcel)));
ACEL = xcel ycel ;
LIGB2 = A1 'DROIT' 1 ACEL ;
'REPETER' BL1 (NX2 '-' 2) ;
ACEL0 = ACEL ;
xcel = xcel '+' DX ;
ycel = 0.1 '*' ( 1.0 '+' ('COS' (180 '*' xcel)));
ACEL = xcel ycel ;
LIGB2 = LIGB2 'ET' (ACEL0 'DROIT' 1 ACEL) ;
'FIN' BL1;
LIGB2 = LIGB2 'ET' (ACEL 'DROIT' 1 A2) ;
LIGB3 = A2 'DROIT' NX3 A3 ;
LIGB = LIGB1 'ET' LIGB2 'ET' LIGB3 ;
*
**** LIGH
*
LIGH = A4 'DROIT' NX A5 ;
*
*** LIGG
*
LIGG = A5 'DROIT' NY A0 ;
*
**** LIGD
*
LIGD = A3 'DROIT' NY A4 ;
LIGT = LIGB 'ET' LIGD 'ET' LIGH 'ET' LIGG ;
*
**** Le domaine
*
DOMINT = LIGT 'SURFACE' 'PLANE' ;
DOMINT = 'DEDU' DOMINT LIGT LIGT 'REGU' ;
*
**** Le rafinement
*
*
**** C'est la Perle qui a fait ça quand il etait encore tres brillant!!!
* (Avant la lettre de l'Arme!!!)
* Mais il va bientot etre un vrai homme!!!
*
DOMCEL = DOMINT ;
'SI' (nraff > 0) ;
'REPETER' bcl nraff ;
mttemp = 'CHANGER' DOMCEL 'QUADRATIQUE' ;
$mtt = 'DOMA' mttemp 'MACRO' ;
DOMCEL = ($mtt . 'MAILLAGE') ;
'OUBLIER' mttemp ;
'OUBLIER' $mtt ;
DOMINT = DOMCEL ;
LIGCON = 'CONTOUR' DOMINT ;
*
**** Je doit transler le points du BUMP (operateur FORME)
*
NLIGB2 = LIGCON 'ELEM' 'COMP' A1 A2 ;
MAILB = 'CHANGER' NLIGB2 'POI1';
MAILB0 = MAILB 'PLUS' (0.0D0 0.0D0);
* Listreels des deplacements
NP = 'NBNO' MAILB ;
LISTX = 'PROG' NP '*' 0.0 ;
LISTY = 'PROG' NP '*' 0.0 ;
'REPETER' BL1 ('NBNO' MAILB) ;
xcel ycel0 = 'COORDONNEE' (MAILB 'POIN' &BL1);
ycel = 0.1 '*' ( 1.0 '+' ('COS' (180 '*' xcel)));
'REMPLACER' LISTY &BL1 (ycel '-' ycel0) ;
'FIN' BL1 ;
DEPCH = 'MANUEL' 'CHPO' MAILB 2 'UX' LISTX 'UY' LISTY ;
'FORME' DEPCH ;
'FIN' bcl ;
DX = DX '/' (NRAFF '*' 2.0 ) ;
'SINON' ;
LIGCON = 'CONTOUR' DOMINT ;
'FINSI' ;
'MENAGE' ;
*
**** Les C.L.
*
NLIGD = LIGCON 'ELEM' 'COMP' A3 A4 ;
NLIGG = LIGCON 'ELEM' 'COMP' A5 A0 ;
'OPTION' 'ELEM' 'QUA4' ;
FG = (NLIGG 'TRANSLATION' 1 ((-1.0 '*' DX) 0.0)) 'COULEUR' 'ROUGE' ;
FD = (NLIGD 'TRANSLATION' 1 (DX 0.0)) 'COULEUR' 'ROUGE' ;
FRONT = FG 'ET' FD ;
*
**** Domaine '+' CL
*
DOMTOT = DOMINT 'ET' FG 'ET' FD ;
'ELIMINATION' DOMTOT 0.0001 ;
**********************
*** OBJETS MODELES ***
**********************
MDOMTOT = 'CHANGER' DOMTOT 'QUAF' ;
MDOMINT = 'CHANGER' DOMINT 'QUAF' ;
MFG = 'CHANGER' FG 'QUAF' ;
MFD = 'CHANGER' FD 'QUAF' ;
MFRONT = 'CHANGER' FRONT 'QUAF' ;
'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MFG 'ET' MFD 'ET' MFRONT) 1.E-5;
MDNS = 'EULER' ;
$DOMTOT = 'MODE' MDOMTOT MDNS ;
$DOMINT = 'MODE' MDOMINT MDNS ;
$FG = 'MODE' MFG MDNS ;
$FD = 'MODE' MFD MDNS ;
$FRONT = 'MODE' MFRONT MDNS ;
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE' ) 'THERMIQUE';
'FINSI' ;
*
**** On doit imposer un'entree subsonic (u>0 i.e. 3 condition a imposer) et une
* sortie subsonic (1 condition)
*
*
**** Maillage entree subsonic
*
POIN0 = NLIGG 'POIN' 1;
X1 Y1 = 'COORDONNEE' POIN0;
'REPETER' BLLIM (('NBNO' NLIGG) '-' 1) ;
X0 = X1 ;
Y0 = Y1 ;
POIN0 = NLIGG 'POIN' (&BLLIM '+' 1) ;
X1 Y1 = 'COORDONNEE' POIN0 ;
XFAC = (X0 '+' X1) '/' 2 ;
YFAC = (Y0 '+' Y1) '/' 2 ;
PFAC = ('DOMA' $DOMINT 'FACE') 'POIN' 'PROC' (XFAC YFAC);
GEOFAC1 = ('DOMA' $DOMINT 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
GEOFAC2 = ('DOMA' $FG 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
*
**** Tranformation en POI1
*
GEO1POI1 = 'CHANGER' 'POI1' GEOFAC1 ;
PCEL11 = GEO1POI1 'POIN' 1 ;
PCEL12 = GEO1POI1 'POIN' 2 ;
GEO2POI1 = 'CHANGER' 'POI1' GEOFAC2 ;
PCEL21 = GEO2POI1 'POIN' 1 ;
PCEL22 = GEO2POI1 'POIN' 2 ;
*
**** Il faur verifier que PFAC = PCEL12 = PCEL22
* ('NBEL' GEO1POI1) = ('NBEL' GEO2POI1) = 2
*
'SI' ( ('NBEL' GEO1POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( ('NBEL' GEO2POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL12 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL22 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
*
*** Creation d'un maillage SEG2
*
'SI' (&BLLIM 'EGA' 1);
ENTSUB = 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'VERT' ;
'SINON' ;
ENTSUB = ENTSUB 'ET'
( 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'VERT' );
'FINSI' ;
'FIN' BLLIM ;
*
**** Maillage sortie subsonic
*
POIN0 = NLIGD 'POIN' 1;
X1 Y1 = 'COORDONNEE' POIN0;
'REPETER' BLLIM (('NBNO' NLIGD) '-' 1) ;
X0 = X1 ;
Y0 = Y1 ;
POIN0 = NLIGD 'POIN' (&BLLIM '+' 1) ;
X1 Y1 = 'COORDONNEE' POIN0 ;
XFAC = (X0 '+' X1) '/' 2 ;
YFAC = (Y0 '+' Y1) '/' 2 ;
PFAC = ('DOMA' $DOMINT 'FACE') 'POIN' 'PROC' (XFAC YFAC);
GEOFAC1 = ('DOMA' $DOMINT 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
GEOFAC2 = ('DOMA' $FD 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
*
**** Tranformation en POI1
*
GEO1POI1 = 'CHANGER' 'POI1' GEOFAC1 ;
PCEL11 = GEO1POI1 'POIN' 1 ;
PCEL12 = GEO1POI1 'POIN' 2 ;
GEO2POI1 = 'CHANGER' 'POI1' GEOFAC2 ;
PCEL21 = GEO2POI1 'POIN' 1 ;
PCEL22 = GEO2POI1 'POIN' 2 ;
*
**** Il faur verifier que PFAC = PCEL12 = PCEL22
* ('NBEL' GEO1POI1) = ('NBEL' GEO2POI1) = 2
*
'SI' ( ('NBEL' GEO1POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( ('NBEL' GEO2POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL12 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL22 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
*
*** Creation d'un maillage SEG2
*
'SI' (&BLLIM 'EGA' 1);
SORSUB = 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'VERT' ;
'SINON' ;
SORSUB = SORSUB 'ET'
( 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'VERT' );
'FINSI' ;
'FIN' BLLIM ;
'SI' GRAPH ;
'TRACER' (DOMTOT 'ET' SORSUB 'ET' ENTSUB)
'TITRE' 'Maillage et conditions aux bords' ;
'FINSI' ;
*
*** C.L. 'ET' initiales
*
RO_INF = 1.4D0 ;
P_INF = 1.0D0 ;
U_INF = 0.5D0 ;
GAM = 1.4D0;
RN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RO_INF ;
VN0 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (U_INF 0.0) ;
PN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' P_INF ;
GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' GAM ;
GN0 REN0 = CONS RN0 VN0 PN0 GAMMA $DOMTOT ;
MACHN0 AN0 = EMMA RN0 VN0 PN0 GAMMA $DOMTOT ;
******************
* TABLE EQUATION *
******************
NITER = 500000 ;
RV = 'EQEX' ('DOMA' $DOMTOT 'TABLE') 'ITMA' NITER 'ALFA' CFL
'TPSI' 0. 'TFINAL' TFIN
*
***** Options : VF = volumes finis
* CONS = conservative
* EULER = euler monoespece
* VANLEER = methode
'OPTI' 'VF' 'CONS' 'EULER' METO
*
***** Procedure 'CALCUL'
*
'ZONE' $DOMTOT 'OPER' 'CALCUL'
*
***** Procedure 'CALCUL2'
*
'ZONE' $DOMTOT 'OPER' 'CALCUL2'
*
***** Operateur 'KONV'
*
'ZONE' $DOMTOT 'OPER' 'KONV'
*
***** Arguments de 'KONV' (maximum 8 chatacters)
*
'RNF' 'VITNF' 'PNF' 'GAMMAF' 'REPF'
*
***** LIST des inconnues
*
'INCO' 'RNI' 'GNI' 'ENI';
*
*** La table RV . INCO (de soustype INCO);
*
RV . 'INCO' = TABLE 'INCO' ;
*
*** Stokage des inconnues des equations d'Euler.
*
RV . 'INCO' . 'RNI' = 'COPIER' RN0 ;
RV . 'INCO' . 'GNI' = 'COPIER' GN0 ;
RV . 'INCO' . 'ENI' = 'COPIER' REN0 ;
*
*** GAMMA
*
RV . 'INCO' . 'GAMMA' = GAMMA ;
RV . 'INCO' . 'SCALGAM' = GAM ;
*
*** CONDITIONS LIMITS
*
* Invariants de Riemann 1D
*
A_INF = (((GAM '*' P_INF) '/' RO_INF) '**' 0.5) '*'
(2.0 '/' (GAM '-' 1.0)) ;
R1 = U_INF '-' A_INF ;
R2 = P_INF '/' (RO_INF '**' GAM) ;
R3 = U_INF '+' A_INF ;
RV . 'INCO' . 'CLIM' = VRAI;
('DOMA' $DOMTOT 'TABLE') . 'FRONT' = 'DOMA' $FRONT 'TABLE' ;
* Entree subsonique
('DOMA' $DOMTOT 'TABLE') . 'ENTSUB' = 'DOMA' $FG 'TABLE' ;
('DOMA' $DOMTOT 'TABLE') . 'CONENT' = ENTSUB ;
RV . 'INCO' . 'R2PE' = 'KCHT' $FG 'SCAL' 'CENTRE' R2 ;
RV . 'INCO' . 'R3PE' = 'KCHT' $FG 'SCAL' 'CENTRE' R3 ;
RV . 'INCO' . 'UYPE' = 'KCHT' $FG 'SCAL' 'CENTRE' 'COMP' 'UY' 0.0 ;
*Sortie subsonique
('DOMA' $DOMTOT 'TABLE') . 'SORSUB' = 'DOMA' $FD 'TABLE' ;
('DOMA' $DOMTOT 'TABLE') . 'CONSOR' = SORSUB ;
RV . 'INCO' . 'R1PE' = 'KCHT' $FD 'SCAL' 'CENTRE' R1 ;
*
**** Ordre en espace
* Ordre en temps
*
IT = 1 ;
IE = 1 ;
RV . 'ORDRETPS' = IT ;
RV . 'ORDREESP' = IE ;
*
**** Convergence
*
RV . 'INCO' . 'IT' = 'PROG' ;
RV . 'INCO' . 'ER' = 'PROG' ;
RV . 'INCO' . 'IT1' = 'PROG' ;
RV . 'INCO' . 'ER1' = 'PROG' ;
RV . 'INCO' . 'RN0' = 'COPIER' RN0 ;
RV . 'INCO' . 'SN0' = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
(P_INF '/' (RO_INF '**' 1.4));
*???
RV . 'MODTOT' = $DOMTOT ;
RV . 'MODFRONT' = $FRONT ;
*
*
***********************************
*** Execution EXEX ***
***********************************
*
'MESSAGE' ;
'MESSAGE' '**************************';
'MESSAGE' ('CHAINE' 'METHODE : ' METO) ;
'MESSAGE' '**************************';
'MESSAGE' ;
RV . 'INCO' . 'V' = 'COPIER' VN0 ;
RV . 'INCO' . 'P' = 'COPIER' PN0 ;
'TEMPS' ;
EXEX RV ;
'TEMPS' ;
TFIN = RV . 'PASDETPS' . 'TPS' ;
ERR = RV . 'INCO' . 'ERR' ;
RN = RV . 'INCO' . 'RNI' ;
GN = RV . 'INCO' . 'GNI' ;
REN = RV . 'INCO' . 'ENI' ;
VN PN = 'PRIM' 'PERFMONO' RN GN REN (RV . 'INCO'. 'GAMMA');
MACHN AN = EMMA RN VN PN GAMMA $DOMTOT ;
EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
(RV.INCO.'ER') ;
AS = ((GAMMA '*' PN '/' RN) '**' 0.5) '*' ( 2.0 '/' (GAM '-' 1.0)) ;
UX = 'EXCO' 'UX' VN ;
UY = 'EXCO' 'UY' VN ;
R1 = UX '-' AS ;
R2 = AN ;
R3 = UX '+' AS ;
'SI' GRAPH ;
*
*** Invariants de Riemann pour les equations 1D
*
CHM_R1 = 'KCHA' $DOMTOT 'CHAM' R1 ;
CHM_R2 = 'KCHA' $DOMTOT 'CHAM' R2 ;
CHM_R3 = 'KCHA' $DOMTOT 'CHAM' R3 ;
'TRACER' MOD1 CHM_R1 'TITRE' 'R1';
'TRACER' MOD1 CHM_R2 'TITRE' 'R2' ;
'TRACER' MOD1 CHM_R3 'TITRE' 'R3' ;
*
CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
CHM_PN = 'KCHA' $DOMTOT 'CHAM' PN ;
CHM_AN = 'KCHA' $DOMTOT 'CHAM' AN ;
CHM_MN = 'KCHA' $DOMTOT 'CHAM' MACHN ;
CHM_UNY = 'KCHA' $DOMTOT 'CHAM' ('EXCO' 'UY' VN) ;
'TRACER' MOD1 CHM_RN 'TITRE' 'Ro';
'TRACER' MOD1 CHM_PN 'TITRE' 'P' ;
'TRACER' MOD1 CHM_AN 'TITRE' 'Entropie' ;
'TRACER' MOD1 CHM_MN 'TITRE' 'Mach' ;
'TRACER' MOD1 CHM_UNY 'TITRE' 'UY' ;
'DESSIN' EVOL4 'XBOR' 0. (1.5 '*' ('MAXI' (RV . 'INCO' .'IT') ))
'TITRE' 'Erreur Linf sur ro' ;
'FINSI' ;
*
**** Controle sur L_inf, L_2 ENTROPIE
*
AN_INF = 1.0D0 '/' (1.4 '**' 1.4) ;
SIGMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'SIGMA'
('NOMC' 'SIGMA' ((AN '/' AN_INF) '-' 1.0)) ;
LINF_SIG = 'MAXIMUM' SIGMA 'ABS' ;
'SI' COMPLET ;
'SI' (LINF_SIG > 1.5D-2) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme infinite sur entropie ' LINF_SIG) ;
'ERREUR' 5;
'FINSI' ;
'SINON' ;
'SI' (LINF_SIG > 5D-2) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme infinite sur entropie ' LINF_SIG) ;
'ERREUR' 5;
'FINSI' ;
'FINSI' ;
SIGMAI2 = 'KCHT' $DOMINT 'SCAL' 'CENTRE' 'COMP' 'SIGMA'
(SIGMA '**' 2);
'DOMA' $DOMINT 'VOLUME' ;
CHPUN = 'KCHT' $DOMINT 'SCAL' 'CENTRE' 1.0 ;
M1 = 'MOTS' 'SCAL' ;
M2 = 'MOTS' 'SIGMA' ;
TOTVOL = 'XTY' ('DOMA' $DOMINT 'XXVOLUM') CHPUN M1 M1;
L2SIGMA = ('XTY' ('DOMA' $DOMINT 'XXVOLUM') SIGMAI2 M1 M2 )
'/' TOTVOL ;
L2SIGMA = L2SIGMA '**' 0.5 ;
'SI' COMPLET ;
'SI' (L2SIGMA > 5D-3) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme 2 sur entropie ' L2SIGMA) ;
'ERREUR' 5;
'FINSI' ;
'SINON' ;
'SI' (L2SIGMA > 1.2D-2) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme 2 sur entropie ' L2SIGMA) ;
'ERREUR' 5;
'FINSI' ;
'FINSI' ;
ERR_CON = 'EXTRAIRE' (RV . 'INCO' .'ER') ('DIME' (RV . 'INCO' .'ER')) ;
'SI' (ERR_CON > -3.5) ;
'MESSAGE' 'Probleme de convergence' ;
'ERREUR' 5 ;
'FINSI' ;
'SI' COMPLET ;
*
**** Calcul aux deuxieme ordre en espace et en temps
*
'OUBLIER' RV;
MENAGE ;
******************
* TABLE EQUATION *
******************
NITER = 500000 ;
RV = 'EQEX' ('DOMA' $DOMTOT 'TABLE') 'ITMA' NITER 'ALFA' CFL
'TPSI' 0. 'TFINAL' TFIN
*
***** Options : VF = volumes finis
* CONS = conservative
* EULER = euler monoespece
* VANLEER = methode
'OPTI' 'VF' 'CONS' 'EULER' METO
*
***** Procedure 'CALCUL'
*
'ZONE' $DOMTOT 'OPER' 'CALCUL'
*
***** Procedure 'CALCUL2'
*
'ZONE' $DOMTOT 'OPER' 'CALCUL2'
*
***** Operateur 'KONV'
*
'ZONE' $DOMTOT 'OPER' 'KONV'
*
***** Arguments de 'KONV' (maximum 8 chatacters)
*
'RNF' 'VITNF' 'PNF' 'GAMMAF' 'REPF'
*
***** LIST des inconnues
*
'INCO' 'RNI' 'GNI' 'ENI';
*
*** 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 ;
*
*** GAMMA
*
RV . 'INCO' . 'GAMMA' = GAMMA ;
RV . 'INCO' . 'SCALGAM' = GAM ;
*
*** CONDITIONS LIMITS
*
* Invariants de Riemann 1D
*
A_INF = (((GAM '*' P_INF) '/' RO_INF) '**' 0.5) '*'
(2.0 '/' (GAM '-' 1.0)) ;
R1 = U_INF '-' A_INF ;
R2 = P_INF '/' (RO_INF '**' GAM) ;
R3 = U_INF '+' A_INF ;
RV . 'INCO' . 'CLIM' = VRAI;
$DOMTOT . 'FRONT' = $FRONT ;
* Entree subsonique
$DOMTOT . 'ENTSUB' = $FG ;
$DOMTOT . 'CONENT' = ENTSUB ;
RV . 'INCO' . 'R2PE' = 'KCHT' $FG 'SCAL' 'CENTRE' R2 ;
RV . 'INCO' . 'R3PE' = 'KCHT' $FG 'SCAL' 'CENTRE' R3 ;
RV . 'INCO' . 'UYPE' = 'KCHT' $FG 'SCAL' 'CENTRE' 'COMP' 'UY' 0.0 ;
*Sortie subsonique
$DOMTOT . 'SORSUB' = $FD ;
$DOMTOT . 'CONSOR' = SORSUB ;
RV . 'INCO' . 'R1PE' = 'KCHT' $FD 'SCAL' 'CENTRE' R1 ;
*
**** Ordre en espace
* Ordre en temps
*
IT = 2 ;
IE = 2 ;
RV . 'ORDRETPS' = IT ;
RV . 'ORDREESP' = IE ;
*
**** Convergence
*
RV . 'INCO' . 'IT' = 'PROG' ;
RV . 'INCO' . 'ER' = 'PROG' ;
RV . 'INCO' . 'IT1' = 'PROG' ;
RV . 'INCO' . 'ER1' = 'PROG' ;
RV . 'INCO' . 'RN0' = 'COPIER' RN0 ;
RV . 'INCO' . 'SN0' = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
(P_INF '/' (RO_INF '**' 1.4));
*
*
***********************************
*** Execution EXEX ***
***********************************
*
'MESSAGE' ;
'MESSAGE' '**************************';
'MESSAGE' ('CHAINE' 'METHODE : ' METO) ;
'MESSAGE' '**************************';
'MESSAGE' ;
RV . 'INCO' . 'V' = 'COPIER' VN0 ;
RV . 'INCO' . 'P' = 'COPIER' PN0 ;
'TEMPS' ;
EXEX RV ;
'TEMPS' ;
TFIN = RV . 'PASDETPS' . 'TPS' ;
ERR = RV . 'INCO' . 'ERR' ;
RN = RV . 'INCO' . 'RNI' ;
GN = RV . 'INCO' . 'GNI' ;
REN = RV . 'INCO' . 'ENI' ;
VN PN = 'PRIM' 'PERFMONO' RN GN REN (RV . 'INCO'. 'GAMMA');
MACHN AN = EMMA RN VN PN GAMMA $DOMTOT ;
EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
(RV.INCO.'ER') ;
AS = ((GAMMA '*' PN '/' RN) '**' 0.5) '*' ( 2.0 '/' (GAM '-' 1.0)) ;
UX = 'EXCO' 'UX' VN ;
UY = 'EXCO' 'UY' VN ;
R1 = UX '-' AS ;
R2 = AN ;
R3 = UX '+' AS ;
'SI' GRAPH ;
*
*** Invariants de Riemann pour les equations 1D
*
CHM_R1 = 'KCHA' $DOMTOT 'CHAM' R1 ;
CHM_R2 = 'KCHA' $DOMTOT 'CHAM' R2 ;
CHM_R3 = 'KCHA' $DOMTOT 'CHAM' R3 ;
'TRACER' MOD1 CHM_R1 'TITRE' 'R1';
'TRACER' MOD1 CHM_R2 'TITRE' 'R2' ;
'TRACER' MOD1 CHM_R3 'TITRE' 'R3' ;
*
CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
CHM_PN = 'KCHA' $DOMTOT 'CHAM' PN ;
CHM_AN = 'KCHA' $DOMTOT 'CHAM' AN ;
CHM_MN = 'KCHA' $DOMTOT 'CHAM' MACHN ;
CHM_UNY = 'KCHA' $DOMTOT 'CHAM' ('EXCO' 'UY' VN) ;
'TRACER' MOD1 CHM_RN 'TITRE' 'Ro';
'TRACER' MOD1 CHM_PN 'TITRE' 'P' ;
'TRACER' MOD1 CHM_AN 'TITRE' 'Entropie' ;
'TRACER' MOD1 CHM_MN 'TITRE' 'Mach' ;
'TRACER' MOD1 CHM_UNY 'TITRE' 'UY' ;
'DESSIN' EVOL4 'XBOR' 0. (1.5 '*' ('MAXI' (RV . 'INCO' .'IT') ))
'TITRE' 'Erreur Linf sur ro' ;
'FINSI' ;
*
**** Controle sur L_inf, L_2 ENTROPIE
*
AN_INF = 1.0D0 '/' (1.4 '**' 1.4) ;
SIGMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'SIGMA'
('NOMC' 'SIGMA' ((AN '/' AN_INF) '-' 1.0)) ;
LINF_SIG = 'MAXIMUM' SIGMA 'ABS' ;
'SI' COMPLET ;
'SI' (LINF_SIG > 6D-4) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme infinite sur entropie ' LINF_SIG) ;
'ERREUR' 5;
'FINSI' ;
'SINON' ;
'SI' (LINF_SIG > 8D-3) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme infinite sur entropie ' LINF_SIG) ;
'ERREUR' 5;
'FINSI' ;
'FINSI' ;
SIGMAI2 = 'KCHT' $DOMINT 'SCAL' 'CENTRE' 'COMP' 'SIGMA'
(SIGMA '**' 2);
'DOMA' $DOMINT 'VOLUME' ;
CHPUN = 'KCHT' $DOMINT 'SCAL' 'CENTRE' 1.0 ;
M1 = 'MOTS' 'SCAL' ;
M2 = 'MOTS' 'SIGMA' ;
TOTVOL = 'XTY' ($DOMINT . 'XXVOLUM') CHPUN M1 M1;
L2SIGMA = ('XTY' ($DOMINT . 'XXVOLUM') SIGMAI2 M1 M2 ) '/' TOTVOL ;
L2SIGMA = L2SIGMA '**' 0.5 ;
'SI' COMPLET ;
'SI' (L2SIGMA > 6D-5) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme 2 sur entropie ' L2SIGMA) ;
'ERREUR' 5;
'FINSI' ;
'SINON' ;
'SI' (L2SIGMA > 5D-3) ;
'MESSAGE' ('CHAINE' METO ' ' 'Ordre ' IE ' ' IT);
'MESSAGE' ('CHAINE' 'Norme 2 sur entropie ' L2SIGMA) ;
'ERREUR' 5;
'FINSI' ;
'FINSI' ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer