* fichier : pent3D3.dgibi
************************************************************
************************************************************
**** APPROCHE VF "Cell-Centred Formulation". ****
**** OPÉRATEUR PENT, pour le calcul des gradients et ****
**** des limiteurs ****
**** Cas test: calcul du gradient en 3D avec condition ****
**** de 'TYPE' mur ****
**** ****
**** A. BECCANTINI, TTMF MAI 1998 ****
**** ****
**** A. BECCANTINI, LTMF MARS 2000 ****
**** Parametres d'erreurs eccessives pour****
**** les machines SUN 'ET' HP ****
************************************************************
************************************************************
'OPTION' 'ECHO' 1 ;
'OPTION' 'DIME' 3 ;
'OPTION' 'ELEM' 'CUB8' ;
'OPTION' 'TRAC' 'X' ;
GRAPH=FAUX;
*
*** MAILLAGE
*
A0 = 0.0D0 0.0D0 0.0D0;
A1 = 3.0D0 0.0D0 0.0D0;
A2 = 3.0D0 3.0D0 0.0D0;
A3 = 0.0D0 3.0D0 0.0D0;
B0 = 0.0D0 0.0D0 3.0D0;
B1 = 3.0D0 0.0D0 3.0D0;
B2 = 3.0D0 3.0D0 3.0D0;
B3 = 0.0D0 3.0D0 3.0D0;
N=7;
N1=7;
LIN1 = A0 DROIT N1 A1;
LIN2 = A1 DROIT N1 A2;
LIN3 = A2 DROIT N1 A3;
LIN4 = A3 DROIT N1 A0;
LI1 = B0 DROIT N B1;
LI2 = B1 DROIT N B2;
LI3 = B2 DROIT N B3;
LI4 = B3 DROIT N B0;
L1 = A0 DROIT N B0;
L2 = A1 DROIT N B1;
L3 = A2 DROIT N B2;
L4 = A3 DROIT N B3;
S1='DALL' LIN1 LIN2 LIN3 LIN4 'PLAN';
S2='DALL' LIN1 L2 LI1 L1 'PLAN';
S3='DALL' LIN2 L3 LI2 L2 'PLAN';
S4='DALL' LIN3 L4 LI3 L3 'PLAN';
S5='DALL' LIN4 L1 LI4 L4 'PLAN';
S6='DALL' LI1 LI2 LI3 LI4 'PLAN';
DOMTOT=S1 'VOLU' N S6;
*DOMTOT=(S1 et S2 et S3 et S4 et S5 et S6) 'VOLU';
'ELIM' 1.0D-12 DOMTOT (S1 et S2 et S3 et S4 et S5 et S6);
*
**** Le domaine interne
*
GCTOT = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT'
(S1 et S2 et S3 et S4 et S5 et S6);
DOMINT = DOMTOT 'DIFF' GCTOT ;
$DOMTOT = 'MODE' DOMTOT 'EULER' ;
$DOMINT = 'MODE' DOMINT 'EULER' ;
$GCTOT = 'MODE' GCTOT 'EULER' ;
TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
TDOMINT = 'DOMA' $DOMINT 'VF' ;
TGCTOT = 'DOMA' $GCTOT 'VF' ;
MDOMTOT = TDOMTOT . 'QUAF';
MDOMINT = TDOMINT . 'QUAF';
MGCTOT = TGCTOT . 'QUAF';
'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MGCTOT) 1D-6;
$DOMTOT1 = 'MODELISER' MDOMTOT 'NAVIER_STOKES' 'LINE' ;
$DOMINT1 = 'MODELISER' MDOMINT 'NAVIER_STOKES' 'LINE' ;
$GCTOT1 = 'MODELISER' MGCTOT 'NAVIER_STOKES' 'LINE' ;
TDOMTOT1 = 'DOMA' $DOMTOT1 'TABLE' ;
TDOMINT1 = 'DOMA' $DOMINT1 'TABLE' ;
TGCTOT1 = 'DOMA' $GCTOT1 'TABLE' ;
*
*** Calcul du gradient pour un champ lineaire
*
COEF1X = 2.01517 ;
COEF1Y = 3.1421 ;
COEF1Z = 1.5;
COEF2X = -2.7 ;
COEF2Y = -3.21 ;
COEF2Z = -0.56;
XX YY ZZ= 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
CHP1 = (COEF1X '*' XX) '+' (COEF1Y '*' YY) '+' (COEF1Z '*' ZZ) ;
CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
CHP2 = (COEF2X '*' XX) '+' (COEF2Y '*' YY) '+' (COEF2Z '*' ZZ);
CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
CHP3 = 'BRUIT' 'BLAN' 'UNIF' 0.0D0 1.0D0 ('DOMA' $DOMTOT 'CENTRE');
* CHP3 = (COEF2X '*' XX) '+' (COEF2Y '*' YY) '+' (COEF2Z '*' ZZ);
CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
*
**** Connectivite entre les symetriques
*
'REPETER' BLLIM ('NBEL' ('ENVE' DOMINT)) ;
ELE0 = ('ENVE' DOMINT) 'ELEM' &BLLIM;
ELE0 = ELE0 'CHAN' 'POI1';
P0 = ELE0 'POINT' 1;
X0 Y0 Z0= 'COORDONNEE' P0 ;
P1 = ELE0 'POINT' 2;
X1 Y1 Z1= 'COORDONNEE' P1 ;
P2 = ELE0 'POINT' 3;
X2 Y2 Z2= 'COORDONNEE' P2 ;
P3 = ELE0 'POINT' 4;
X3 Y3 Z3= 'COORDONNEE' P3 ;
XFAC = (X0 '+' X1 '+' X2 '+' X3) '/' 4 ;
YFAC = (Y0 '+' Y1 '+' Y2 '+' Y3) '/' 4 ;
ZFAC = (Z0 '+' Z1 '+' Z2 '+' Z3) '/' 4 ;
PFAC = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC ZFAC);
GEOFAC1 = ('DOMA' $DOMINT 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
GEOFAC2 = ('DOMA' $GCTOT 'FACEL') 'ELEM' 'APPUYE'
'LARGEMENT' PFAC ;
*
**** Tranformation en POI1
*
GEO1POI1 = 'CHANGER' 'POI1' GEOFAC1 ;
PCEL11 = GEO1POI1 'POIN' 1 ;
PCEL12 = GEO1POI1 'POIN' 2 ;
GEO2POI1 = 'CHANGER' 'POI1' GEOFAC2 ;
PCEL21 = GEO2POI1 'POIN' 1 ;
PCEL22 = GEO2POI1 'POIN' 2 ;
*
**** Il faur verifier que PFAC = PCEL12 = PCEL22
* ('NBEL' GEO1POI1) = ('NBEL' GEO2POI1) = 2
*
'SI' ( ('NBEL' GEO1POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( ('NBEL' GEO2POI1) 'NEG' 2);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL12 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' ( PCEL22 'NEG' PFAC);
'MESSAGE' ;
'MESSAGE'
'Probleme dans la creation du domaine entree subsonique';
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
*
*** Creation d'un maillage SEG2
*
'SI' (&BLLIM 'EGA' 1);
CONBOR = 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'BLEU' ;
BORD = 'MANU' 'POI1' PFAC;
CB = PCEL21;
'SINON' ;
CONBOR = CONBOR 'ET'
( 'MANUEL' 'SEG2' PCEL11 PCEL21 'COULEUR' 'BLEU' );
BORD = BORD 'ET' ('MANU' 'POI1' PFAC);
CB = CB 'ET' PCEL21;
'FINSI' ;
'FIN' BLLIM ;
*
**** On doit imposer une condition de bord
*
CHPCONT='KPRO' CHP CONBOR;
CHP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' CHP CHPCONT;
*
*
**** N.B. : CHP1 n'as pas comme support geometrique
* ($DOMTOT 'CENTRE')
*
GRCHP0 ALCHP0 COEF = 'PENT' $DOMTOT 'CENTRE'
'EULESCAL' 'LIMITEUR'
('MOTS' 'UX' 'UY' 'UZ') CHP;
GRCHP01 ALCHP01 COEF1 = 'PENT' $DOMTOT1 'CENTRE'
'EULESCAL' 'LIMITEUR'
('MOTS' 'UX' 'UY' 'UZ') CHP;
GRCHP1 ALCHP1 COEF = 'PENT' $DOMINT 'CENTRE' 'EULESCAL'
'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ')
('REDU' CHP ('DOMA' $DOMINT 'CENTRE'));
GRCHP = 'REDU' GRCHP0 ('DOMA' $DOMINT 'CENTRE');
ALCHP = 'REDU' ALCHP0 ('DOMA' $DOMINT 'CENTRE');
*
**** Le gradient calculé sur le domaine interne est le
**** même que celui calculé avec les symétriques au bord
*
ERRO = 'MAXIMUM' (GRCHP1 '-' GRCHP) 'ABS' ;
'SI' (ERRO > 5.D-6);
'MESSAGE' 'Probleme dans Grad';
'MESSAGE' ERRO;
'ERREUR' 5 ;
'FINSI';
ERRO = 'MAXIMUM' (ALCHP1 '-' ALCHP) 'ABS';
'SI' (ERRO > 5.D-6);
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans Lim');
'MESSAGE' ERRO;
'ERREUR' 5;
'FINSI' ;
'SI' GRAPH;
UNCH1=VECT GRCHP1 0.1 'P1DX' 'P1DY' 'P1DZ' ROUGE;
UNCH2=VECT GRCHP1 0.1 'P2DX' 'P2DY' 'P2DZ' VERT;
UNCH3=VECT GRCHP1 0.1 'P3DX' 'P3DY' 'P3DZ' VERT;
UNCH4=VECT GRCHP 0.1 'P1DX' 'P1DY' 'P1DZ' BLEU;
UNCH5=VECT GRCHP 0.1 'P2DX' 'P2DY' 'P2DZ' BLANC;
UNCH6=VECT GRCHP 0.1 'P3DX' 'P3DY' 'P3DZ' BLANC;
TRAC (UNCH1 'ET' UNCH4) DOMINT;
TRAC (UNCH2 'ET' UNCH5) DOMINT;
TRAC (UNCH3 'ET' UNCH6) DOMINT;
'FINSI';
*
**** On impose le vecteur symetrique au bord
*
NRME = 'REDU' ('DOMA' $DOMTOT 'XXNORMAF') BORD;
GNOLD = CHP;
GNPE = 'KPRO' CHP CONBOR;
NL = 'NBEL' BORD;
'REPETER' BL NL;
NX = 'EXTR' NRME 'UX' ((BORD 'ELEM' &BL) 'POIN' 1);
NY = 'EXTR' NRME 'UY' ((BORD 'ELEM' &BL) 'POIN' 1);
NZ = 'EXTR' NRME 'UZ' ((BORD 'ELEM' &BL) 'POIN' 1);
GNXOLD = 'EXTR' GNPE 'UX' ((CB 'ELEM' &BL) 'POIN' 1);
GNYOLD = 'EXTR' GNPE 'UY' ((CB 'ELEM' &BL) 'POIN' 1);
GNZOLD = 'EXTR' GNPE 'UZ' ((CB 'ELEM' &BL) 'POIN' 1);
GNN = (NX*GNXOLD) '+' (NY*GNYOLD) '+' (NZ*GNZOLD);
GNX = GNXOLD '-' (2 '*' NX '*' GNN);
GNY = GNYOLD '-' (2 '*' NY '*' GNN);
GNZ = GNZOLD '-' (2 '*' NZ '*' GNN);
GNNEW= 'MANU' 'CHPO' (CB 'ELEM' &BL) 3
'UX' GNX 'UY' GNY 'UZ' GNZ;
CHP= 'KCHT' $DOMTOT 'VECT' 'CENTRE' GNOLD GNNEW;
GNOLD = CHP;
'FIN' BL;
*
**** N.B. : CHP1 n'as pas comme support geometrique
* ($DOMTOT 'CENTRE')
*
GRCHP0 ALCHP0 COEF = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT'
'LIMITEUR'
('MOTS' 'UX' 'UY' 'UZ') CHP;
GRCHP1 ALCHP1 COEF = 'PENT' $DOMINT 'CENTRE' 'EULEVECT'
'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ')
('REDU' CHP ('DOMA' $DOMINT 'CENTRE'));
GRCHP = 'REDU' GRCHP0 ('DOMA' $DOMINT 'CENTRE');
ALCHP = 'REDU' ALCHP0 ('DOMA' $DOMINT 'CENTRE');
*
**** Le bord est bien calcule
*
ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
'SI' (ERRO > 5D-6);
'MESSAGE' 'Probleme dans Grad';
'MESSAGE' erro;
'ERREUR' 5 ;
'FINSI';
ERRO = 'MAXIMUM' (ALCHP '-' ALCHP1) 'ABS' ;
'SI' (ERRO > 5D-6);
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Probleme dans Lim');
'MESSAGE' erro;
'ERREUR' 5;
'FINSI' ;
'SI' GRAPH;
UNCH1=VECT GRCHP1 0.1 'P1DX' 'P1DY' 'P1DZ' ROUGE;
UNCH2=VECT GRCHP1 0.1 'P2DX' 'P2DY' 'P2DZ' VERT;
UNCH3=VECT GRCHP1 0.1 'P3DX' 'P3DY' 'P3DZ' VERT;
UNCH4=VECT GRCHP 0.1 'P1DX' 'P1DY' 'P1DZ' BLEU;
UNCH5=VECT GRCHP 0.1 'P2DX' 'P2DY' 'P2DZ' BLANC;
UNCH6=VECT GRCHP 0.1 'P3DX' 'P3DY' 'P3DZ' BLANC;
TRAC (UNCH1 'ET' UNCH4) DOMINT;
TRAC (UNCH2 'ET' UNCH5) DOMINT;
TRAC (UNCH3 'ET' UNCH6) DOMINT;
'FINSI';
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer