Download konv_scal_impl.dgibi

Back to the list

* fichier :  konv_scal_impl.dgibi
***********************************************************
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour le    ****
**** transport des scalaires                           **** 
**** OPERATEURS PRET, KONV                             ****
**** Implicit: calcul du jacobien du residu            ****
****                                                   ****
**** Methodes: UPWIND, CENTERED                        ****
****                                                   ****
**** A. BECCANTINI SFME/LMTF            DECEMBRE 2001  ****
***********************************************************
***********************************************************

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


*****************************************************
*****************************************************
******** PROCEDURES *********************************
*****************************************************
*****************************************************

*
* Derivé partielle du residu en un point par rapport
* aux variable en un autre point
*

 'DEBPROC' JACOVA JACO*'MATRIK' $MODE*'MMODEL' LISTINCO*'LISTMOTS'
    PPRIM*'POINT' PDUAL*'POINT' MOTPRI*'MOT' MOTDUA*'MOT';
    
*   PPRIM = point ou est localisé la variable primale
*   PDUAL = point ou est localisé la variable duale
*   MOTPRI = nom de la composante concernante la variable primale
*   MOTDUA = nom de la composante concernante la variable duale

    ELT1 = 'MANUEL' 'POI1' PPRIM ;
    NDIM = 'DIME' LISTINCO ;
    CHPUN = 'MANUEL' 'CHPO' ELT1 1 MOTPRI 1.0 'NATURE' 'DISCRET' ;
    'REPETER' BL1 NDIM ;
       MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
       CHPUN = CHPUN 'ET' ('MANUEL' 'CHPO' ('DOMA' $MODE 'CENTRE')
          1 MOTCEL 0.0 'NATURE' 'DISCRET') ;
    'FIN' BL1 ;
    D_DMOT = 'KOPS' JACO 'MULT' CHPUN ;
    SCAL = 'EXTRAIRE' D_DMOT PDUAL MOTDUA ;

 'FINPROC' SCAL  ;

 
 'DEBPROC' JACNUM $MODE*'MMODEL' NOMMET*'MOT' SN*'CHPOINT' UN*'CHPOINT'
    PPRIM*'POINT' PDUAL*'POINT'
    MOTPRI*'MOT' MOTDUA*'MOT' EPSILON*'FLOTTANT';

*   PPRIM = point ou est localisé la variable primale
*   PDUAL = point ou est localisé la variable duale
*   MOTPRI = nom de la composante concernante la variable primale
*   MOTDUA = nom de la composante concernante la variable duale

*   Le valeur dans l'état non-perturbé en PDUAL ;
    
    SNCEL   = 'COPIER'  SN ;
    
    SF =  'PRET' 'CLAUDEIS' 'FACE' 1  $MODE SN ;
    
    CHPRES0 DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' NOMMET
             $MODE SF UN ;

    VAL0 = 'EXTRAIRE' CHPRES0 PDUAL MOTDUA ;
    
*   On etabli la variable à perturber

    LISTINCO = 'EXTRAIRE' SN 'COMP' ;

    NDIM = 'DIME' LISTINCO ;
    'REPETER' BL1 NDIM ;
       MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
       'SI' ('EGA' MOTCEL MOTPRI) ;
          ICEL = &BL1 ;
          'QUITTER' BL1 ;
       'FINSI' ;
    'FIN' BL1 ;
    
    'SI' (ICEL > NDIM) ;
       'MESSAGE' 'Procedure JACNUM' ;
       'MESSAGE' 'MOTPRI = ??? ';
       'ERREUR' 21 ;
    'FINSI' ;
    
    ELT1 = 'MANUEL' 'POI1' PPRIM ;
    
    SNCEL = ('MANUEL' 'CHPO' ELT1 1 MOTCEL EPSILON)
      '+' SN  ;

    SF =  'PRET' 'CLAUDEIS' 'FACE' 1  $MODE SNCEL ;
    
    CHPRES1 DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' NOMMET
             $MODE SF UN ;
      
    VAL1 = 'EXTRAIRE' CHPRES1 PDUAL MOTDUA ;

 'FINPROC' ((VAL1 '-' VAL0) '/' EPSILON)  ;

*****************************************************
*****************************************************
******** FIN PROCEDURES *****************************
*****************************************************
*****************************************************
*****************************************************

*
*** GRAPH
*

 GRAPH = FAUX ;
* GRAPH = VRAI ;

 ERRTOL = 1.0D-6 ;

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

 CHFO =  (('BRUI' 'BLAN' 'UNIF' 0.0 0.2500 (DOMTOT))
       'NOMC' 'UX' 'NATU' 'DISCRET') 'ET'
      (('BRUI' 'BLAN' 'UNIF' 0.0 0.3000 (DOMTOT))
       'NOMC' 'UY' 'NATU' 'DISCRET') ;

 'FORME' CHFO ;
 
 $DOMTOT = 'MODELISER' DOMTOT 'EULER';
 $DOM6 = 'MODELISER'  DOM6 'EULER';
 $DOM9 = 'MODELISER'  DOM9 'EULER';
 TDOMTOT = 'DOMA'  $DOMTOT 'VF';
 TDOM6 = 'DOMA'  $DOM6 'VF';
 TDOM9 = 'DOMA'  $DOM9 'VF';
 MDOM6 = TDOM6 . 'QUAF' ;
 MDOM9 = TDOM9 . 'QUAF' ;
 MDOMTOT = TDOMTOT . 'QUAF' ;

 'ELIM' (MDOMTOT 'ET' MDOM6 'ET' MDOM9) 1.E-6 ;

    'SI' GRAPH;
       'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'  
       ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre';
    'FINSI' ;
*
***** Densité, pression, gamma ***********
*

 RN = ('BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE'))
       'NOMC' 'RN' 'NATU' 'DISCRET' ;
 PN = ('BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE'))
       'NOMC' 'PN' 'NATU' 'DISCRET' ;
 GAMMAN = ('BRUI' 'BLAN' 'UNIF' 14.1 800 ('DOMA' $DOMTOT 'CENTRE'))
       'NOMC' 'GAMN' 'NATU' 'DISCRET' ;

 SN = RN 'ET' PN 'ET' GAMMAN ;

*
**** Vitesse aux faces
*

 UN = (('BRUI' 'BLAN' 'UNIF' 0.0 1.000 ('DOMA' $DOMTOT 'FACE'))
       'NOMC' 'UX' 'NATU' 'DISCRET') 'ET'
      (('BRUI' 'BLAN' 'UNIF' 0.0 1.0000 ('DOMA' $DOMTOT 'FACE'))
       'NOMC' 'UY' 'NATU' 'DISCRET') ;
       
****************************************************
****************************************************
******* Calcul du jacobien et du residu   **********
****************************************************
****************************************************
*
* JACO est le jacobien
*
*


 'REPETER' BLMETO 2 ;

 'SI' (&BLMETO 'EGA' 1) ;
    METO = 'UPWIND' ;
 'FINSI' ;
 
 'SI' (&BLMETO 'EGA' 2) ;
    METO = 'CENTERED' ;
 'FINSI' ;
 
 'MESSAGE' ;
 'MESSAGE' ('CHAINE' 'METHODE = ' METO) ;
 'MESSAGE' ;
 
 SF =  'PRET' 'CLAUDEIS' 'FACE'  1  $DOMTOT SN ;

 DELTAS DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' METO
             $DOMTOT SF UN ;
             
 JACO =  'KONV' 'VF' 'CLAUDEIS' 'FACE' 'JACO' METO
             $DOMTOT SF UN ;


*****************************************************
******* TEST1 ***************************************
*****************************************************
*
* On compare le jacobien et la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM9 'CENTRE'
*

 PCEN9 = 'POIN' 1 ('DOMA' $DOM9 'CENTRE') ;

* Les grandeurs pour adimesionner les erreurs


*
* Le jacobien exact. 
* DSiSj  = d(RES_Si)/dSj (variable primale en PCEN9, variable duale en PCEN9) ;
* ...

 LISTINCO = 'MOTS' 'RN' 'PN' 'GAMN' ;
 
 DS1S1   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'RN' 'RN' ;
 DS1S3   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'RN' ;
 DS2S2   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'PN' 'PN' ;
 DS3S3   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'GAMN' ;

 'SI' (('ABS' DS1S3) > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;
 
* Le jacobien numerique 


 DELTA = 1.0D-3 ;

 DS1S1N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN9
   'RN' 'RN' DELTA ;
 DS2S2N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN9
   'PN' 'PN' DELTA ;
 DS3S3N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN9
   'GAMN' 'GAMN' DELTA ;

 ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N)  (DS2S2 '-' DS2S2N)
    (DS3S3 '-' DS3S3N)) 'ABS' ;

 'SI' (ERRO > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;

*****************************************************
*****************************************************
******* TEST2 ***************************************
*****************************************************
*****************************************************
*
* On compare le jacobien et la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM6 'CENTRE'
*

 PCEN6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
 
*
* Le jacobien exact. 
*

 DS1S1   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'RN' 'RN' ;
 DS1S3   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'RN' ;
 DS2S2   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'PN' 'PN' ;
 DS3S3   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'GAMN' ;

 'SI' (('ABS' DS1S3) > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;
 
* Le jacobien numerique 


 DELTA = 1.0D-3 ;

 DS1S1N = JACNUM $DOMTOT METO SN UN  PCEN6 PCEN9
   'RN' 'RN' DELTA ;
 DS2S2N = JACNUM $DOMTOT METO SN UN  PCEN6 PCEN9
   'PN' 'PN' DELTA ;
 DS3S3N = JACNUM $DOMTOT METO SN UN  PCEN6 PCEN9
   'GAMN' 'GAMN' DELTA ;

 ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N)  (DS2S2 '-' DS2S2N)
    (DS3S3 '-' DS3S3N)) 'ABS' ;

 'SI' (ERRO > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;


*****************************************************
*****************************************************
******* TEST2 ***************************************
*****************************************************
*****************************************************
*
* On compare le jacobien et la variation du residu
* en $DOM6 'CENTRE' par rapport à une variation
* infinitésimal en $DOM9 'CENTRE'
*

*
* Le jacobien exact. 
*

 DS1S1   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'RN' 'RN' ;
 DS1S3   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'RN' ;
 DS2S2   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'PN' 'PN' ;
 DS3S3   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'GAMN' ;

 'SI' (('ABS' DS1S3) > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;
 
* Le jacobien numerique 


 DELTA = 1.0D-3 ;

 DS1S1N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN6
   'RN' 'RN' DELTA ;
 DS2S2N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN6
   'PN' 'PN' DELTA ;
 DS3S3N = JACNUM $DOMTOT METO SN UN  PCEN9 PCEN6
   'GAMN' 'GAMN' DELTA ;

 ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N)  (DS2S2 '-' DS2S2N)
    (DS3S3 '-' DS3S3N)) 'ABS' ;

 'SI' (ERRO > ERRTOL) ;
    'MESSAGE' 'JACO CLAUDEIS = ???' ;
    'ERREUR' 5 ;
 'FINSI' ;

 'FIN' BLMETO ;
 
 'FIN' ;
 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer