Download pente2.dgibi

Back to the list

* 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