Download konv_fmm_test2.dgibi

Back to the list

* fichier :  konv_fmm_test2.dgibi
*********************************************************************** 
*                                                                     * 
* 'KONV' OPERATOR                                                     *
*  FREE MATRIX METHOD implicitation.                                  *
*                                                                     * 
*  VF "cell-centered" discretization of the Euler equations.          *
*  Unknowns : U (density, momentum, total energy per volume unity     *
*  (conservative variables))                                          *
*  In the i-th cell we have to compute                                *
*                                                                     *
*    (U_i^{n+1} - U_i^{n})  * AN_i(U^{n}) =                           *
*        RES_i(U^{n}) + BN_i(U^{n}) - BN_i(U_i^{n+1})                 *
*                                                                     * 
* In this test case we compute AN et BN in a particular 1D case.      *
*                                                                     * 
* A. Beccantini                                                       * 
* SFME/LTMF                                                           * 
* 03/05/01                                                            * 
*********************************************************************** 
*
******************
**** MAILLAGE ****
******************

 TYEL = 'QUA4' ;
 
 'OPTION'  'DIME' 2  'ELEM' TYEL  'ISOV' 'SULI'
    'ECHO' 1 'TRAC' 'X' ;

 GRAPH = VRAI ;
 GRAPH = FAUX ;

*
*
*

 RAF = 1 ;

 NX = 1 ;
 NY = 1 ;
 DX = 0.5 ;

 A0 = 0.  0. ;
 A1 = 0.5 0. ;
 A2 = 0.5 0.5 ;
 A3 = 0.  0.5 ;

*
**** LIGB
*

 LIGB= A0 'DROIT' NX A1 ;

*
**** LIGH
*

 LIGH = A3 'DROIT' NX A2 ;

*
**** DOMINT
*
 
 DOMINT =  LIGH 'REGLER' NY LIGB ;
 LIGCON = 'CONTOUR' DOMINT ;
  
*
*** LIGG
*

 LIGG = LIGCON 'ELEM' 'COMP' A0  A3 ;

*
**** LIGD
*

 LIGD = LIGCON 'ELEM' 'COMP' A2  A1 ;

 FROD = LIGD 'TRANSLATION' 1 (DX 0.0) ;
 FROG = LIGG 'TRANSLATION' 1 ((-1.0 '*' DX) 0.0) ;

* DOMTOT = total region
 
 DOMTOT = DOMINT 'ET' FROD 'ET' FROG  ;
 'ELIMINATION' (1.0D-3 '/' RAF) DOMTOT ;
 
*
**** Creation of DOMAINE tables via the MODEL object
*
 
 
 $DOMTOT  = 'MODELISER' DOMTOT 'EULER' ;
 $DOMINT  = 'MODELISER' DOMINT 'EULER' ;
 $FROD    = 'MODELISER' FROD   'EULER' ;
 $FROG    = 'MODELISER' FROG   'EULER' ;
 $LIGG    = 'MODELISER' LIGG   'EULER' ;
 $LIGD    = 'MODELISER' LIGD   'EULER' ;
 
 TDOMTOT  = 'DOMA' $DOMTOT 'VF' ;
 TDOMINT  = 'DOMA' $DOMINT 'VF' ;
 TFROD    = 'DOMA' $FROD   'VF' ;
 TFROG    = 'DOMA' $FROG   'VF' ;
 TLIGG    = 'DOMA' $LIGG   'VF' ;
 TLIGD    = 'DOMA' $LIGD   'VF' ;
 
 QDOMTOT = TDOMTOT . 'QUAF' ;
 QDOMINT = TDOMINT . 'QUAF' ;
 QFROD   = TFROD   . 'QUAF' ;
 QFROG   = TFROG   . 'QUAF' ;
 QLIGG   = TLIGG   . 'QUAF' ;
 QLIGD   = TLIGD   . 'QUAF' ;
 
 
 'ELIMINATION' QDOMTOT (1.0D-3 '/' RAF) QDOMINT ;
 'ELIMINATION' QDOMTOT (1.0D-3 '/' RAF) QFROD ;
 'ELIMINATION' QDOMTOT (1.0D-3 '/' RAF) QFROG ;
 'ELIMINATION' QDOMTOT (1.0D-3 '/' RAF) QLIGD ;
 'ELIMINATION' QDOMTOT (1.0D-3 '/' RAF) QLIGG ;
*
**** SEG2 mesh for BC
*

 ELP1 = 'MANUEL' 'POI1' ('POIN' 1 ('DOMA' $LIGD 'CENTRE')) ;  
 ELTINT =  ('DOMA' $DOMINT 'FACEL')  'ELEM' 'APPUYE'  'LARGEMENT'
    ELP1 ;
 ELTFRO =  'ELEM' ('DOMA' $FROD 'FACEL')  'APPUYE'  'LARGEMENT'
    ELP1 ;
 P1 = 'POIN' 1 ELTINT ;
 P2 = 'POIN' 1 ELTFRO ;
 COND = 'MANUEL' 'SEG2' P1 P2 ;

 NBL1 = ('NBNO' ('DOMA' $LIGD 'CENTRE')) '-' 1 ;
 'SI' (NBL1 > 0) ; 
 'REPETER' BL1 NBL1 ;
    ELP1 = 'MANUEL' 'POI1' ('POIN' (&BL1 '+'  1)
          ('DOMA' $LIGD 'CENTRE')) ;
    ELTINT =  ('DOMA' $DOMINT 'FACEL')  'ELEM' 'APPUYE'  'LARGEMENT'
       ELP1 ;
    ELTFRO =  'ELEM' ('DOMA' $FROD 'FACEL')  'APPUYE'  'LARGEMENT'
       ELP1 ;
    P1 = 'POIN' 1 ELTINT ;
    P2 = 'POIN' 1 ELTFRO ;
    COND = COND 'ET' ('MANUEL'  'SEG2' P1 P2) ;
 'FIN' BL1 ;
 'FINSI' ;

 COND = COND 'COULEUR' 'ROUG' ;

 ELP1 = 'MANUEL' 'POI1' ('POIN' 1 ('DOMA' $LIGG 'CENTRE')) ;  
 ELTINT =  ('DOMA' $DOMINT 'FACEL')  'ELEM' 'APPUYE'  'LARGEMENT'
    ELP1 ;
 ELTFRO =  'ELEM' ('DOMA' $FROG 'FACEL')  'APPUYE'  'LARGEMENT'
    ELP1 ;
 P1 = 'POIN' 1 ELTINT ;
 P2 = 'POIN' 1 ELTFRO ;
 CONG = 'MANUEL' 'SEG2' P1 P2 ;

 'SI' (NBL1 > 0) ;
 NBL1 = ('NBNO' ('DOMA' $LIGG 'CENTRE')) '-' 1 ;
 'REPETER' BL1 NBL1 ;
    ELP1 = 'MANUEL' 'POI1' ('POIN' (&BL1 '+'  1)
          ('DOMA' $LIGG 'CENTRE')) ;
    ELTINT =  ('DOMA' $DOMINT 'FACEL')  'ELEM' 'APPUYE'  'LARGEMENT'
       ELP1 ;
    ELTFRO =  'ELEM' ('DOMA' $FROG 'FACEL')  'APPUYE'  'LARGEMENT'
       ELP1 ;
    P1 = 'POIN' 1 ELTINT ;
    P2 = 'POIN' 1 ELTFRO ;
    CONG = CONG 'ET' ('MANUEL'  'SEG2' P1 P2) ;
 'FIN' BL1 ;
 'FINSI' ;
 
 CONG = CONG 'COULEUR' 'ROUG' ;

 'SI' GRAPH ;
    'TRACER' (DOMTOT 'ET'  COND 'ET' CONG)  'TITRE'
        'Domaine total' ;
 'FINSI' ;
  
*****************************************************
*****************************************************
******* Initial conditions **************************
*****************************************************
*****************************************************

*

***************************************************************
***** PROCEDURE POUR CALCULER LES VARIABLES CONSERVATIVES *****
***************************************************************

 'DEBPROC' CONS ;
 'ARGUMENT' RN*'CHPOINT' VN*'CHPOINT' PN*'CHPOINT' GAMN*'CHPOINT' ;

 RVN  =  RN '*' VN ('MOTS' 'SCAL' 'SCAL') ('MOTS' 'UX' 'UY')
    ('MOTS' 'UX' 'UY') ;
 CELL = 'PSCAL' RVN VN ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY') ;
 RECIN = 0.5 '*' CELL ;
 REIN = PN '/' (GAMN '-' 1.0) ;
 RETN = RECIN '+' REIN ;

 DETR CELL ;
 DETR RECIN ;
 DETR REIN ;
 'RESPRO' RVN RETN ;
 
 'FINPROC' ;
 
***************************************************************
***************************************************************
***************************************************************

 GAMAIR = 1.4 ;
 
 
 RN0  = ('MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 1.4
        'NATURE' 'DISCRET') ;
        
 VN0  = ('MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 2 'UX'  0.5
        'UY' 0.0  'NATURE' 'DISCRET') ;

 PN0  = ('MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 4.0
        'NATURE' 'DISCRET') ;
        
 GAMN =  'MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' GAMAIR
        'NATURE' 'DISCRET' ;

 GN0 RETN0 = CONS RN0 VN0 PN0 GAMN  ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMN ;

 ERRO = 'MAXIMUM' (PN1 '-' PN0) 'ABS' ;
 
 'SI' (ERRO > 1.0D-6) ;
    'MESSAGE' 'Problem in the ic file!!!'
    'ERREUR' 5 ;
 'FINSI' ;

*
**** Plot of IC
*
 
 MOD1  =  'MODELISER'  ('DOMA' $DOMTOT 'MAILLAGE' ) 'THERMIQUE';

 'SI' GRAPH ;

    CHM_RN   =  'KCHA' $DOMTOT 'CHAM' RN0 ;
    CHM_PN   =  'KCHA' $DOMTOT 'CHAM' PN0 ;
    CHM_VN  =  'KCHA' $DOMTOT 'CHAM'  VN0 ;
    
    'TRACER'  CHM_RN  MOD1 
       'TITR'  ('CHAINE'  'RN at t='  0.0);
    'TRACER'  CHM_PN  MOD1 
       'TITR'  ('CHAINE'  'PN at t='  0.0);
    'TRACER'  CHM_VN MOD1
       'TITR'  ('CHAINE' 'VN at t='  0.0);
       
 'FINSI' ;

 MOTRN   = 'RN' ;
 MOTRNX  = 'RUX' ;
 MOTRNY  = 'RUY' ;
 MOTRETN = 'RETN' ;
 LISTINCO = 'MOTS' MOTRN MOTRNX MOTRNY MOTRETN ;

*********************************************************************
********************** TEST *****************************************
*********************************************************************

 ZERO = 1.0D-8 ;
 SAFFAC = 10. ;
 PINT = 'POIN' 1 ('DOMA' $DOMINT 'CENTRE') ;

 cson = 2. ;
 sigmaf = cson '+' 0.5 ;
 rsurf = 0.5 ;
 rvolu = 0.25 ;
 rdia = 0.5 ;
 deltat = saffac '*' 0.5 '*' (rdia '/' sigmaf) ;
 
 ani = ((1. '/' deltat) '+' ((rsurf '/' rvolu) '*' sigmaf)) ;
 ani = ani '+' ((rsurf '/' rvolu) '*' cson) ;

*

 ANINT = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'SCAL' ani ;
    
 ROF VITF PF GAMF = 'PRET' 'PERFMONO'  1 1 
    $DOMTOT RN0 VN0 PN0 GAMN  ;

 ANI1 = 'KONV' 'VF' 'PMONOFMM'  'AN'  LISTINCO
           $DOMTOT  RN0 GN0 RETN0 GAMN SAFFAC ;
  

 ERRO = 'MAXIMUM' ('REDU' ('ABS' (ANINT  '-' ANI1))
        ('DOMA' $DOMINT 'CENTRE')) ;
 
 'SI' (ERRO > ZERO) ;
    'MESSAGE' 'Probleme en KONV' ;
    'ERREUR' 5 ;
 'FINSI' ;

 BNI1 = 'KONV' 'VF' 'PMONOFMM'  'BN'  LISTINCO
           $DOMTOT  RN0 GN0 RETN0 GAMN ;

 ro = 'EXTRAIRE' RN0 'SCAL' PINT ;
 roux = 'EXTRAIRE' GN0 'UX' PINT ;
 rouy = 'EXTRAIRE' GN0 'UY' PINT ;
 retn = 'EXTRAIRE' RETN0 'SCAL' PINT ;
 
 bcel = -1 '*' (sigmaf * rsurf '/' rvolu) ;
 bcel = bcel '-' (cson * rsurf '/' rvolu) ;

 bn1 = bcel * ro ;
 bn2 = bcel * roux ;
 bn3 = bcel * rouy ;
 bn4 =  bcel * retn ;

 bna1 = 'EXTRAIRE' BNI1 'RN'   PINT ;
 bna2 = 'EXTRAIRE' BNI1 'RUX'  PINT ;
 bna3 = 'EXTRAIRE' BNI1 'RUY'  PINT ;
 bna4 = 'EXTRAIRE' BNI1 'RETN' PINT ;

 ERRO = 'MAXIMUM' ('ABS' ('PROG' (bn1 '-' bna1) (bn2 '-' bna2)
    (bn3 '-' bna3) (bn4 '-' bna4))) ;
    
 'SI' (ERRO > ZERO) ;
    'MESSAGE' 'Probleme en KONV' ;
    'ERREUR' 5 ;
 'FINSI' ;

 'FIN' ;   
 
 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer