* 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 **** *********************************************************** 'ELEM' 'TRI3' 'TRAC' 'X' ; GRAPH = FAUX ; * GRAPH = VRAI ; * *** MESH * 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' ; QDOM1 = TAB1 . 'QUAF' ; * DOM2 = DOM1 'SYMETRIE' 'PLAN' P1 P2 P3 ; 'ELIMINATION' DOM1 DOM2 0.0001 ; $DOM2 = 'MODELISER' DOM2 'EULER' ; QDOM2 = TAB2 . 'QUAF' ; * DOMTOT = DOM1 'ET' DOM2 ; $DOMTOT = 'MODELISER' DOMTOT 'EULER' ; QDOMTOT = TABTOT . 'QUAF' ; * 'ELIMINATION' QDOMTOT QDOM1 0.0001 ; 'ELIMINATION' QDOMTOT QDOM2 0.0001 ; * DOMENV = 'ENVELOPPE' DOMTOT ; $DOMENV = 'MODELISER' DOMENV 'EULER' ; QDOMENV = TABENV . 'QUAF' ; 'ELIMINATION' QDOMTOT QDOMENV 0.0001 ; * ('CHANGER' 'POI1' DOMENV)) ; $DOMINT = 'MODELISER' DOMINT 'EULER' ; 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 ; CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0; CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0; CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0; CHP = CHP1 'ET' CHP2 'ET' CHP3 ; GRCHP LIMCH GRG = 'PENT' $DOMTOT 'CENTRE' 3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ; ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ; 'SI' (ERRO > 1.0D-8) ; 'MESSAGE' ; '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' CHP 'GRADGEO' GRG ; ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ; 'SI' (ERRO > 1.0D-8) ; 'MESSAGE' ; 'MESSAGE' ; 'ERREUR' 5; 'FINSI' ; * * TEST2 : we check that the computation is exact on the internal domain * 'NATU' 'DISCRET' ; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; '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 ; 'FINSI' ; ERRO = 'MAXIMUM' ERRCH 'ABS' ; 'SI' (ERRO > 1.0D-8) ; 'MESSAGE' ; 'MESSAGE' ; 'ERREUR' 5; 'FINSI' ; * * TEST3 : we impose the linear field values on the border. * In that case error must be "zero" everywhere. * CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0; CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0; CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0; CHPLI = CHP1 'ET' CHP2 'ET' CHP3 ; GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE' GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE' CHP 'CLIM' CHPLI 'GRADGEO' GRGL ; ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ; 'SI' (ERRO > 1.0D-8) ; 'MESSAGE' ; 'MESSAGE' ; 'ERREUR' 5; 'FINSI' ; 'NATU' 'DISCRET' ; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; '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 ; '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' ; 'ERREUR' 5; 'FINSI' ; * **** TEST4: wall boudary condition for a scalar field (EULESCAL) * 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 ; 'REPETER' BL1 NN ; 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 ; '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' ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ; 'SI' GRAPH ; 'FINSI' ; 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ; 'ERREUR' 5 ; 'FINSI' ; * **** TEST5: boudary condition for a vectorial field (EULEVECT) * 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 ; 'REPETER' BL1 NN ; 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 ; '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' ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ; 'SI' GRAPH ; 'FINSI' ; 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales