* fichier : pent3D1.dgibi
***********************************************************
**** Finite Volume, "Cell-Centred Formulation". ****
**** PENT, operator to compute gradients and limiters ****
**** ****
**** A. BECCANTINI, TTMF JANUARY 2001 ****
**** Modif, 10/07/01, syntaxe de PENT changée ****
***********************************************************
'OPTION' 'ECHO' 0 'DIME' 2
'ELEM' 'TRI3'
'TRAC' 'X' ;
GRAPH = FAUX ;
* GRAPH = VRAI ;
*
*** MESH
*
'OPTION' 'DIME' 3 'ELEM' 'CUB8' 'ECHO' 1 ;
P1 = 0.0 0.0 0.0 ;
P2 = 3.0 0.0 0.0 ;
P3 = 3.0 3.0 0.0 ;
P4 = 0.0 3.0 0.0 ;
BAS = 'SURFACE' (P1 'DROIT' 3 P2 'DROIT' 4 P3 'DROIT' 5 P4 'DROIT' 6
P1) 'PLAN' ;
DOM1 = BAS 'VOLUME' 'TRANSLATION' 4 (0.0 1.0 3.0) ;
$DOM1 = 'MODELISER' DOM1 'EULER' ;
TAB1 = 'DOMA' $DOM1 'VF' ;
QDOM1 = TAB1 . 'QUAF' ;
*
DOM2 = DOM1 'SYMETRIE' 'PLAN' P1 P2 P3 ;
'ELIMINATION' DOM1 DOM2 0.0001 ;
$DOM2 = 'MODELISER' DOM2 'EULER' ;
TAB2 = 'DOMA' $DOM2 'VF' ;
QDOM2 = TAB2 . 'QUAF' ;
*
DOMTOT = DOM1 'ET' DOM2 ;
$DOMTOT = 'MODELISER' DOMTOT 'EULER' ;
TABTOT = 'DOMA' $DOMTOT 'VF' ;
QDOMTOT = TABTOT . 'QUAF' ;
*
'ELIMINATION' QDOMTOT QDOM1 0.0001 ;
'ELIMINATION' QDOMTOT QDOM2 0.0001 ;
*
DOMENV = 'ENVELOPPE' DOMTOT ;
$DOMENV = 'MODELISER' DOMENV 'EULER' ;
TABENV = 'DOMA' $DOMENV 'VF' ;
QDOMENV = TABENV . 'QUAF' ;
'ELIMINATION' QDOMTOT QDOMENV 0.0001 ;
*
DOMINT = 'DIFF' DOMTOT (DOMTOT 'ELEM' 'APPUYE' 'LARG'
('CHANGER' 'POI1' DOMENV)) ;
$DOMINT = 'MODELISER' DOMINT 'EULER' ;
TABINT = 'DOMA' $DOMINT 'VF' ;
QDOMINT = TABINT . 'QUAF' ;
'ELIMINATION' QDOMTOT QDOMINT 0.0001 ;
'SI' GRAPH ;
'TRACER' DOMTOT 'TITRE' 'Mesh';
'FINSI' ;
***********************************************
********* CHP: scalar linear field *********
********* EULESCAL *********
***********************************************
*
* (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
*
A11 = 12.01517 ;
A12 = 13.1421 ;
A13 = 23.1421 ;
A0 = -3.21 ;
B11 = 22.01517 ;
B12 = 43.1421 ;
B13 = 13.1213 ;
B0 = -5.21 ;
C11 = 2.01517 ;
C12 = 3.1421 ;
C13 = 23.1213 ;
C0 = -15.21 ;
XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
GRCHP LIMCH GRG = 'PENT' $DOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP ;
LIMCH1 = 'MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;
ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
* TEST1 : we check that we have the same values if we use
* GRG to compute gradients
*
GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
'EULESCAL' 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ')
CHP 'GRADGEO' GRG ;
ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
* TEST2 : we check that the computation is exact on the internal domain
*
GRCHPI = 'REDU' GRCHP ('DOMA' $DOMINT 'CENTRE') ;
GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DZ' C13
'NATU' 'DISCRET';
GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET' GR2DX
'ET' GR2DY 'ET' GR2DZ 'ET' GR3DX
'ET' GR3DY 'ET' GR3DZ ;
ERRCH = GREXA '-' GRCHPI ;
LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ' 'P2DX' 'P2DY' 'P2DZ'
'P3DX' 'P3DY' 'P3DZ' ;
MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
*
*** Error graphics (we change the error CHAMPOINT into a CHAMELEM
*
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOMINT 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
'FINSI' ;
ERRO = 'MAXIMUM' ERRCH 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
* TEST3 : we impose the linear field values on the border.
* In that case error must be "zero" everywhere.
*
XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMENV 'CENTRE') ;
CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
CHPLI = CHP1 'ET' CHP2 'ET' CHP3 ;
GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP 'CLIM' CHPLI ;
GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DZ' C13
'NATU' 'DISCRET';
GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET' GR2DX
'ET' GR2DY 'ET' GR2DZ 'ET' GR3DX
'ET' GR3DY 'ET' GR3DZ ;
ERRCH = GREXA '-' GRCHPL ;
LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ' 'P2DX' 'P2DY' 'P2DZ'
'P3DX' 'P3DY' 'P3DZ' ;
MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOMTOT 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1 'TITR'
('CHAINE' 'EULESCAL avec C.L. : Erreur');
* CHM_GRA = 'KCHA' $DOMTOT 'CHAM' GRCHPL ;
* 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
'FINSI' ;
ERRO = 'MAXIMUM' ERRCH 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
**** TEST4: wall boudary condition for a scalar field (EULESCAL)
*
CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
GRCHP0 ALCHP0 COEF = 'PENT' $DOM1 'CENTRE' 'EULESCAL'
'LIMITEUR' ('MOTS' 'UX' 'UY'
'UZ') CHP;
* AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
*
AA = 'EXTRAIRE' CHP MAIL ;
NN = 'NBNO' AA ;
CHPSYM CACCA = 'KOPS' 'MATRIK' ;
'REPETER' BL1 NN ;
BB = 'POIN' &BL1 AA ;
CC = 'MANUEL' 'POI1' BB ;
DD = CC 'SYMETRIE' 'PLAN' P1 P2 P3 ;
VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
VAL3 = 'EXTRAIRE' CHP 'UZ' BB ;
CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
'UY' VAL2 'UZ' VAL3) ;
'FIN' BL1 ;
*
AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
'ELIMINATION' AA (TABTOT . 'CENTRE') 0.0001 ;
CHPTOT = CHP '+' CHPSYM ;
*
GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL'
'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
'SI' GRAPH ;
MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULESCAL: champ');
MOD1 = 'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOM1 'CHAM' ERRO ;
'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
'FINSI' ;
'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
'ERREUR' 5 ;
'FINSI' ;
*
**** TEST5: boudary condition for a vectorial field (EULEVECT)
*
CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
GRCHP0 ALCHP0 COEF = 'PENT' $DOM1 'CENTRE' 'EULEVECT'
'LIMITEUR' ('MOTS' 'UX' 'UY'
'UZ') CHP;
*
* AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
*
AA = 'EXTRAIRE' CHP MAIL ;
NN = 'NBNO' AA ;
CHPSYM CACCA = 'KOPS' 'MATRIK' ;
'REPETER' BL1 NN ;
BB = 'POIN' &BL1 AA ;
CC = 'MANUEL' 'POI1' BB ;
DD = CC 'SYMETRIE' 'PLAN' P1 P2 P3 ;
VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
VAL3 = 'EXTRAIRE' CHP 'UZ' BB ;
CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
'UY' VAL2 'UZ' (-1 * VAL3)) ;
'FIN' BL1 ;
*
AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
'ELIMINATION' AA (TABTOT . 'CENTRE') 0.0001 ;
CHPTOT = CHP '+' CHPSYM ;
*
GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT'
'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
'SI' GRAPH ;
MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULEVECT: champ');
MOD1 = 'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOM1 'CHAM' ERRO ;
'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULEVECT: erreur');
'FINSI' ;
'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
'ERREUR' 5 ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer