* fichier : pente3D.dgibi
***********************************************************
**** Finite Volume, "Cell-Centred Formulation". ****
**** PENT, operator to compute gradients and limiters ****
**** ****
**** 3D VALIDATION ****
**** ****
**** T. KLOCZKO, LTMF JULY 2005 ****
**** ****
***********************************************************
*
*** Choix du type d'élément
*
TYEL = TET4 ;
* TYEL = PYR5 ;
* TYEL = PRI6 ;
* TYEL = CUB8 ;
*
*** Options gibiane
*
'OPTION' 'DIME' 3 'ELEM' TYEL 'TRAC' 'X'
'ISOV' 'SULI' 'ECHO' 1 ;
*
*** Option de tracé
*
* GRAPH = VRAI ;
GRAPH = FAUX ;
*
***************************************************
*** CANAL SECTION CARRÉE AVEC BOSSE SINUSOÏDALE ***
***************************************************
*
RAF = 1 ;
VRAF = 9. '*' RAF ;
Lref = 1. ;
Size = Lref '/' VRAF ;
Lx = 4. ;
Ly = 0.5 ;
Lz = 1. ;
DX = Size ;
DY = Size ;
DZ = Size ;
NX = 'ENTIER' (Lx '/' Size '+' 0.1) ;
NY = 'ENTIER' (Ly '/' Size '+' 0.1) ;
NZ = 'ENTIER' (Lz '/' Size '+' 0.1) ;
*
*** Sommets du domaine de calcul
*
P0 = 0.0 0.0 0.0 ;
P1 = (Lx '/' 4.) 0.0 0.0 ;
P2 = (3. '*' Lx '/' 4.) 0.0 0.0 ;
P3 = Lx 0.0 0.0 ;
P4 = Lx 0.0 Lz ;
P5 = 0.0 0.0 Lz ;
P6 = 0.0 Ly 0.0 ;
P7 = (Lx '/' 4.) Ly 0.0 ;
P8 = (3. '*' Lx '/' 4.) Ly 0.0 ;
P9 = Lx Ly 0.0 ;
P10 = Lx Ly Lz ;
P11 = 0.0 Ly Lz ;
*
*** Calcul des arêtes
*
P0P1 = 'DROIT' P0 P1 DINI DX DFIN DX ;
P1P2 = 'DROIT' P1 P2 DINI DX DFIN DX ;
P2P3 = 'DROIT' P2 P3 DINI DX DFIN DX ;
P0P3 = P0P1 'ET' P1P2 'ET' P2P3 ;
P4P5 = 'DROIT' P4 P5 DINI DX DFIN DX ;
P6P7 = 'DROIT' P6 P7 DINI DX DFIN DX ;
P7P8 = 'DROIT' P7 P8 DINI DX DFIN DX ;
P8P9 = 'DROIT' P8 P9 DINI DX DFIN DX ;
P6P9 = P6P7 'ET' P7P8 'ET' P8P9 ;
P10P11 = 'DROIT' P10 P11 DINI DX DFIN DX ;
P0P6 = 'DROIT' P0 P6 DINI DY DFIN DY ;
P5P11 = 'DROIT' P5 P11 DINI DY DFIN DY ;
P3P9 = 'DROIT' P3 P9 DINI DY DFIN DY ;
P4P10 = 'DROIT' P4 P10 DINI DY DFIN DY ;
P0P5 = 'DROIT' P0 P5 DINI DZ DFIN DZ ;
P3P4 = 'DROIT' P3 P4 DINI DZ DFIN DZ ;
P9P10 = 'DROIT' P9 P10 DINI DZ DFIN DZ ;
P6P11 = 'DROIT' P6 P11 DINI DZ DFIN DZ ;
*
*** Calcul des surfaces
*
* Inlet
SURFI = 'SURFACE' (('INVERSE' P0P6) 'ET' P0P5 'ET' P5P11
'ET' ('INVERSE' P6P11)) 'PLAN' ;
SURFI = 'COULEUR' SURFI 'VERT' ;
* Outlet
SURFO = 'SURFACE' (('INVERSE' P3P9) 'ET' P3P4 'ET' P4P10
'ET' ('INVERSE' P9P10)) 'PLAN' ;
SURFO = 'COULEUR' SURFO 'ROUG' ;
* Up
SURFU = 'SURFACE' (('INVERSE' P4P5) 'ET' P4P10 'ET' P10P11
'ET' ('INVERSE' P5P11)) 'PLAN' ;
SURFU = 'COULEUR' SURFU 'TURQ' ;
* Down
*
* On trace en premier lieu une surface plane que l'on déforme
* par un champ de déplacement ad hoc.
SURFD = 'SURFACE' (P0P3 'ET' P3P9 'ET' ('INVERSE'P6P9)
'ET' ('INVERSE' P0P6)) 'PLAN' ;
SURFD = 'COULEUR' SURFD 'BLEU' ;
*
*** Création du déplacement pour générer la bosse
*
NBPTD = 'NBNO' SURFD ;
SURD1 = 'CHANGER' SURFD 'POI1' ;
CHPMOUV CACA = 'KOPS' MATRIK ;
'REPETER' DBCL NBPTD ;
PSD = 'POINT' SURD1 &DBCL ;
XSD = ('COORDONNEE' 1 PSD) ;
'SI' (XSD < (Lx '/' 4.)) ;
CHPI = 'MANU' 'CHPO' PSD 3
'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
'SINON' ;
'SI' (XSD > (3. '*' Lx '/' 4.)) ;
CHPI = 'MANU' 'CHPO' PSD 3
'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
'SINON' ;
ZSD = (0.1D0 '*' Lx '/' 4.) '*' (1.D0 +
('COS' (180.D0 '*' ((4. '*' XSD '/' Lx) '-' 2.)))) ;
CHPI = 'MANU' 'CHPO' PSD 3
'UX' 0.D0 'UY' 0.D0 'UZ' ZSD ;
'FINSI' ;
'FINSI' ;
CHPMOUV = CHPMOUV '+' CHPI ;
'FIN' DBCL ;
*
* Modification de la forme de la surface du bas
FSURD = 'FORM' CHPMOUV ;
* Front
SURFF = 'SURFACE' (P0P3 'ET' P3P4 'ET' P4P5
'ET' ('INVERSE' P0P5)) 'PLAN' ;
* Back
SURFB = 'SURFACE' (P6P9 'ET' P9P10 'ET' P10P11
'ET' ('INVERSE' P6P11)) 'PLAN' ;
* Total Face
SURTOT = (SURFF 'ET' SURFB 'ET' SURFI
'ET' SURFO 'ET' SURFU 'ET' SURFD) ;
'ELIMINATION' SURTOT (Size '/' 1.D3) ;
'SI' GRAPH ;
'TRACER' SURTOT 'TITRE'
('CHAINE' 'Enveloppe, nbel=' ('NBEL' SURTOT)) ;
'FINSI' ;
*
*** Volume
*
DOMTOT = 'VOLUME' SURTOT ;
*
*** Surface latérale
*
SURTOT = 'ENVELOPPE' DOMTOT ;
si graph;'TRACER' surtot ;finsi;
MAICON = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURTOT ;
DOMINT = DOMTOT 'DIFF' MAICON 'COULEUR' 'ROUGE' ;
*
**** Creation of MODELS
*
MDOMTOT = 'MODELISER' DOMTOT 'EULER' ;
MDOMINT = 'MODELISER' DOMINT 'EULER' ;
MSURTOT = 'MODELISER' SURTOT 'EULER' ;
TDOMTOT = 'DOMA' MDOMTOT 'VF' ;
TDOMINT = 'DOMA' MDOMINT 'VF' ;
TSURTOT = 'DOMA' MSURTOT 'VF' ;
QDOMTOT = TDOMTOT . 'QUAF' ;
QDOMINT = TDOMINT . 'QUAF' ;
QSURTOT = TSURTOT . 'QUAF' ;
'ELIMINATION' (QDOMTOT 'ET' QDOMINT 'ET' QSURTOT)
(1.d-3 '/' (RAF '*' 1.)) ;
'SI' GRAPH ;
'TRACER' DOMTOT 'TITRE'
('CHAINE' 'Domaine, nbel=' ('NBEL' DOMTOT)) ;
'TRACER' MAICON 'TITRE'
('CHAINE' 'Mailles extérieures, nbel=' ('NBEL' MAICON)) ;
'TRACER' DOMINT 'TITRE'
('CHAINE' 'Mailles intérieures, nbel=' ('NBEL' DOMINT)) ;
'FINSI' ;
*
**** The interface points (for limit condition)
*
SURC = ('DOMA' MSURTOT 'CENTRE') 'COULEUR' 'BLEU';
'REPETER' BLLIM (('NBEL' SURC)) ;
POIN0 = 'POIN' SURC &BLLIM ;
XFAC YFAC ZFAC = 'COORDONNEE' POIN0 ;
PFAC = ('DOMA' MDOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC ZFAC);
'SI' (&BLLIM 'EGA' 1) ;
GEOLIM = 'MANUEL' 'POI1' PFAC 'BLEU' ;
'SINON' ;
GEOLIM = GEOLIM 'ET' ('MANUEL' 'POI1' PFAC 'BLEU') ;
'FINSI' ;
'FIN' BLLIM ;
*
'SI' GRAPH ;
'TRACER' (DOMTOT 'ET' GEOLIM)
'TITRE' 'DOMTOT et points faces aux bords';
'FINSI' ;
*
***********************************************
********* CHP: scalar linear field *********
********* EULESCAL *********
***********************************************
*
* (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
*
A11 = 12.01517 ;
A12 = 13.1421 ;
A13 = 14.0412 ;
A0 = -3.21 ;
B11 = 22.01517 ;
B12 = 43.1421 ;
B13 = 35.5463 ;
B0 = -5.21 ;
C11 = 24.01517 ;
C12 = 46.1421 ;
C13 = 39.5463 ;
C0 = -6.21 ;
XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT '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' 'C1' CHP1 'NATU' 'DISCRET' ;
CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
CHP3 = 'NOMC' 'C3' CHP3 'NATU' 'DISCRET' ;
CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
GRCHP LIMCH GRG = 'PENT' MDOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' MOTC CHP ;
LIMCH1 = 'MANU' 'CHPO' ('DOMA' MDOMTOT '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
*
MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
'EULESCAL' 'LIMITEUR' MOTC
CHP 'GRADGEO' GRG ;
'LISTE' MOTC ;
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' MDOMINT 'CENTRE') ;
GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT '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' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' MDOMINT '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.
*
XLIM YLIM ZLIM = 'COORDONNEE' GEOLIM ;
CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0;
CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0;
CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0;
CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
CHPLI3 = 'NOMC' 'C3' CHPLI3 'NATU' 'DISCRET' ;
CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;
MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
GRCHPL LIMCH GRGL = 'PENT' MDOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' MOTC CHP 'CLIM' CHPLI ;
MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
'EULESCAL' 'NOLIMITE' MOTC
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' MDOMTOT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT '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' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' MDOMTOT 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1 'TITR'
('CHAINE' 'EULESCAL avec C.L. : Erreur') ;
'FINSI' ;
ERRO = 'MAXIMUM' ERRCH 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
**** TEST4: boudary condition for a scalar field (EULESCAL)
*
*** Symétrie de référence et objet modèle
*
VOLI = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
$VOLI = 'MODELISER' VOLI 'EULER' ;
TVOLI = 'DOMA' $VOLI 'VF' ;
QVOLI = TVOLI . 'QUAF' ;
*
*** Champoints quelconques
*
XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
CHP1 = ('NOMC' 'C1' (yy * ('EXP'(XX) '+' ZZ)) 'NATU' 'DISCRET') ;
CHP2 = ('NOMC' 'C2' (yy '+' (3 '*' ZZ)) 'NATU' 'DISCRET') ;
CHP3 = ('NOMC' 'C3' (XX * ('EXP'(ZZ) '+' ZZ)) 'NATU' 'DISCRET') ;
*
*** Plan de symétrie
*
PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
*
*** Champoints symétriques
*
CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
*
*** Visualisation des maillages
*
VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6) 'COULEUR' 'ROUG' ;
VTOT = (VOLI 'ET' VSYM) ;
'ELIMINATION' VTOT 1.d-5 ;
*
'SI' GRAPH ;
'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
'FINSI' ;
*
*** Objet modèle
*
$VTOT = 'MODELISER' VTOT 'EULER' ;
TVTOT = 'DOMA' $VTOT 'VF' ;
QVTOT = TVTOT . 'QUAF' ;
'ELIMINATION' QVOLI 1.D-5 QVTOT ;
'ELIMINATION' QVTOT 1.D-5 CNEW1 ;
*
*** Calcul du gradient
*
CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
CHPTOT = CHPSYM 'ET' CHPPET ;
GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'C1' 'C2' 'C3') CHPTOT ;
GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'C1' 'C2' 'C3')
('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;
ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE')) ;
LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
'P2DX' 'P2DY' 'P2DZ'
'P3DX' 'P3DY' 'P3DZ' ;
MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $VOLI 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1
'TITR' ('CHAINE' 'EULESCAL sur les bords: erreur') ;
'FINSI' ;
ERRO = 'MAXIMUM' MERRCH 'ABS' ;
'LISTE' ERRO ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5 ;
'FINSI' ;
*
***************************************************
********* CHP: vectorial linear field ************
********* EULEVECT ****************
***************************************************
*
* (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
*
A11 = 11.3 ;
A12 = 0.23 ;
A13 = 2.46 ;
A0 = 1.0 ;
B11 = 77.0 ;
B12 = 0.6 ;
B13 = 9.2 ;
B0 = 9.11 ;
C11 = 1.89 ;
C12 = 44.7 ;
C13 = 0.87 ;
C0 = 4.0 ;
XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT '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 ;
MOTC = ('MOTS' 'UX' 'UY' 'UZ') ;
GRCHP LIMCHP GRG = 'PENT' MDOMTOT 'CENTRE'
'EULEVECT' 'NOLIMITE' MOTC CHP ;
'LISTE' MOTC ;
LIMCH1 = 'MANU' 'CHPO' ('DOMA' MDOMTOT 'CENTRE')
3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;
ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCHP) '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 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
'EULEVECT' 'NOLIMITE' MOTC
CHP 'GRADGEO' GRG ;
ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
'SI' (ERRO > 5.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' MDOMINT 'CENTRE') ;
GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT '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 ;
*
*** CREATION DE 'MODEL' POUR GRAPHIQUER LE CHAMELEM ***
*
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' MDOMINT 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1 'TITR'
('CHAINE' 'EULEVECT: Erreur') ;
'FINSI' ;
ERRO = 'MAXIMUM' ERRCH 'ABS' ;
'SI' (ERRO > 5.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.
*
XLIM YLIM ZLIM = 'COORDONNEE' GEOLIM ;
CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0 ;
CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0 ;
CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0 ;
CHPLI1 = 'NOMC' 'UX' CHPLI1 'NATU' 'DISCRET' ;
CHPLI2 = 'NOMC' 'UY' CHPLI2 'NATU' 'DISCRET' ;
CHPLI3 = 'NOMC' 'UZ' CHPLI3 'NATU' 'DISCRET' ;
CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;
GRCHPL LIMCHP GRGL = 'PENT' MDOMTOT 'CENTRE'
'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
CHP 'CLIM' CHPLI ;
GRCHP1 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
'EULEVECT' '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' MDOMTOT 'CENTRE') 1 'P1DX' A11
'NATU' 'DISCRET' ;
GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY' A12
'NATU' 'DISCRET';
GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ' A13
'NATU' 'DISCRET';
GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX' B11
'NATU' 'DISCRET';
GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY' B12
'NATU' 'DISCRET';
GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ' B13
'NATU' 'DISCRET';
GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX' C11
'NATU' 'DISCRET';
GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY' C12
'NATU' 'DISCRET';
GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT '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' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' MDOMTOT 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1 'TITR'
('CHAINE' 'EULEVECT avec C.L.: erreur') ;
'FINSI' ;
ERRO = 'MAXIMUM' ERRCH 'ABS' ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5;
'FINSI' ;
*
**** TEST4: boudary condition for a vectorial field (EULEVECT)
*
*** Géométrie de base et objet modèle
*
VOLI = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
$VOLI = 'MODELISER' VOLI 'EULER' ;
TVOLI = 'DOMA' $VOLI 'VF' ;
QVOLI = TVOLI . 'QUAF' ;
*
*** Construction d'un champoint
*
XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
CHP1 = ('NOMC' 'UX' (yy * ('EXP'(XX) '+' ZZ)) 'NATU' 'DISCRET') ;
CHP2 = ('NOMC' 'UY' (yy '+' (3 '*' ZZ)) 'NATU' 'DISCRET') ;
CHP3 = ('NOMC' 'UZ' (XX * ('EXP'(ZZ) '+' ZZ)) 'NATU' 'DISCRET') ;
*
*** Plan de symétrie
*
PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
*
*** Construction du champoint symétrique par rapport au plan
*
CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
CHP11 = CHP11 '*' (-1.D0) ;
CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
'PLAN' PP0 PP5 PP6 ;
'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
*
*** Visualisation des maillages
*
VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6) 'COULEUR' 'ROUG' ;
VTOT = (VOLI 'ET' VSYM) ;
'ELIMINATION' VTOT 1.d-5 ;
*
'SI' GRAPH ;
'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
'FINSI' ;
*
*** Objet modèle
*
$VTOT = 'MODELISER' VTOT 'EULER' ;
TVTOT = 'DOMA' $VTOT 'VF' ;
QVTOT = TVTOT . 'QUAF' ;
'ELIMINATION' QVOLI 1.D-5 QVTOT ;
'ELIMINATION' QVTOT 1.D-5 CNEW1 ;
*
*** Calcul des gradients
*
CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
CHPTOT = CHPSYM 'ET' CHPPET ;
GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULEVECT' 'NOLIMITE'
('MOTS' 'UX' 'UY' 'UZ')
('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;
ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE'));
LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
'P2DX' 'P2DY' 'P2DZ'
'P3DX' 'P3DY' 'P3DZ' ;
MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
'SI' GRAPH ;
MOD1 = 'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $VOLI 'CHAM' MERRCH ;
'TRACER' CHM_MER MOD1
'TITR' ('CHAINE' 'EULEVECT sur les bords: erreur') ;
'FINSI' ;
ERRO = 'MAXIMUM' MERRCH 'ABS' ;
'LISTE' ERRO ;
'SI' (ERRO > 1.0D-8) ;
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans PENT');
'MESSAGE' ;
'ERREUR' 5 ;
'FINSI' ;
*
*** Fin des tests
*
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'OK DOKY') ;
'MESSAGE' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer