* 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