Download pent3D1.dgibi

Back to the list

* 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          ****
***********************************************************

 'OPTION'  'ECHO' 0 'DIME' 2
           'ELEM' 'TRI3'
            'TRAC' 'X' ;

 GRAPH = FAUX ;
* GRAPH = VRAI ;


*
*** MESH
*

 'OPTION' 'DIME' 3 'ELEM' 'CUB8' 'ECHO' 1 ;

 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' ;
 TAB1  = 'DOMA' $DOM1 'VF' ;
 QDOM1 = TAB1 . 'QUAF' ;
*
 DOM2 = DOM1 'SYMETRIE' 'PLAN' P1 P2 P3 ;
 'ELIMINATION' DOM1 DOM2 0.0001 ;
 $DOM2 = 'MODELISER' DOM2 'EULER' ;
 TAB2  = 'DOMA' $DOM2 'VF' ;
 QDOM2 = TAB2 . 'QUAF' ;
*
 DOMTOT = DOM1 'ET' DOM2 ;
 $DOMTOT = 'MODELISER' DOMTOT 'EULER' ;
 TABTOT  = 'DOMA' $DOMTOT 'VF' ;
 QDOMTOT = TABTOT . 'QUAF' ;
*
 'ELIMINATION' QDOMTOT QDOM1 0.0001 ;
 'ELIMINATION' QDOMTOT QDOM2 0.0001 ;
*
 DOMENV = 'ENVELOPPE' DOMTOT ;
 $DOMENV = 'MODELISER' DOMENV 'EULER' ;
 TABENV  = 'DOMA' $DOMENV 'VF' ;
 QDOMENV = TABENV . 'QUAF' ;
 'ELIMINATION' QDOMTOT QDOMENV 0.0001 ;   
*
 DOMINT = 'DIFF' DOMTOT (DOMTOT 'ELEM' 'APPUYE' 'LARG'
    ('CHANGER' 'POI1' DOMENV)) ;
 $DOMINT = 'MODELISER' DOMINT 'EULER' ;
 TABINT  = 'DOMA' $DOMINT 'VF' ;
 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   ;

 XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
 
 CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
 CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
 CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
        
 CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
 CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
 CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
 
 CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
 
 GRCHP LIMCH GRG = 'PENT' $DOMTOT 'CENTRE'
     'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP ;

 LIMCH1 = 'MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
    3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;

 ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ;
 
 'SI' (ERRO > 1.0D-8) ;
      'MESSAGE' ;
      'MESSAGE' ('CHAINE' 'Probleme dans PENT');
      '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'
     'EULESCAL' 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ')
      CHP 'GRADGEO' GRG  ;

 ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;

 'SI' (ERRO > 1.0D-8) ;
      'MESSAGE' ;
      'MESSAGE' ('CHAINE' 'Probleme dans PENT');
      'MESSAGE' ;
     'ERREUR' 5;
 'FINSI' ;


* 
* TEST2 : we check that the computation is exact on the internal domain
*

 GRCHPI = 'REDU' GRCHP ('DOMA' $DOMINT 'CENTRE') ;

 
 GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DX'  A11
  'NATU' 'DISCRET' ;
        
 GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DY'  A12
  'NATU' 'DISCRET';
        
 GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DZ'  A13
  'NATU' 'DISCRET';
        
 GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DX'  B11
  'NATU' 'DISCRET';
        
 GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DY'  B12
  'NATU' 'DISCRET';
        
 GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DZ'  B13
  'NATU' 'DISCRET';
        
 GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DX'  C11
  'NATU' 'DISCRET';
        
 GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DY'  C12
  'NATU' 'DISCRET';
        
 GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DZ'  C13
  '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 ;
     MOD1     =  'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' $DOMINT 'CHAM' MERRCH ;
     'TRACER'  CHM_MER  MOD1 'TITR'  ('CHAINE'  'EULESCAL: erreur');
 'FINSI'  ;

 ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  
 'SI' (ERRO > 1.0D-8) ;
      'MESSAGE' ;
      'MESSAGE' ('CHAINE' 'Probleme dans PENT');
      'MESSAGE' ;
     'ERREUR' 5;
 'FINSI' ;

* 
* TEST3 : we impose the linear field values on the border.
*         In that case error must be "zero" everywhere.
*

 XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMENV 'CENTRE') ;
 
 CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
 CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
 CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
        
 CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
 CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
 CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
 
 CHPLI = CHP1 'ET' CHP2 'ET' CHP3 ;
 
 GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE'
     'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP 'CLIM' CHPLI ;

 GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
     'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
     CHP 'CLIM' CHPLI 'GRADGEO'  GRGL  ;

 ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;

 'SI' (ERRO > 1.0D-8) ;
      'MESSAGE' ;
      'MESSAGE' ('CHAINE' 'Probleme dans PENT');
      'MESSAGE' ;
      'ERREUR' 5;
 'FINSI' ;

 GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX'  A11
  'NATU' 'DISCRET' ;
        
 GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY'  A12
  'NATU' 'DISCRET';
        
 GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DZ'  A13
  'NATU' 'DISCRET';
        
 GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX'  B11
  'NATU' 'DISCRET';
        
 GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY'  B12
  'NATU' 'DISCRET';
        
 GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DZ'  B13
  'NATU' 'DISCRET';
        
 GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DX'  C11
  'NATU' 'DISCRET';
        
 GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DY'  C12
  'NATU' 'DISCRET';
        
 GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DZ'  C13
  '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 ;
     MOD1     =  'MODELISER'  ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' $DOMTOT 'CHAM' MERRCH ;
     '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' ('CHAINE' 'Probleme dans PENT');
      'MESSAGE' ;
     'ERREUR' 5;
 'FINSI' ;

*
**** TEST4: wall boudary condition for a scalar field (EULESCAL)
*
 CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
 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 ;
 NN = 'NBNO' AA ;
 CHPSYM CACCA = 'KOPS' 'MATRIK' ;
 'REPETER' BL1 NN ;
     BB = 'POIN' &BL1 AA ;
     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 ;
     CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
                        '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' 
                    'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
 GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
 ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
 'SI' GRAPH ;
     MODT  =  'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
     CHM_CHP  =  'KCHA' $DOMTOT 'CHAM' CHPTOT ;
     'TRACER'  CHM_CHP  MODT 'TITR'  ('CHAINE'  'EULESCAL: champ');
     MOD1  =  'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' $DOM1 'CHAM' ERRO ;
     'TRACER'  CHM_MER  MOD1 'TITR'  ('CHAINE'  'EULESCAL: erreur');
 'FINSI'  ;
 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
    'ERREUR' 5 ;
 'FINSI' ;

*
**** TEST5: boudary condition for a vectorial field (EULEVECT)
*

 CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
 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 ;
 NN = 'NBNO' AA ;
 CHPSYM CACCA = 'KOPS' 'MATRIK' ;
 'REPETER' BL1 NN ;
     BB = 'POIN' &BL1 AA ;
     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 ;     
     CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
                        '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' 
                    'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
 GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
 ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
 'SI' GRAPH ;
     MODT  =  'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
     CHM_CHP  =  'KCHA' $DOMTOT 'CHAM' CHPTOT ;
     'TRACER'  CHM_CHP  MODT 'TITR'  ('CHAINE'  'EULEVECT: champ');
     MOD1  =  'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' $DOM1 'CHAM' ERRO ;
     'TRACER'  CHM_MER  MOD1 'TITR'  ('CHAINE'  'EULEVECT: erreur');
 'FINSI'  ;
 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
    'ERREUR' 5 ;
 'FINSI' ;

 'FIN' ;

 

© Cast3M 2003 - All rights reserved.
Disclaimer