Download consmasse.dgibi

Back to the list

* fichier :  consmasse.dgibi
COMPLET = FAUX ;
SI ( COMPLET ) ;
      NX = 40 ; NY = 20 ;
      NITER = 800 ;
      CFL = 0.9 ;
      TOLCONV = -5.0 ;
      TOLDEBI = 8.0E-4 ;
      TOLSOLU = 0.8 ;
SINON ;
      NX = 8 ; NY = 4 ;
      NITER = 200 ;
      CFL = 0.9 ;
      TOLCONV = -4.0 ;
      TOLDEBI = 3.0E-3 ;
      TOLSOLU = 1.7 ;
FINSI ;
GRAPH = 'N' ;

******************************************************************
* TESTE LA CONSERVATION DE LA MASSE POUR L'EQUATION SOUS FORME   *
* CONSERVATIVE : dC/dt + div ( U C ) = 0 AVEC U CHAMP DE VITESSE *
* A DIVERGENCE NON NULLE                                         *
* COMPARAISON AVEC SOLUTION ANALYTIQUE EXACTE                    *         
* ON TESTE SUCCESSIVEMENT MAILLAGE QUA4 ET MAILLAGE TRI3         *
******************************************************************

DEBPROC CALCUL ;
ARGU RVX*'TABLE' ;

RV = RVX.'EQEX' ;
CN = RV.INCO.'CN' ;

DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/5 ;
LO = (DD-(5*NN)) EGA 0 ;
SI ( LO ) ;

ERR = KOPS (RV.INCO.'CN') - (RV.INCO.'CNM1') ;
ELI = MAXI ERR 'ABS' ;
ELI = (LOG (ELI + 1.0E-20))/(LOG 10.) ;
MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' '   ERREUR LINF ' ELI ;
IT = PROG RV.PASDETPS.'NUPASDT' ;
ER = PROG ELI ;
RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
RV.INCO.'ER' = (RV.INCO.'ER') ET ER ;
FINSI ;

RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;

as2 ama1  = 'KOPS' 'MATRIK' ;
FINPROC as2 ama1 ;

opti dime 2 ;
opti elem qua4 ;
opti isov suli ;
titre 'Conservation de la masse' ;

*************
* DIFFUSION *
*************
DIF = 1.0E-20 ;

************
* MAILLAGE *
************

A1 = 0.0 0.0 ;
A2 = 2.0 0.0 ;
A3 = 2.0 1.0 ;
A4 = 0.0 1.0 ;

FBAS = A1 'DROI' NX A2 ;
FDRO = A2 'DROI' NY A3 ;
FHAU = A3 'DROI' NX A4 ;
FGAU = A4 'DROI' NY A1 ;

PA1 = FBAS POIN 'PROC' A1 ;
PA2 = FBAS POIN 'PROC' A2 ;
P12 = CHAN POI1 FBAS ;
MA1 = P12 ELEM 'CONTENANT' PA1 ;
MA2 = P12 ELEM 'CONTENANT' PA2 ;

DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;

************************************
* CREATION DU MODELE NAVIER_STOKES *
************************************

MDOMTOT = CHAN DOMTOT QUAF ;
$DOMTOT = MODE MDOMTOT 'NAVIER_STOKES' LINE ; DOMA $DOMTOT 'IMPR' ;
DOMTOT = DOMA $DOMTOT MAILLAGE ;
CNT = 'CONT' DOMTOT ;

FDRO = CHAN FDRO QUAF ;
FGAU = CHAN FGAU QUAF ;
ELIM (MDOMTOT ET FDRO ET FGAU ) 1.E-3 ;

$FDRO = MODE FDRO 'NAVIER_STOKES' LINE ;
$FGAU = MODE FGAU 'NAVIER_STOKES' LINE ;
FDRO = DOMA $FDRO 'MAILLAGE' ;
FGAU = DOMA $FGAU 'MAILLAGE' ;

**************************************
* INITIALISATION DU CHAMP DE VITESSE *
**************************************

alpha = 1. ;
beta =  2. ;
gamma = 1. ;

XX = COOR 1 (DOMA $DOMTOT MAILLAGE) ;
YY = COOR 2 (DOMA $DOMTOT MAILLAGE) ;
XX = KCHT $DOMTOT 'SCAL' 'SOMMET' XX ;
YY = KCHT $DOMTOT 'SCAL' 'SOMMET' YY ;
U1 = KOPS XX '*' alpha ;
U2 = KOPS YY '*' beta ;
U3 = gamma ;
U = KOPS ( KOPS U1 '+' U2) '+' U3 ;
CEXACT = KOPS ( KOPS U2 '+' U3 ) '/' U ;
U = NOMC 'UX' U 'NATU' 'DISCRET' ;
VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' U ;
VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 0.0 ;
CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY);

**********************************************
* TABLE EQEX CONTENANT L'EQUATION A RESOUDRE *
**********************************************

RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL 
        'ZONE' $DOMTOT 
        'OPER' CALCUL 
        'OPTI' 'CONS' 'SUPG' 
        'OPER' TSCAL DIF 'VITESSE' 0.0 'CN' 'INCO' 'CN'
        'OPTI' 'CENTREE'
        'OPER' DFDT  1. 'CN' 'DELTAT'       'INCO' 'CN'
        'CLIM' 'CN' 'TIMP' FGAU 1.0 ;

RV.INCO = TABLE 'INCO' ;
RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
RV.INCO.'VITESSE'= CHVIT ;
RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
RV.INCO.'IT' = PROG 1 ;
RV.INCO.'ER' = PROG 0. ;
RV.INCO.'NBIT' = 0 ;

EXEC RV ;

*************************************************************
* ANALYSE DES RESULTATS :                                   *
* ON TESTE SUR LA CONVERGENCE VERS LA SOLUTION STATIONNAIRE *
*          SUR LA PRECISION ENTRE DEBITS ENTRANT/SORTANT    *
*          SUR LA PRECISION SOLUTIONS NUMERIQUE/EXACTE      *
*************************************************************

GX = KOPS VX '*' RV.INCO.'CN' ;
GY = KOPS VY '*' RV.INCO.'CN' ;
GX = NOMC 'UX' GX 'NATU' 'DISCRET' ;
GY = NOMC 'UY' GY 'NATU' 'DISCRET' ;
G = KCHT $DOMTOT VECT SOMMET (GX ET GY) ;
QENTREE = DBIT G $FGAU ;
QSORTIE = DBIT G $FDRO ;
ERQ = (QENTREE+QSORTIE)/QENTREE ;
ERQ = ABS(ERQ)*100. ;
MESSAGE 'ERREUR RELATIVE ENTRE DEBIT ENTRANT ET SORTANT ' 
         ERQ ;

ERR = KOPS CEXACT '-' RV.INCO.'CN' ;
ERR = KOPS ERR '/' CEXACT ;
ERR = KOPS ERR '*' 100. ;
ERR = ABS ERR ;
MESSAGE 'ERREUR RELATIVE ENTRE SOL. NUMERIQUE ET EXACTE' 
        (MAXI ERR) ;

SI ( (MINI RV.INCO.'ER') > TOLCONV ) ;
            ERREUR 5 ;
FINSI ;
SI ( ERQ > TOLDEBI ) ;
            ERREUR 5 ;
FINSI ;
SI ( (MAXI ERR) > TOLSOLU ) ;
            ERREUR 5 ;
FINSI ;

***********************
* TRACE DES RESULTATS *
***********************

SI ( 'EGA' graph 'O') ;

VV = VECT RV.INCO.'VITESSE' 0.1 UX UY JAUNE ;
TRACE DOMTOT 'TITR' 'MAILLAGE' ;
TRACE VV DOMTOT CNT 'TITR' 'CHAMP DE VITESSE' ;
TRAC DOMTOT CEXACT CNT 'TITR' 'SOLUTION EXACTE' ;
TRAC DOMTOT (RV.INCO.'CN') CNT 'TITR' 'SOLUTION NUMERIQUE' ;

LISO = PROG 0. 2. 4. 6. 8. 10. 12. 14. 16. 20. ;
TRACE ERR DOMTOT (CONT DOMTOT) LISO 'TITR' 'ERREUR RELATIVE' ;

EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
           (RV.INCO.'ER') ;
DESS EVOL4 'XBOR' 0. 2000. 'YBOR' -12.0 0.0 
        'TITR' 'HISTOIRE DE CONVERGENCE' ;
FINSI ;

************************************
* ON TESTE MAINTENANT SUR DES TRI3 *
************************************

opti elem tri3 ;
DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;

************************************
* CREATION DU MODELE NAVIER_STOKES *
************************************

MDOMTOT = CHAN DOMTOT QUAF ;
$DOMTOT = MODE MDOMTOT 'NAVIER_STOKES' LINE ; DOMA $DOMTOT 'IMPR' ;
DOMTOT = DOMA $DOMTOT MAILLAGE ;
CNT = 'CONT' DOMTOT ;

FDRO = CHAN FDRO QUAF ;
FGAU = CHAN FGAU QUAF ;
ELIM (MDOMTOT ET FDRO ET FGAU ) 1.E-3 ;

$FDRO = MODE FDRO 'NAVIER_STOKES' LINE ;
$FGAU = MODE FGAU 'NAVIER_STOKES' LINE ;

FDRO = DOMA $FDRO 'MAILLAGE' ;
FGAU = DOMA $FGAU 'MAILLAGE' ;

**************************************
* INITIALISATION DU CHAMP DE VITESSE *
**************************************

alpha = 1. ;
beta =  2. ;
gamma = 1. ;

XX = COOR 1 (DOMA $DOMTOT MAILLAGE) ;
YY = COOR 2 (DOMA $DOMTOT MAILLAGE) ;
XX = KCHT $DOMTOT 'SCAL' 'SOMMET' XX ;
YY = KCHT $DOMTOT 'SCAL' 'SOMMET' YY ;
U1 = KOPS XX '*' alpha ;
U2 = KOPS YY '*' beta ;
U3 = gamma ;
U = KOPS ( KOPS U1 '+' U2) '+' U3 ;
CEXACT = KOPS ( KOPS U2 '+' U3 ) '/' U ;
U = NOMC 'UX' U 'NATU' 'DISCRET' ;
VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' U ;
VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 0.0 ;
CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY);

**********************************************
* TABLE EQEX CONTENANT L'EQUATION A RESOUDRE *
**********************************************

RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL 
        'ZONE' $DOMTOT 
        'OPER' CALCUL 
        'OPTI' 'CONS' 'SUPG' 
        'OPER' TSCAL DIF 'VITESSE' 0.0 'CN' 'INCO' 'CN'
        'OPTI' 'CENTREE'
        'OPER' DFDT  1. 'CN' 'DELTAT'       'INCO' 'CN'
        'CLIM' 'CN' 'TIMP' FGAU 1.0 ;

RV.INCO = TABLE 'INCO' ;
RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
RV.INCO.'VITESSE'= CHVIT ;
RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
RV.INCO.'IT' = PROG 1 ;
RV.INCO.'ER' = PROG 0. ;
RV.INCO.'NBIT' = 0 ;

EXEC RV ;

*************************************************************
* ANALYSE DES RESULTATS :                                   *
* ON TESTE SUR LA CONVERGENCE VERS LA SOLUTION STATIONNAIRE *
*          SUR LA PRECISION ENTRE DEBITS ENTRANT/SORTANT    *
*          SUR LA PRECISION SOLUTIONS NUMERIQUE/EXACTE      *
*************************************************************

GX = KOPS VX '*' RV.INCO.'CN' ;
GY = KOPS VY '*' RV.INCO.'CN' ;
GX = NOMC 'UX' GX 'NATU' 'DISCRET' ;
GY = NOMC 'UY' GY 'NATU' 'DISCRET' ;
G = KCHT $DOMTOT VECT SOMMET (GX ET GY) ;
QENTREE = DBIT G $FGAU ;
QSORTIE = DBIT G $FDRO ;
ERQ = (QENTREE+QSORTIE)/QENTREE ;
ERQ = ABS(ERQ)*100. ;
MESSAGE 'ERREUR RELATIVE ENTRE DEBIT ENTRANT ET SORTANT ' 
         ERQ ;

ERR = KOPS CEXACT '-' RV.INCO.'CN' ;
ERR = KOPS ERR '/' CEXACT ;
ERR = KOPS ERR '*' 100. ;
ERR = ABS ERR ;
MESSAGE 'ERREUR RELATIVE ENTRE SOL. NUMERIQUE ET EXACTE' 
        (MAXI ERR) ;

SI ( (MINI RV.INCO.'ER') > TOLCONV ) ;
            ERREUR 5 ;
FINSI ;
SI ( ERQ > TOLDEBI ) ;
            ERREUR 5 ;
FINSI ;
SI ( (MAXI ERR) > TOLSOLU ) ;
            ERREUR 5 ;
FINSI ;

***********************
* TRACE DES RESULTATS *
***********************

SI ( 'EGA' graph 'O') ;

VV = VECT RV.INCO.'VITESSE' 0.1 UX UY JAUNE ;
TRACE DOMTOT 'TITR' 'MAILLAGE' ;
TRACE VV DOMTOT CNT 'TITR' 'CHAMP DE VITESSE' ;
TRAC DOMTOT CEXACT CNT 'TITR' 'SOLUTION EXACTE' ;
TRAC DOMTOT (RV.INCO.'CN') CNT 'TITR' 'SOLUTION NUMERIQUE' ;

LISO = PROG 0. 2. 4. 6. 8. 10. 12. 14. 16. 20. ;
TRACE ERR DOMTOT (CONT DOMTOT) LISO 'TITR' 'ERREUR RELATIVE' ;

EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
           (RV.INCO.'ER') ;
DESS EVOL4 'XBOR' 0. 2000. 'YBOR' -12.0 0.0 
        'TITR' 'HISTOIRE DE CONVERGENCE' ;
FINSI ;

FIN ;
 

 

© Cast3M 2003 - All rights reserved.
Disclaimer