Download pente3D.dgibi

Back to the list

* fichier :  pente3D.dgibi
***********************************************************
**** Finite Volume, "Cell-Centred Formulation".        ****
**** PENT, operator to compute gradients and limiters  ****
****                                                   ****
**** 3D VALIDATION                                     ****
****                                                   ****
**** T. KLOCZKO, LTMF   JULY  2005                     ****
****                                                   ****
***********************************************************
*
*** Choix du type d'élément
*
 TYEL = TET4 ;
* TYEL = PYR5 ;
* TYEL = PRI6 ;
* TYEL = CUB8 ;
*
*** Options gibiane
*
 'OPTION' 'DIME' 3 'ELEM' TYEL 'TRAC' 'X'
          'ISOV' 'SULI' 'ECHO' 1 ;
*
*** Option de tracé
*
* GRAPH = VRAI ;
 GRAPH = FAUX ;
*
***************************************************
*** CANAL SECTION CARRÉE AVEC BOSSE SINUSOÏDALE ***
***************************************************
*
  RAF  = 1 ;
  VRAF = 9. '*' RAF ;
  Lref = 1. ;
  Size = Lref '/' VRAF ;

  Lx = 4. ;
  Ly = 0.5 ;
  Lz = 1. ;
  DX = Size ;
  DY = Size ;
  DZ = Size ;
  NX = 'ENTIER' (Lx '/' Size '+' 0.1) ;
  NY = 'ENTIER' (Ly '/' Size '+' 0.1) ;
  NZ = 'ENTIER' (Lz '/' Size '+' 0.1) ;
*
*** Sommets du domaine de calcul
*
  P0 = 0.0                0.0 0.0 ;
  P1 = (Lx '/' 4.)        0.0 0.0 ;
  P2 = (3. '*' Lx '/' 4.) 0.0 0.0 ;
  P3 = Lx                 0.0 0.0 ;
  P4 = Lx                 0.0 Lz  ;
  P5 = 0.0                0.0 Lz  ;

  P6  = 0.0                Ly  0.0 ;
  P7  = (Lx '/' 4.)        Ly  0.0 ;
  P8  = (3. '*' Lx '/' 4.) Ly  0.0 ;
  P9  = Lx                 Ly  0.0 ;
  P10 = Lx                 Ly  Lz  ;
  P11 = 0.0                Ly  Lz  ;

*
*** Calcul des arêtes
*
  P0P1  = 'DROIT' P0 P1  DINI DX DFIN DX ;
  P1P2  = 'DROIT' P1 P2  DINI DX DFIN DX ;
  P2P3  = 'DROIT' P2 P3  DINI DX DFIN DX ;
  P0P3  = P0P1 'ET' P1P2 'ET' P2P3 ;
  P4P5  = 'DROIT' P4 P5  DINI DX DFIN DX ;

  P6P7  = 'DROIT' P6 P7  DINI DX DFIN DX ;
  P7P8  = 'DROIT' P7 P8  DINI DX DFIN DX ;
  P8P9  = 'DROIT' P8 P9  DINI DX DFIN DX ;
  P6P9  = P6P7 'ET' P7P8 'ET' P8P9 ;
  P10P11 = 'DROIT' P10 P11  DINI DX DFIN DX ;
  
  P0P6  = 'DROIT' P0 P6  DINI DY DFIN DY ;
  P5P11 = 'DROIT' P5 P11 DINI DY DFIN DY ;
  P3P9  = 'DROIT' P3 P9  DINI DY DFIN DY ;
  P4P10 = 'DROIT' P4 P10 DINI DY DFIN DY ;

  P0P5  = 'DROIT' P0 P5  DINI DZ DFIN DZ ;
  P3P4  = 'DROIT' P3 P4  DINI DZ DFIN DZ ;
  P9P10 = 'DROIT' P9 P10 DINI DZ DFIN DZ ;
  P6P11 = 'DROIT' P6 P11 DINI DZ DFIN DZ ;  
*
*** Calcul des surfaces
*                   
* Inlet
  SURFI = 'SURFACE' (('INVERSE' P0P6) 'ET' P0P5 'ET' P5P11
                     'ET' ('INVERSE' P6P11)) 'PLAN' ;
  SURFI = 'COULEUR' SURFI 'VERT' ;
  
* Outlet
  SURFO = 'SURFACE' (('INVERSE' P3P9) 'ET' P3P4 'ET' P4P10
                     'ET' ('INVERSE' P9P10)) 'PLAN' ;
  SURFO = 'COULEUR' SURFO 'ROUG' ;
  
* Up
  SURFU = 'SURFACE' (('INVERSE' P4P5) 'ET' P4P10 'ET' P10P11
                     'ET' ('INVERSE' P5P11)) 'PLAN' ;
  SURFU = 'COULEUR' SURFU 'TURQ' ;
  
* Down
*
* On trace en premier lieu une surface plane que l'on déforme
* par un champ de déplacement ad hoc.
  SURFD = 'SURFACE' (P0P3 'ET' P3P9 'ET' ('INVERSE'P6P9)
                    'ET' ('INVERSE' P0P6)) 'PLAN' ;
  SURFD = 'COULEUR' SURFD 'BLEU' ;
*
*** Création du déplacement pour générer la bosse
*
  NBPTD = 'NBNO' SURFD ;
  SURD1 = 'CHANGER' SURFD 'POI1' ;
  CHPMOUV CACA = 'KOPS' MATRIK ;
  'REPETER' DBCL NBPTD ;
      PSD  = 'POINT' SURD1 &DBCL ;
      XSD  = ('COORDONNEE' 1 PSD) ;
      'SI' (XSD < (Lx '/' 4.)) ;
           CHPI = 'MANU' 'CHPO' PSD 3
                  'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
      'SINON' ;
           'SI' (XSD > (3. '*' Lx '/' 4.)) ;
                CHPI = 'MANU' 'CHPO' PSD 3
                       'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
           'SINON' ;
                ZSD = (0.1D0 '*' Lx '/' 4.) '*'  (1.D0 +
                    ('COS' (180.D0 '*' ((4. '*' XSD '/' Lx) '-' 2.)))) ;
                CHPI = 'MANU' 'CHPO' PSD 3
                       'UX' 0.D0 'UY' 0.D0 'UZ' ZSD ;
           'FINSI' ;
      'FINSI' ;
      CHPMOUV = CHPMOUV '+' CHPI ;
   'FIN' DBCL ;
*
* Modification de la forme de la surface du bas
   FSURD = 'FORM' CHPMOUV ;

* Front
   SURFF = 'SURFACE' (P0P3 'ET' P3P4 'ET' P4P5
                      'ET' ('INVERSE' P0P5)) 'PLAN' ;
* Back
   SURFB = 'SURFACE' (P6P9 'ET' P9P10 'ET' P10P11
                      'ET' ('INVERSE' P6P11)) 'PLAN' ;
* Total Face
  SURTOT = (SURFF 'ET' SURFB 'ET' SURFI
                  'ET' SURFO 'ET' SURFU 'ET' SURFD) ;
  'ELIMINATION' SURTOT (Size '/' 1.D3)  ;

  'SI' GRAPH ;
     'TRACER' SURTOT  'TITRE'
        ('CHAINE' 'Enveloppe, nbel=' ('NBEL' SURTOT)) ;
  'FINSI' ;
*
*** Volume
*
  DOMTOT = 'VOLUME' SURTOT ;
*
*** Surface latérale
*
  SURTOT = 'ENVELOPPE' DOMTOT ;
 si graph;'TRACER' surtot ;finsi;
  
  MAICON = DOMTOT 'ELEM'  'APPUYE' 'LARGEMENT' SURTOT ;
  DOMINT = DOMTOT 'DIFF' MAICON 'COULEUR' 'ROUGE' ;
*
**** Creation of MODELS
* 

 MDOMTOT  = 'MODELISER' DOMTOT 'EULER' ;
 MDOMINT  = 'MODELISER' DOMINT 'EULER' ;
 MSURTOT  = 'MODELISER' SURTOT 'EULER' ;

 TDOMTOT  = 'DOMA' MDOMTOT 'VF' ;
 TDOMINT  = 'DOMA' MDOMINT 'VF' ;
 TSURTOT  = 'DOMA' MSURTOT 'VF' ;
 
 QDOMTOT  = TDOMTOT . 'QUAF' ;
 QDOMINT  = TDOMINT . 'QUAF' ;
 QSURTOT  = TSURTOT . 'QUAF' ;

 'ELIMINATION' (QDOMTOT 'ET' QDOMINT 'ET' QSURTOT)
               (1.d-3 '/' (RAF '*' 1.)) ;
 
 'SI' GRAPH ;
    'TRACER' DOMTOT  'TITRE'
       ('CHAINE' 'Domaine, nbel=' ('NBEL' DOMTOT)) ;
    'TRACER' MAICON 'TITRE'
       ('CHAINE' 'Mailles extérieures, nbel=' ('NBEL' MAICON)) ;
    'TRACER' DOMINT 'TITRE'
       ('CHAINE' 'Mailles intérieures, nbel=' ('NBEL' DOMINT)) ;
 'FINSI' ;
*
**** The interface points (for limit condition)
*
 SURC = ('DOMA' MSURTOT 'CENTRE') 'COULEUR' 'BLEU';
 'REPETER' BLLIM (('NBEL' SURC)) ;
     POIN0 = 'POIN' SURC &BLLIM ;    
     XFAC YFAC ZFAC = 'COORDONNEE' POIN0 ;
     PFAC = ('DOMA' MDOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC ZFAC);
     'SI' (&BLLIM 'EGA' 1) ;
         GEOLIM = 'MANUEL' 'POI1' PFAC 'BLEU' ;
     'SINON' ;
         GEOLIM = GEOLIM 'ET' ('MANUEL' 'POI1' PFAC 'BLEU') ;
     'FINSI' ;
 'FIN' BLLIM ;
*
 'SI' GRAPH ;
     'TRACER' (DOMTOT 'ET' GEOLIM)
           'TITRE' 'DOMTOT et points faces aux bords';
 'FINSI' ;
* 
***********************************************
********* CHP:  scalar linear field   *********
*********       EULESCAL              *********
***********************************************
*
* (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
*

 A11 = 12.01517  ;
 A12 = 13.1421   ;
 A13 = 14.0412   ;
 A0 = -3.21   ;

 B11 = 22.01517  ;
 B12 = 43.1421   ;
 B13 = 35.5463   ;
 B0 = -5.21   ;

 C11 = 24.01517  ;
 C12 = 46.1421   ;
 C13 = 39.5463   ;
 C0 = -6.21   ;

 XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT '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' 'C1' CHP1 'NATU' 'DISCRET' ;
 CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
 CHP3 = 'NOMC' 'C3' CHP3 'NATU' 'DISCRET' ;
 
 CHP = CHP1 'ET' CHP2 'ET' CHP3 ;

 MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
 
 GRCHP LIMCH GRG = 'PENT' MDOMTOT 'CENTRE'
                   'EULESCAL' 'NOLIMITE' MOTC  CHP ;

 LIMCH1 = 'MANU' 'CHPO' ('DOMA' MDOMTOT '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
*

 MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
 GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
                'EULESCAL' 'LIMITEUR' MOTC
                CHP 'GRADGEO' GRG  ;
 'LISTE' MOTC ;
 
 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' MDOMINT 'CENTRE') ;

 
 GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX'  A11
  'NATU' 'DISCRET' ;
        
 GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY'  A12
  'NATU' 'DISCRET';

 GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ'  A13
  'NATU' 'DISCRET';
        
 GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX'  B11
  'NATU' 'DISCRET';
        
 GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY'  B12
  'NATU' 'DISCRET';
  
 GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ'  B13
  'NATU' 'DISCRET';

 GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX'  C11
  'NATU' 'DISCRET';
        
 GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY'  C12
  'NATU' 'DISCRET';
  
 GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT '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' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' MDOMINT '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.
*

 XLIM  YLIM ZLIM = 'COORDONNEE' GEOLIM ;

 CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0;
        
 CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0;

 CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0;
        
 CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
 CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
 CHPLI3 = 'NOMC' 'C3' CHPLI3 'NATU' 'DISCRET' ;
 
 CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;

 MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
 
 GRCHPL LIMCH GRGL = 'PENT' MDOMTOT 'CENTRE'
                     'EULESCAL' 'NOLIMITE' MOTC  CHP 'CLIM' CHPLI ;

 MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
 GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
                'EULESCAL' 'NOLIMITE' MOTC
                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' MDOMTOT 'CENTRE') 1 'P1DX'  A11
  'NATU' 'DISCRET' ;
        
 GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY'  A12
   'NATU' 'DISCRET';

 GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ'  A13
   'NATU' 'DISCRET';
        
 GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX'  B11
   'NATU' 'DISCRET';
        
 GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY'  B12
   'NATU' 'DISCRET';

 GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ'  B13
   'NATU' 'DISCRET';

 GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX'  C11
   'NATU' 'DISCRET';
        
 GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY'  C12
   'NATU' 'DISCRET';

 GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT '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' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
     CHM_MER  =  'KCHA' MDOMTOT 'CHAM' MERRCH ;
                 'TRACER'  CHM_MER  MOD1 'TITR'
                 ('CHAINE'  'EULESCAL avec C.L. : Erreur') ;
 'FINSI'  ;

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

 
*
**** TEST4: boudary condition for a scalar field (EULESCAL)
*

*** Symétrie de référence et objet modèle
*
  VOLI = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
  $VOLI = 'MODELISER' VOLI 'EULER' ;
  TVOLI = 'DOMA' $VOLI 'VF' ;
  QVOLI = TVOLI . 'QUAF' ;
*
*** Champoints quelconques
*
  XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
 
  CHP1 = ('NOMC' 'C1' (yy * ('EXP'(XX) '+' ZZ))  'NATU' 'DISCRET') ;
  CHP2 = ('NOMC' 'C2' (yy '+' (3 '*' ZZ))  'NATU' 'DISCRET') ;
  CHP3 = ('NOMC' 'C3' (XX * ('EXP'(ZZ) '+' ZZ))  'NATU' 'DISCRET') ;
*
*** Plan de symétrie
*
  PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
*
*** Champoints symétriques
*
  CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
  CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
  CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
  'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
*
*** Visualisation des maillages
*
  VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6)  'COULEUR' 'ROUG' ;
  VTOT = (VOLI 'ET' VSYM) ;
  'ELIMINATION' VTOT 1.d-5 ;
*
  'SI' GRAPH ;
     'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
  'FINSI' ;
*
*** Objet modèle
*
  $VTOT = 'MODELISER' VTOT 'EULER' ;
  TVTOT = 'DOMA' $VTOT 'VF' ;
  QVTOT = TVTOT . 'QUAF' ;
  'ELIMINATION' QVOLI 1.D-5 QVTOT ;
  'ELIMINATION' QVTOT 1.D-5 CNEW1   ;

*
*** Calcul du gradient
*

  CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
  CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
  CHPTOT = CHPSYM 'ET' CHPPET ;
 
 
  GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
                     ('MOTS' 'C1' 'C2' 'C3') CHPTOT   ;

  GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULESCAL' 'NOLIMITE'
                       ('MOTS' 'C1' 'C2' 'C3')
                       ('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;

 
  ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE')) ;

  LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
                'P2DX' 'P2DY' 'P2DZ'
                'P3DX' 'P3DY' 'P3DZ' ;
               
  MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5  ;

  'SI' GRAPH ;
      MOD1     =  'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
      CHM_MER  =  'KCHA' $VOLI 'CHAM' MERRCH ;
                  'TRACER'  CHM_MER  MOD1
                  'TITR'  ('CHAINE'  'EULESCAL sur les bords: erreur') ;
  'FINSI'  ;
 
  ERRO = 'MAXIMUM' MERRCH 'ABS' ;
  'LISTE' ERRO ;

   
  'SI' (ERRO > 1.0D-8) ;
       'MESSAGE' ;
       'MESSAGE' ('CHAINE' 'Probleme dans PENT');
       'MESSAGE' ;
      'ERREUR' 5 ;
  'FINSI' ;
* 
***************************************************
********* CHP:  vectorial linear field ************
*********         EULEVECT         ****************
***************************************************
*
* (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
*

  A11 = 11.3 ;
  A12 = 0.23 ;
  A13 = 2.46 ; 
  A0  = 1.0  ;

  B11 = 77.0 ;
  B12 = 0.6  ;
  B13 = 9.2  ;
  B0  = 9.11 ;

  C11 = 1.89 ;
  C12 = 44.7 ;
  C13 = 0.87 ;
  C0  = 4.0  ;

  XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT '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 ;

  MOTC = ('MOTS' 'UX' 'UY' 'UZ') ;
  GRCHP LIMCHP GRG = 'PENT' MDOMTOT 'CENTRE'
                     'EULEVECT' 'NOLIMITE' MOTC  CHP ;
  'LISTE' MOTC ;

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

  ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCHP) '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 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
                  'EULEVECT' 'NOLIMITE' MOTC
                  CHP 'GRADGEO' GRG  ;

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

  'SI' (ERRO > 5.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' MDOMINT 'CENTRE') ;

 
  GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX' A11
          'NATU' 'DISCRET' ;
        
  GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY'  A12
          'NATU' 'DISCRET';

  GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ'  A13
          'NATU' 'DISCRET';
        
  GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX'  B11
          'NATU' 'DISCRET';
        
  GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY'  B12
          'NATU' 'DISCRET';

  GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ'  B13
          'NATU' 'DISCRET';

  GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX'  C11
          'NATU' 'DISCRET';
        
  GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY'  C12
          'NATU' 'DISCRET';

  GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT '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  ;
 
*
*** CREATION DE 'MODEL' POUR GRAPHIQUER LE CHAMELEM   ***
*

  'SI' GRAPH ;
      MOD1     =  'MODELISER'  ('DOMA' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
      CHM_MER  =  'KCHA' MDOMINT 'CHAM' MERRCH ;
                  'TRACER'  CHM_MER  MOD1 'TITR'
                  ('CHAINE'  'EULEVECT: Erreur') ; 
  'FINSI'  ;

  ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  
  'SI' (ERRO > 5.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.
*

  XLIM  YLIM ZLIM  = 'COORDONNEE' GEOLIM ;

  CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0 ;
        
  CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0 ;

  CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0 ;
        
  CHPLI1 = 'NOMC' 'UX' CHPLI1 'NATU' 'DISCRET' ;
  CHPLI2 = 'NOMC' 'UY' CHPLI2 'NATU' 'DISCRET' ;
  CHPLI3 = 'NOMC' 'UZ' CHPLI3 'NATU' 'DISCRET' ;
 
  CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;

 
  GRCHPL LIMCHP GRGL = 'PENT' MDOMTOT 'CENTRE'
                       'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
                       CHP 'CLIM' CHPLI ;

  GRCHP1 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
                  'EULEVECT' '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' MDOMTOT 'CENTRE') 1 'P1DX'  A11
          'NATU' 'DISCRET' ;
        
  GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY'  A12
          'NATU' 'DISCRET';

  GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ'  A13
          'NATU' 'DISCRET';
        
  GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX'  B11
          'NATU' 'DISCRET';
        
  GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY'  B12
          'NATU' 'DISCRET';

  GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ'  B13
          'NATU' 'DISCRET';

  GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX'  C11
          'NATU' 'DISCRET';
        
  GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY'  C12
          'NATU' 'DISCRET';

  GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT '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' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
      CHM_MER  =  'KCHA' MDOMTOT 'CHAM' MERRCH ;
                  'TRACER'  CHM_MER  MOD1 'TITR'
                  ('CHAINE'  'EULEVECT avec C.L.: erreur') ;
  'FINSI'  ;

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

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

*** Géométrie de base et objet modèle
*
  VOLI  = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
  $VOLI = 'MODELISER' VOLI 'EULER' ;
  TVOLI = 'DOMA' $VOLI 'VF' ;
  QVOLI = TVOLI . 'QUAF' ;
*
*** Construction d'un champoint
*
  XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
 
  CHP1 = ('NOMC' 'UX' (yy * ('EXP'(XX) '+' ZZ))  'NATU' 'DISCRET') ;
  CHP2 = ('NOMC' 'UY' (yy '+' (3 '*' ZZ))  'NATU' 'DISCRET') ;
  CHP3 = ('NOMC' 'UZ' (XX * ('EXP'(ZZ) '+' ZZ))  'NATU' 'DISCRET') ;
*
*** Plan de symétrie
*
  PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
*
*** Construction du champoint symétrique par rapport au plan 
*
  CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
  CHP11 = CHP11 '*' (-1.D0) ;

  CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
                 
  CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
                 'PLAN' PP0 PP5 PP6 ;
  'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
*
*** Visualisation des maillages
*
  VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6)  'COULEUR' 'ROUG' ;
  VTOT = (VOLI 'ET' VSYM) ;
  'ELIMINATION' VTOT 1.d-5 ;
*
  'SI' GRAPH ;
     'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
  'FINSI' ;
*
*** Objet modèle
*
  $VTOT = 'MODELISER' VTOT 'EULER' ;
  TVTOT = 'DOMA' $VTOT 'VF' ;
  QVTOT = TVTOT . 'QUAF' ;
  'ELIMINATION' QVOLI 1.D-5 QVTOT ;
  'ELIMINATION' QVTOT 1.D-5 CNEW1   ;
*
*** Calcul des gradients
*

  CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
  CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
  CHPTOT = CHPSYM 'ET' CHPPET ;
 
 
  GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
                     ('MOTS' 'UX' 'UY' 'UZ') CHPTOT   ;

  GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULEVECT' 'NOLIMITE'
                       ('MOTS' 'UX' 'UY' 'UZ')
                       ('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;

 
  ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE'));

  LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
                'P2DX' 'P2DY' 'P2DZ'
                'P3DX' 'P3DY' 'P3DZ' ;
               
  MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5  ;

  'SI' GRAPH ;
      MOD1     =  'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
      CHM_MER  =  'KCHA' $VOLI 'CHAM' MERRCH ;
                  'TRACER'  CHM_MER  MOD1
                  'TITR'  ('CHAINE' 'EULEVECT sur les bords: erreur') ;
  'FINSI'  ;
 
  ERRO = 'MAXIMUM' MERRCH 'ABS' ;
  'LISTE' ERRO ;

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

*
*** Fin des tests
*
  'MESSAGE' ;
  'MESSAGE' ('CHAINE' 'OK DOKY') ;
  'MESSAGE' ;
  
  'FIN' ;
 

 

 

 

 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer