* fichier : pente2.dgibi
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation". ****
**** OPÉRATEUR PENT, pour le calcul des gradients et ****
**** de limiteurs ****
**** Cas test: calcul du limiteur ****
**** ****
**** A. BECCANTINI, TTMF MAI 1998 ****
***********************************************************
'OPTION' 'DIME' 2 ;
'OPTION' 'ELEM' 'QUA4' ;
'OPTION' 'ISOV' 'SULI' ;
'OPTION' 'ECHO' 0;
'OPTION' 'TRAC' 'X';
GRAPH = FAUX ;
* GRAPH = VRAI ;
*
**** Domaine
*
A1 = 0.0 0.0 ;
A2 = 4.0 0.0 ;
A3 = 4.0 2.0 ;
A4 = 2.0 2.0 ;
A5 = 0.0 2.0 ;
A6 = 4.0 -2.0 ;
A7 = 6.0 4.0 ;
A8 = 2.0 4.0 ;
A9 = -1.0 -1.0;
DOM1 = 'MANUEL' 'QUA4' A1 A2 A3 A4 ;
DOM2 = 'MANUEL' 'TRI3' A2 A7 A3 ;
DOM3 = 'MANUEL' 'TRI3' A1 A6 A2 ;
DOM4 = 'MANUEL' 'TRI3' A2 A6 A7 ;
DOM5 = 'MANUEL' 'TRI3' A3 A7 A8 ;
DOM6 = 'MANUEL' 'TRI3' A4 A3 A8 ;
DOM7 = 'MANUEL' 'TRI3' A1 A4 A5 ;
DOM8 = 'MANUEL' 'TRI3' A1 A9 A6 ;
DOMTOT = DOM2 'ET' DOM3 'ET' DOM4
'ET' DOM1 'ET' DOM6 'ET' DOM7
'ET' DOM5 'ET' DOM8;
'SI' GRAPH ;
'TRACER' DOMTOT 'TITRE' 'DOMTOT' ;
'FINSI' ;
DOMT1 = DOM1 'ET' DOM3 'ET' DOM2
'ET' DOM6 'ET' DOM7 'COULEUR' 'VERT';
DOMT2 = DOM2 'ET' DOM1 'ET' DOM4
'ET' DOM5 'COULEUR' 'VERT';
$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' ;
$DOM8 = 'MODE' DOM8 'EULER' ;
$DOMT1 = 'MODE' DOMT1 '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' ;
TDOM8 = 'DOMA' $DOM8 'VF' ;
TDOMT1 = 'DOMA' $DOMT1 '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';
MDOM8 = TDOM8 . 'QUAF';
MDOMT1 = TDOMT1 . 'QUAF';
'ELIM' (MDOMTOT 'ET' MDOM1 'ET' MDOM2 'ET' MDOM3 'ET' MDOM4 'ET' MDOM5
'ET' MDOM6 'ET' MDOM7 'ET' MDOM8 'ET' MDOMT1) 1D-6;
XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE');
PHI1 = 'NOMC' 'UX' ((2 '*' XX) '+' (7 '*' YY)) ;
PHI2 = 'NOMC' 'UY' ((3 '*' XX) '+' (4 '*' YY)) ;
PHI = PHI1 'ET' PHI2 ;
* PHI est une fonction lineaire des XX et YY.
****************************************************
**** Le limiteur: les paramètres géométriques ****
****************************************************
PCDOM1 = ('DOMA' $DOM1 'CENTRE') 'POIN' 1;
xC1 yC1 = 'COORDONNEE' PCDOM1 ;
*
**** 1-3
*
PCDOM3 = ('DOMA' $DOM3 'CENTRE') 'POIN' 1 ;
xA1 yA1 = 'COORDONNEE' A1 ;
xA2 yA2 = 'COORDONNEE' A2 ;
xF3 = (xA1 '+' xA2) '/' 2.0 ;
yF3 = (yA1 '+' yA1) '/' 2.0 ;
F3 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF3 yF3) ;
xC3 yC3 = 'COORDONNEE' PCDOM3 ;
xF3 yF3 = 'COORDONNEE' F3 ;
DXC1F3 = xF3 '-' xC1 ;
DYC1F3 = yF3 '-' yC1 ;
DC1F3 = ((DXC1F3 '**' 2) '+' (DYC1F3 '**' 2)) '**' 0.5 ;
DXC3F3 = xF3 '-' xC3 ;
DYC3F3 = yF3 '-' yC3 ;
DC3F3 = ((DXC3F3 '**' 2) '+' (DYC3F3 '**' 2)) '**' 0.5 ;
DTOT3 = DC1F3 '+' DC3F3 ;
*
**** 1-2
*
PCDOM2 = ('DOMA' $DOM2 'CENTRE') 'POIN' 1 ;
xA2 yA2 = 'COORDONNEE' A2 ;
xA3 yA3 = 'COORDONNEE' A3 ;
xF2 = (xA3 '+' xA2) '/' 2.0 ;
yF2 = (yA3 '+' yA1) '/' 2.0 ;
F2 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF2 yF2) ;
xC2 yC2 = 'COORDONNEE' PCDOM2 ;
xF2 yF2 = 'COORDONNEE' F2 ;
DXC1F2 = xF2 '-' xC1 ;
DYC1F2 = yF2 '-' yC1 ;
DC1F2 = ((DXC1F2 '**' 2) '+' (DYC1F2 '**' 2)) '**' 0.5 ;
DXC2F2 = xF2 '-' xC2 ;
DYC2F2 = yF2 '-' yC2 ;
DC2F2 = ((DXC2F2 '**' 2) '+' (DYC2F2 '**' 2)) '**' 0.5 ;
DTOT2 = DC1F2 '+' DC2F2 ;
*
**** 1-6
*
PCDOM6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
xA4 yA4 = 'COORDONNEE' A4 ;
xA3 yA3 = 'COORDONNEE' A3 ;
xF6 = (xA3 '+' xA4) '/' 2.0 ;
yF6 = (yA3 '+' yA4) '/' 2.0 ;
F6 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF6 yF6) ;
xC6 yC6 = 'COORDONNEE' PCDOM6 ;
xF6 yF6 = 'COORDONNEE' F6 ;
DXC1F6 = xF6 '-' xC1 ;
DYC1F6 = yF6 '-' yC1 ;
DC1F6 = ((DXC1F6 '**' 2) '+' (DYC1F6 '**' 2)) '**' 0.5 ;
DXC6F6 = xF6 '-' xC6 ;
DYC6F6 = yF6 '-' yC6 ;
DC6F6 = ((DXC6F6 '**' 2) '+' (DYC6F6 '**' 2)) '**' 0.5 ;
DTOT6 = DC1F6 '+' DC6F6 ;
*
*** Limiteur 1-7
*
PCDOM7 = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
xA4 yA4 = 'COORDONNEE' A4 ;
xA1 yA1 = 'COORDONNEE' A1 ;
xF7 = (xA1 '+' xA4) '/' 2.0 ;
yF7 = (yA1 '+' yA4) '/' 2.0 ;
F7 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF7 yF7) ;
xC7 yC7 = 'COORDONNEE' PCDOM7 ;
xF7 yF7 = 'COORDONNEE' F7 ;
DXC1F7 = xF7 '-' xC1 ;
DYC1F7 = yF7 '-' yC1 ;
DC1F7 = ((DXC1F7 '**' 2) '+' (DYC1F7 '**' 2)) '**' 0.5 ;
DXC7F7 = xF7 '-' xC7 ;
DYC7F7 = yF7 '-' yC7 ;
DC7F7 = ((DXC7F7 '**' 2) '+' (DYC7F7 '**' 2)) '**' 0.5 ;
DTOT7 = DC1F7 '+' DC7F7 ;
*
**** Composantes à controller
*
LISTCOM = 'MOTS' 'UX' 'UY' ;
LISTNG1 = 'MOTS' 'P1DX' 'P2DX' ;
LISTNG2 = 'MOTS' 'P1DY' 'P2DY' ;
LISTNAL = 'MOTS' 'P1' 'P2' ;
*
**** Bloc sur les differents options
*
'REPETER' BLOPT 2;
'SI' (&BLOPT 'EGA' 1) ;
GRAPHI ALPHI COEF = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
('MOTS' 'UX' 'UY') PHI ;
'FINSI' ;
'SI' (&BLOPT 'EGA' 2) ;
GRAPHI ALPHI COEF = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
('MOTS' 'UX' 'UY') PHI ;
'FINSI' ;
'SI' (GRAPH 'ET' (&BLOPT 'EGA' 1)) ;
****************************************************
**** Le centre de l'element DOM3 est en dehors ****
**** de son element dual : le programme GRADGEO ****
**** prevoit ce cas d'un maillage mal fait et le****
**** resultat est juste. ****
****************************************************
DUAL=(('DOMA' $DOMTOT 'TABLE').'ELKONF')
'ET' ('DOMA' $DOM1 'MAILLAGE') 'ET' ('DOMA' $DOM3 'MAILLAGE')
'ET' ('DOMA' $DOM4 'MAILLAGE') 'ET' ('DOMA' $DOM8 'MAILLAGE')
'COUL' VERT;
'TRACER' (('DOMA' $DOM3 'CENTRE') 'ET' DOM1 'ET'
DOM3 'ET' DOM4 'ET' DOM8 'ET' DUAL)
'TITRE' 'CENTRE DEHORS DU DUAL';
'FINSI' ;
'REPETER' BLOC1 ('DIME' LISTCOM);
NOMCOM = 'EXTRAIRE' &BLOC1 LISTCOM ;
NOMG1 = 'EXTRAIRE' &BLOC1 LISTNG1 ;
NOMG2 = 'EXTRAIRE' &BLOC1 LISTNG2 ;
NOMAL = 'EXTRAIRE' &BLOC1 LISTNAL ;
PHICOM = 'KCHT' $DOMT1 '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 ;
*
**** 1-3
*
DPHI0 = (GPHI1X '*' DXC1F3) '+' (GPHI1Y '*' DYC1F3) ;
'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-2
*
DPHI0 = (GPHI1X '*' DXC1F2) '+' (GPHI1Y '*' DYC1F2) ;
'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' AL12 1.0);
*
**** 1-6
*
DPHI0 = (GPHI1X '*' DXC1F6) '+' (GPHI1Y '*' DYC1F6) ;
'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' AL16 1.0);
*
**** 1 - 7
*
DPHI0 = (GPHI1X '*' DXC1F7) '+' (GPHI1Y '*' DYC1F7) ;
'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' AL17 1.0);
*
*** ALPHA ELT
*
ALELT = 'MINIMUM' ('PROG' AL13 AL12 AL16 AL17);
ALELT0 = 'EXTRAIRE' ALPHI NOMAL PCDOM1 ;
'SI' (('ABS' (ALELT '-' ALELT0)) > 1.0D-14);
'MESSAGE' (ALELT '-' ALELT0) ;
'OPTION' DONN 5 ;
'ERREUR' 5;
'FINSI' ;
'FIN' BLOC1 ;
'FIN' BLOPT ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer