Download pent3D3.dgibi

Back to the list

* 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