* fichier :  konv_gamma.dgibi
************************************************************************
* Section : Fluides Euler
************************************************************************
***********************************************************
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la    ****
**** solution des                                      **** 
**** Equations d Euler pour un gaz parfait             ****
**** OPERATEURS PRIM, PRET, KONV                       ****
**** Computation of preconditioned jacobians           ****
****                                                   ****
**** Cas gaz monoespece, "calorically perfect"         ****
****                                                   ****
**** A. BECCANTINI DRN/DMT/SEMT/LTMF    AOUT  2002     ****
***********************************************************
***********************************************************

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

*
*** GRAPH
*

 GRAPH = FAUX ;
*  GRAPH = VRAI ;

 ERRTOL = 1.0D-3 ;

***************************
***** DOMAINE SPATIAL  ****
***************************


 A0 = 0.0D0 0.0D0;
 A1 = 1.0D0 0.0D0;
 A2 = 2.0D0 0.0D0;
 A3 = 3.0D0 0.0D0;

 A0A1 = A0 'DROIT' 1 A1;
 A1A2 = A1 'DROIT' 1 A2;
 A2A3 = A2 'DROIT'  1 A3;


 DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ;
 DOM2 = DOM1 'PLUS' (0.0 1.0) ;
 DOM3 = DOM2 'PLUS' (0.0 1.0) ;
 DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ;
 DOM5 = DOM4 'PLUS' (0.0 1.0) ;
 DOM6 = DOM5 'PLUS' (0.0 1.0) ;
 DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ; 
 DOM8 = DOM7 'PLUS' (0.0 1.0) ;
 DOM9 = DOM8 'PLUS' (0.0 1.0) ;

 
 DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
          DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ;
 
 $DOMTOT = 'MODE' DOMTOT 'EULER' ;
 TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
 MDOMTOT = TDOMTOT . 'QUAF' ;
 'ELIM' MDOMTOT 0.0001 ;

***************************************************
***** Densité, pression, vitesse, gamma ***********
***************************************************

 RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
 PN0 = 'BRUI' 'BLAN' 'UNIF' 1.234 0.8 ('DOMA' $DOMTOT 'CENTRE') ;
 GAMMAN = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 1.4
   'NATU' 'DISCRET' ;
 CSONN = (GAMMAN '*' PN0) '/' RN0 ;
 CSONN = 'KOPS' CSONN '**' 0.5 ;
 UXN0  = 0.2 *  CSONN ;
 UYN0  = 0.3  * CSONN ;
 
 GN0 = ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
       ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET') ;

 ECIN = 0.5D0 '*' RN0 '*' ((UXN0  '*' UXN0) '+' (UYN0  '*' UYN0)) ;
 RETN0  = 'NOMC' 'SCAL' ((PN0  '/' (GAMMAN  '-' 1.0)) '+' ECIN)
   'NATU' 'DISCRET' ;

 VIT PRES = PRIM 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;

 ERR1 = 'MAXIMUM' (PRES '-' PN0) 'ABS' ;
 ERR2 = 'MAXIMUM' (GN0 '-' (RN0 '*' VIT ('MOTS' 'SCAL' 'SCAL')
         ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) 'ABS' ;

 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ) 'ABS' ) > 1.0D-6) ;
      'MESSAGE' 'Problem 0' ;
      'ERREUR' 5 ;
 'FINSI' ;
 

 'SI' GRAPH;
      'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET' 
           ('DOMA' $DOMTOT 'CENTRE'))
           'TITRE' 'Domaine et centre' ;
 'FINSI' ;

 VN0 = 'COPIER' VIT ;

* Identity matrix

 NOMDEN = 'RN  ' ;
 NOMMOX = 'RUXN' ;
 NOMMOY = 'RUYN' ;
 NOMRET = 'RETN' ;

 NOMVX = 'RUXN' ;
 NOMVY = 'RUYN' ;
 NOMP  = 'PN'   ;

 LISTCONS = 'MOTS' NOMDEN NOMMOX NOMMOY NOMRET ;
 LISTPRIM  = 'MOTS' NOMDEN NOMVX  NOMVY  NOMP   ;

 UN0 = ('NOMC' RN0 NOMDEN 'NATURE' 'DISCRET') 'ET'
      ('NOMC' ('MOTS' 'UX' 'UY') GN0 ('MOTS' NOMMOX NOMMOY)
       'NATURE' 'DISCRET') 'ET'
      ('NOMC' RETN0 NOMRET 'NATURE' 'DISCRET') ;

 MATIDE = 'KOPS' 'MATIDE' LISTCONS
           ('DOMA' $DOMTOT 'CENTRE') 'MATRIK' ;

 ERRO =  ('MAXIMUM' (UN0 '-' ('KOPS' 'MULT' MATIDE UN0)) 'ABS') ;

 'SI' (ERRO > ERRTOL) ;
     'MESSAGE' 'KONV' ;
     'MESSAGE' 'Probleme a!!!' ;
     'ERREUR' 5 ;
 'FINSI' ;

*
**** Jacobian CONS/PRIM
* 

 CONSPRIM  = 'PRIM' 'CONSPRIM' ('DOMA' $DOMTOT 'CENTRE')
            LISTCONS LISTPRIM
            RN0 VN0 PN0 GAMMAN ;

 COEFF =  'BRUI' 'BLAN' 'UNIF' 1.0 0.00001 ('DOMA' $DOMTOT 'CENTRE') ;

 RN = RN0 * COEFF ;
 PN = PN0 * COEFF ;
 VN = VN0 * COEFF ;

 DPRIM = ('NOMC' (RN '-' RN0) NOMDEN) '+'
         ('NOMC' (VN '-' VN0) ('MOTS' 'UX' 'UY') ('MOTS' NOMVX NOMVY))
         '+' ('NOMC' (PN '-' PN0) NOMP) ;
 GN = RN * VN ;
 RETN = (('INVERSE' (GAMMAN '-' 1.0)) '*' PN) '+' (0.5 '*' RN '*'
    ('PSCAL' VN VN ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;

 DCONV = ('NOMC' (RN '-' RN0) NOMDEN) '+'
         ('NOMC' (GN '-' GN0) ('MOTS' 'UX' 'UY') ('MOTS' NOMMOX NOMMOY))
         '+' ('NOMC' (RETN '-' RETN0) NOMRET)  ;
         
 DCONV1 = 'KOPS' 'MULT' CONSPRIM DPRIM ;

 'REPETER' BL1 ('DIME' LISTCONS) ;
    NOMV = 'EXTRAIRE' LISTCONS &BL1 ;
    CHPO1 = 'EXCO' DCONV1 NOMV ;
    CHPO2 = 'EXCO' DCONV NOMV ;
    ERRO = ('MAXIMUM' (CHPO1 '-' CHPO2) 'ABS') '/'
           ('MAXIMUM' CHPO1 'ABS') ;
    'SI' (ERRO > 1.0D-5) ;
       'MESSAGE' 'KONV' ;
       'MESSAGE' 'Problem b' ;
    'FINSI' ;
 'FIN' BL1 ;  

 'FIN' ;
 

 

 

 

 

