* fichier : pent3D2.dgibi
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation". ****
**** OPÉRATEUR PENT, pour le calcul des gradients et ****
**** de limiteurs ****
**** Cas test: calcul du limiteur en 3D ****
**** ****
**** A. BECCANTINI, TTMF MAI 1998 ****
**** Modif, 10/07/01, syntaxe de PENT changée ****
***********************************************************
'OPTION' 'DIME' 3 ;
'OPTION' 'ELEM' 'CUB8' ;
'OPTION' 'ISOV' 'SULI' ;
'OPTION' 'ECHO' 0;
GRAPH = VRAI ;
*
**** Domaine
*
A1 = 0.0 0.0 0.0;
A2 = 2.0 0.0 0.0;
A3 = 2.0 3.0 0.0;
A4 = 0.0 2.0 0.0;
A5 = 0.0 0.0 2.0;
A6 = 2.0 0.0 2.0;
A7 = 2.0 3.0 3.5;
A8 = 0.0 2.0 3.0;
A9 = 6.0 1.0 4.0;
A10 = 3.0 1.0 -1.0;
A11 = 0.0 -1.0 -1.0;
A12 = -1.0 1.0 1.0;
A13 = 0.0 -2.0 0.0;
A14 = 2.0 4.0 1.0;
DOM1= 'MANUEL' 'CUB8' A1 A2 A3 A4 A5 A6 A7 A8;
DOM2= 'MANUEL' 'PYR5' A5 A6 A7 A8 A9;
DOM3= 'MANUEL' 'PYR5' A2 A3 A7 A6 A10;
DOM4= 'MANUEL' 'PYR5' A1 A2 A3 A4 A11;
DOM5= 'MANUEL' 'PYR5' A1 A4 A8 A5 A12;
DOM6= 'MANUEL' 'PYR5' A1 A2 A6 A5 A13;
DOM7= 'MANUEL' 'PYR5' A3 A4 A8 A7 A14;
DOMTOT= DOM1 'ET' DOM2 'ET' DOM3 'ET'
DOM4 'ET' DOM5 'ET' DOM6 'ET'
DOM7;
$DOMTOT = 'MODE' DOMTOT 'EULER' ;
$DOM1 = 'MODE' DOM1 'EULER' ;
$DOM2 = 'MODE' DOM2 'EULER' ;
$DOM3 = 'MODE' DOM3 'EULER' ;
$DOM4 = 'MODE' DOM4 'EULER' ;
$DOM5 = 'MODE' DOM5 'EULER' ;
$DOM6 = 'MODE' DOM6 'EULER' ;
$DOM7 = 'MODE' DOM7 'EULER' ;
TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
TDOM1 = 'DOMA' $DOM1 'VF' ;
TDOM2 = 'DOMA' $DOM2 'VF' ;
TDOM3 = 'DOMA' $DOM3 'VF' ;
TDOM4 = 'DOMA' $DOM4 'VF' ;
TDOM5 = 'DOMA' $DOM5 'VF' ;
TDOM6 = 'DOMA' $DOM6 'VF' ;
TDOM7 = 'DOMA' $DOM7 'VF' ;
MDOMTOT = TDOMTOT . 'QUAF';
MDOM1 = TDOM1 . 'QUAF';
MDOM2 = TDOM2 . 'QUAF';
MDOM3 = TDOM3 . 'QUAF';
MDOM4 = TDOM4 . 'QUAF';
MDOM5 = TDOM5 . 'QUAF';
MDOM6 = TDOM6 . 'QUAF';
MDOM7 = TDOM7 . 'QUAF';
'ELIM' (MDOMTOT 'ET' MDOM1 'ET' MDOM2 'ET' MDOM3 'ET' MDOM4 'ET' MDOM5
'ET' MDOM6 'ET' MDOM7) 1D-6;
XX YY ZZ= 'COOR' ('DOMA' $DOMTOT 'CENTRE');
PHI1 = 'NOMC' 'UX' ((2 '*' XX) '+' (7 '*' YY) '-' (5 '*' ZZ))
'NATU' 'DISCRET' ;
PHI2 = 'NOMC' 'UY' ((3 '*' XX) '+' (4 '*' YY) '+' (2 '*' ZZ))
'NATU' 'DISCRET' ;
PHI3 = 'NOMC' 'UZ' ((12 '*' (XX * XX)) '+' (7 '*' YY)
'-' (ZZ '*' ZZ)) 'NATU' 'DISCRET' ;
PHI = PHI1 'ET' PHI2 'ET' PHI3 ;
GRAPHI ALPHI COEF = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
('MOTS' 'UX' 'UY' 'UZ') PHI ;
****************************************************
**** Le limiteur: les paramètres géométriques ****
****************************************************
PCDOM1 = ('DOMA' $DOM1 'CENTRE') 'POIN' 1;
xC1 yC1 zC1 = 'COORDONNEE' PCDOM1 ;
*
**** 1-2
*
PCDOM2 = ('DOMA' $DOM2 'CENTRE') 'POIN' 1 ;
xA5 yA5 zA5 = 'COORDONNEE' A5 ;
xA7 yA7 zA7 = 'COORDONNEE' A7 ;
xF2 = (xA5 '+' xA7) '/' 2.0 ;
yF2 = (yA5 '+' yA7) '/' 2.0 ;
zF2 = (zA5 '+' zA7) '/' 2.0 ;
F2 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF2 yF2 zF2) ;
xC2 yC2 zC2 = 'COORDONNEE' PCDOM2 ;
xF2 yF2 zF2 = 'COORDONNEE' F2 ;
DXC1F2 = xF2 '-' xC1 ;
DYC1F2 = yF2 '-' yC1 ;
DZC1F2 = zF2 '-' zC1 ;
DC1F2 = ((DXC1F2 '**' 2) '+' (DYC1F2 '**' 2)
'+' (DZC1F2 '**' 2)) '**' 0.5;
DXC2F2 = xF2 '-' xC2 ;
DYC2F2 = yF2 '-' yC2 ;
DZC2F2 = zF2 '-' zC2 ;
DC2F2 = ((DXC2F2 '**' 2) '+' (DYC2F2 '**' 2)
'+' (DZC2F2 '**' 2)) '**' 0.5;
DTOT2 = DC1F2 '+' DC2F2 ;
*
**** 1-3
*
PCDOM3 = ('DOMA' $DOM3 'CENTRE') 'POIN' 1 ;
xA2 yA2 zA2 = 'COORDONNEE' A2 ;
xA7 yA7 zA7 = 'COORDONNEE' A7 ;
xF3 = (xA2 '+' xA7) '/' 2.0 ;
yF3 = (yA2 '+' yA7) '/' 2.0 ;
zF3 = (zA2 '+' zA7) '/' 2.0 ;
F3 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF3 yF3 zF3) ;
xC3 yC3 zC3 = 'COORDONNEE' PCDOM3 ;
xF3 yF3 zF3 = 'COORDONNEE' F3 ;
DXC1F3 = xF3 '-' xC1 ;
DYC1F3 = yF3 '-' yC1 ;
DZC1F3 = zF3 '-' zC1 ;
DC1F3 = ((DXC1F3 '**' 2) '+' (DYC1F3 '**' 2)
'+' (DZC1F3 '**' 2)) '**' 0.5;
DXC3F3 = xF3 '-' xC3 ;
DYC3F3 = yF3 '-' yC3 ;
DZC3F3 = zF3 '-' zC3 ;
DC3F3 = ((DXC3F3 '**' 2) '+' (DYC3F3 '**' 2)
'+' (DZC3F3 '**' 2)) '**' 0.5;
DTOT3 = DC1F3 '+' DC3F3 ;
*
**** 1-4
*
PCDOM4 = ('DOMA' $DOM4 'CENTRE') 'POIN' 1 ;
xA1 yA1 zA1 = 'COORDONNEE' A1 ;
xA3 yA3 zA3 = 'COORDONNEE' A3 ;
xF4 = (xA1 '+' xA3) '/' 2.0 ;
yF4 = (yA1 '+' yA3) '/' 2.0 ;
zF4 = (zA1 '+' zA3) '/' 2.0 ;
F4 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF4 yF4 zF4) ;
xC4 yC4 zC4 = 'COORDONNEE' PCDOM4 ;
xF4 yF4 zF4 = 'COORDONNEE' F4 ;
DXC1F4 = xF4 '-' xC1 ;
DYC1F4 = yF4 '-' yC1 ;
DZC1F4 = zF4 '-' zC1 ;
DC1F4 = ((DXC1F4 '**' 2) '+' (DYC1F4 '**' 2)
'+' (DZC1F4 '**' 2)) '**' 0.5;
DXC4F4 = xF4 '-' xC4 ;
DYC4F4 = yF4 '-' yC4 ;
DZC4F4 = zF4 '-' zC4 ;
DC4F4 = ((DXC4F4 '**' 2) '+' (DYC4F4 '**' 2)
'+' (DZC4F4 '**' 2)) '**' 0.5;
DTOT4 = DC1F4 '+' DC4F4 ;
*
**** 1-5
*
PCDOM5 = ('DOMA' $DOM5 'CENTRE') 'POIN' 1 ;
xA1 yA1 zA1 = 'COORDONNEE' A1 ;
xA8 yA8 zA8 = 'COORDONNEE' A8 ;
xF5 = (xA1 '+' xA8) '/' 2.0 ;
yF5 = (yA1 '+' yA8) '/' 2.0 ;
zF5 = (zA1 '+' zA8) '/' 2.0 ;
F5 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF5 yF5 zF5) ;
xC5 yC5 zC5 = 'COORDONNEE' PCDOM5 ;
xF5 yF5 zF5 = 'COORDONNEE' F5 ;
DXC1F5 = xF5 '-' xC1 ;
DYC1F5 = yF5 '-' yC1 ;
DZC1F5 = zF5 '-' zC1 ;
DC1F5 = ((DXC1F5 '**' 2) '+' (DYC1F5 '**' 2)
'+' (DZC1F5 '**' 2)) '**' 0.5;
DXC5F5 = xF5 '-' xC5 ;
DYC5F5 = yF5 '-' yC5 ;
DZC5F5 = zF5 '-' zC5 ;
DC5F5 = ((DXC5F5 '**' 2) '+' (DYC5F5 '**' 2)
'+' (DZC5F5 '**' 2)) '**' 0.5;
DTOT5 = DC1F5 '+' DC5F5 ;
*
**** 1-6
*
PCDOM6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
xA1 yA1 zA1 = 'COORDONNEE' A1 ;
xA6 yA6 zA6 = 'COORDONNEE' A6 ;
xF6 = (xA1 '+' xA6) '/' 2.0 ;
yF6 = (yA1 '+' yA6) '/' 2.0 ;
zF6 = (zA1 '+' zA6) '/' 2.0 ;
F6 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF6 yF6 zF6) ;
xC6 yC6 zC6 = 'COORDONNEE' PCDOM6 ;
xF6 yF6 zF6 = 'COORDONNEE' F6 ;
DXC1F6 = xF6 '-' xC1 ;
DYC1F6 = yF6 '-' yC1 ;
DZC1F6 = zF6 '-' zC1 ;
DC1F6 = ((DXC1F6 '**' 2) '+' (DYC1F6 '**' 2)
'+' (DZC1F6 '**' 2)) '**' 0.5;
DXC6F6 = xF6 '-' xC6 ;
DYC6F6 = yF6 '-' yC6 ;
DZC6F6 = zF6 '-' zC6 ;
DC6F6 = ((DXC6F6 '**' 2) '+' (DYC6F6 '**' 2)
'+' (DZC6F6 '**' 2)) '**' 0.5;
DTOT6 = DC1F6 '+' DC6F6 ;
*
**** 1-7
*
PCDOM7 = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
xA8 yA8 zA8 = 'COORDONNEE' A8 ;
xA3 yA3 zA3 = 'COORDONNEE' A3 ;
xF7 = (xA8 '+' xA3) '/' 2.0 ;
yF7 = (yA8 '+' yA3) '/' 2.0 ;
zF7 = (zA8 '+' zA3) '/' 2.0 ;
F7 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF7 yF7 zF7) ;
xC7 yC7 zC7 = 'COORDONNEE' PCDOM7 ;
xF7 yF7 zF7 = 'COORDONNEE' F7 ;
DXC1F7 = xF7 '-' xC1 ;
DYC1F7 = yF7 '-' yC1 ;
DZC1F7 = zF7 '-' zC1 ;
DC1F7 = ((DXC1F7 '**' 2) '+' (DYC1F7 '**' 2)
'+' (DZC1F7 '**' 2)) '**' 0.5;
DXC7F7 = xF7 '-' xC7 ;
DYC7F7 = yF7 '-' yC7 ;
DZC7F7 = zF7 '-' zC7 ;
DC7F7 = ((DXC7F7 '**' 2) '+' (DYC7F7 '**' 2)
'+' (DZC7F7 '**' 2)) '**' 0.5;
DTOT7 = DC1F7 '+' DC7F7 ;
*
**** Composantes à controller
*
LISTCOM = 'MOTS' 'UX' 'UY' 'UZ' ;
LISTNG1 = 'MOTS' 'P1DX' 'P2DX' 'P3DX' ;
LISTNG2 = 'MOTS' 'P1DY' 'P2DY' 'P3DY' ;
LISTNG3 = 'MOTS' 'P1DZ' 'P2DZ' 'P3DZ' ;
LISTNAL = 'MOTS' 'P1' 'P2' 'P3' ;
'REPETER' BLOC1 ('DIME' LISTCOM);
NOMCOM = 'EXTRAIRE' &BLOC1 LISTCOM ;
NOMG1 = 'EXTRAIRE' &BLOC1 LISTNG1 ;
NOMG2 = 'EXTRAIRE' &BLOC1 LISTNG2 ;
NOMG3 = 'EXTRAIRE' &BLOC1 LISTNG3 ;
NOMAL = 'EXTRAIRE' &BLOC1 LISTNAL ;
PHICOM = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' ('EXCO' NOMCOM PHI);
PHI1 = 'EXTRAIRE' PHICOM 'SCAL' PCDOM1 ;
PHIMAX = 'MAXIMUM' PHICOM;
PHIMIN = 'MINIMUM' PHICOM;
DPHISTE = PHIMAX '-' PHIMIN;
GPHI1X = 'EXTRAIRE' GRAPHI NOMG1 PCDOM1 ;
GPHI1Y = 'EXTRAIRE' GRAPHI NOMG2 PCDOM1 ;
GPHI1Z = 'EXTRAIRE' GRAPHI NOMG3 PCDOM1 ;
*
**** 1-2
*
DPHI0 = (GPHI1X '*' DXC1F2) '+' (GPHI1Y '*' DYC1F2)
'+' (GPHI1Z '*' DZC1F2) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL12 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL12 = (DPHI '/' DTOT2) * (DC1F2 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL12 = (DPHI '/' DTOT2) * (DC1F2 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL12 = 'MINIMUM' ('PROG' 1.0 AL12) ;
*
**** 1-3
*
DPHI0 = (GPHI1X '*' DXC1F3) '+' (GPHI1Y '*' DYC1F3)
'+' (GPHI1Z '*' DZC1F3) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL13 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL13 = (DPHI '/' DTOT3) * (DC1F3 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL13 = (DPHI '/' DTOT3) * (DC1F3 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL13 = 'MINIMUM' ('PROG' 1.0 AL13) ;
*
**** 1-4
*
DPHI0 = (GPHI1X '*' DXC1F4) '+' (GPHI1Y '*' DYC1F4)
'+' (GPHI1Z '*' DZC1F4) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL14 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL14 = (DPHI '/' DTOT4) * (DC1F4 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL14 = (DPHI '/' DTOT4) * (DC1F4 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL14 = 'MINIMUM' ('PROG' 1.0 AL14) ;
*
*** 1-5
*
DPHI0 = (GPHI1X '*' DXC1F5) '+' (GPHI1Y '*' DYC1F5)
'+' (GPHI1Z '*' DZC1F5) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL15 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL15 = (DPHI '/' DTOT5) * (DC1F5 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL15 = (DPHI '/' DTOT5) * (DC1F5 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL15 = 'MINIMUM' ('PROG' 1.0 AL15) ;
*
**** 1-6
*
DPHI0 = (GPHI1X '*' DXC1F6) '+' (GPHI1Y '*' DYC1F6)
'+' (GPHI1Z '*' DZC1F6) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL16 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL16 = (DPHI '/' DTOT6) * (DC1F6 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL16 = (DPHI '/' DTOT6) * (DC1F6 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL16 = 'MINIMUM' ('PROG' 1.0 AL16) ;
*
**** 1-7
*
DPHI0 = (GPHI1X '*' DXC1F7) '+' (GPHI1Y '*' DYC1F7)
'+' (GPHI1Z '*' DZC1F7) ;
'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
AL17 = 1.0D0;
'SINON' ;
'SI' (DPHI0 > 0.0);
DPHI = PHIMAX '-' PHI1;
AL17 = (DPHI '/' DTOT7) * (DC1F7 '/' DPHI0) ;
'SINON' ;
DPHI = PHIMIN '-' PHI1;
AL17 = (DPHI '/' DTOT7) * (DC1F7 '/' DPHI0) ;
'FINSI' ;
'FINSI' ;
AL17 = 'MINIMUM' ('PROG' 1.0 AL17) ;
*
*** ALPHA ELT
*
ALELT = 'MINIMUM' ('PROG' AL12 AL13 AL14 AL15 AL16 AL17);
ALELT0 = 'EXTRAIRE' ALPHI NOMAL PCDOM1 ;
'SI' (('ABS' (ALELT '-' ALELT0)) > 1.0D-14);
'ERREUR' 5;
'FINSI' ;
'FIN' BLOC1 ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer