* fichier : vahldavis.dgibi
COMPLET = FAUX ;
SI ( COMPLET ) ;
d1 = 0.02 ;
d2 = 0.1;
NITER = 5000 ;
CFL = 1.0 ;
SINON ;
d1 = 0.05 ;
d2 = 0.5 ;
NITER = 600 ;
CFL = 1.0 ;
FINSI ;
GRAPH = FAUX ;
***************************************************************
* CAVITE CARREE - VAHL-DAVIS *
* A. Chene/H. Paillere TTMF Aout 1997 *
***************************************************************
******************************
*ESTIMATION DE LA CONVERGENCE*
******************************
DEBPROC CALCUL;
ARGU RVX*'TABLE';
RV = RVX.'EQEX';
DD = RV.PASDETPS.'NUPASDT';
NN = DD/5;
LO = (DD-(5*NN)) EGA 0;
SI (LO);
UN = RV.INCO.'UN';
UNM1 = RV.INCO.'UNM1';
unx = kcht $MT scal sommet (exco 'UX' un);
unm1x = kcht $MT scal sommet (exco 'UX' unm1);
uny = kcht $MT scal sommet (exco 'UY' un);
unm1y = kcht $MT scal sommet (exco 'UY' unm1);
ERRX = KOPS unx '-' unm1x;
ERRY = KOPS uny '-' unm1y;
ELIX = MAXI ERRX 'ABS';
ELIY = MAXI ERRY 'ABS';
ELIX = (LOG (ELIX + 1.0E-10))/(LOG 10.);
ELIY = (LOG (ELIY + 1.0E-10))/(LOG 10.);
MESSAGE 'ITER' RV.PASDETPS.'NUPASDT' 'ERREUR LINF' ELIX ELIY;
RV.INCO.'UNM1' = KCHT $MT 'VECT' 'SOMMET' (RV.INCO.'UN');
IT = PROG RV.PASDETPS.'NUPASDT';
ER = PROG ELIY;
RV.INCO.'IT' = (RV.INCO.'IT') ET IT;
RV.INCO.'ER' = (RV.INCO.'ER') ET ER;
FINSI;
as2 ama1 = 'KOPS' 'MATRIK' ;
FINPROC as2 ama1 ;
************
* MAILLAGE *
************
OPTI DIME 2;
OPTI ELEM QUA8;
p1 = 0. 0.;
p15 = 0.5 0.;
p2 = 1. 0.;
p25 = 1. 0.5;
p3 = 1. 1.;
p35 = 0.5 1.;
p4 = 0. 1.;
p45 = 0. 0.5;
bas = p1 d dini d1 dfin d2 p15 d dini d2 dfin d1 p2;
cdro = p2 d dini d1 dfin d2 p25 d dini d2 dfin d1 p3;
haut = p3 d dini d1 dfin d2 p35 d dini d2 dfin d1 p4;
cgau = p4 d dini d1 dfin d2 p45 d dini d2 dfin d1 p1;
cnt = bas et cdro et haut et cgau;
mt = bas cdro haut cgau daller;
********
* MODE *
********
mt= chan mt quaf ;
$mt = MODE mt 'NAVIER_STOKES' 'MACRO' ;
doma $mt 'IMPR' ;
mt = doma $mt 'MAILLAGE' ;
**************
* PARAMETRES *
**************
Pr = 0.71;
Ra = 1.e6;
Gr = Ra/Pr;
NU = 1/(Gr**0.5);
ALF= NU/Pr;
gb = 0 -1;
uref = 1;
***********************
* CREATION DES TABLES *
***********************
RV = EQEX $MT 'ITMA' NITER 'ALFA' CFL
'ZONE' $MT 'OPER' CALCUL
'OPTI' 'SUPG'
'ZONE' $MT 'OPER' 'NS' NU GB 'TN' 0.5 'INCO' 'UN'
'OPTI' 'SUPG' 'MMPG'
'ZONE' $MT 'OPER' 'TSCAL' ALF 'UN' 0. 'INCO' 'TN'
'OPTI' 'CENTREE'
ZONE $MT 'OPER' 'DFDT' 1. 'UN' 'DELTAT' INCO 'UN'
ZONE $MT 'OPER' 'DFDT' 1. 'TN' 'DELTAT' INCO 'TN'
;
RV = EQEX RV
'CLIM' 'UN' 'UIMP' cnt 0.
'UN' 'VIMP' cnt 0.
'TN' 'TIMP' cgau 1.
'TN' 'TIMP' cdro 0.;
RVP = EQPR $MT KTYPI 1
'ZONE' $MT 'OPER' 'PRESSION' 0.
PIMP 0. ;
RV.INCO = TABLE INCO;
RV.INCO.'UN' = kcht $MT VECT SOMMET (0. 0.);
corx = coor 1 mt;
RV.INCO.'TN' = kcht $MT SCAL SOMMET (1.-corx);
RV.INCO.'UNM1' = kcht $MT VECT SOMMET (1.E-5 1.E-5);
RV.INCO.'IT' = PROG 1;
RV.INCO.'ER' = PROG 0.;
RV.PRESSION = RVP;
EXEC RV;
*************
* RESULTATS *
*************
cdro=chan cdro quaf ;
elim (mt et cdro) 1.e-3 ;
$cdro = mode cdro 'NAVIER_STOKES' 'QUAF';
DY = DOMA $cdro 'VOLUME';
DYT = SOMT DY;
GRADT = KOPS RV.INCO.'TN' 'GRAD' $MT;
DTDX = KCHT $MT 'SCAL' 'CENTRE' (EXCO 'UX' GRADT);
DTDX = ELNO $MT DTDX;
DTDXp = KCHT $CDRO 'SCAL' 'SOMMET' DTDX;
DTDXp = KOPS DTDXp '*' (-1.);
EVOL1 = EVOL 'CHPO' DTDXp SCAL CDRO;
EVOL1 = EVOL1 COUL ROUG ;
DTDXpc = NOEL $CDRO DTDXp;
num = KOPS DTDXpc '*' DY;
num = SOMT NUM;
num = (-1)*NUM/DYT;
MESSAGE 'NUSSELT MOYEN' NUM;
MESSAGE 'NUSSELT MAX' (MAXI DTDXpc);
MESSAGE 'NUSSELT MIN' (MINI DTDXpc);
SI ( (MAXI DTDXp) < 12.00 ) ;
ERREUR 5 ;
FINSI ;
SI ( ABS (NUM) < 7.55 ) ;
ERREUR 5 ;
FINSI ;
SI ( (MINI RV.INCO.'ER') > -4.95 ) ;
ERREUR 5 ;
FINSI ;
SI ( GRAPH ) ;
OPTI ISOV SULI;
trace mt 'TITR' 'MAILLAGE' ;
trac RV.INCO.'TN' mt (cont mt) 14 'TITR' 'TEMPERATURE' ;
unch = vect RV.INCO.'UN' 1. UX UY JAUNE;
trace unch mt (cont mt) 'TITR' 'CHAMP DE VITESSE' ;
EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
(RV.INCO.'ER') ;
dess EVOL4 'XBOR' 0. 10000. 'YBOR' -10.0 0.0
'TITR' 'CONVERGENCE VERS LE STATIONNAIRE' ;
TAB1 = TABLE ;
TAB1.1 = 'MARQ LOSA';
DESS EVOL1 'XBOR' 0. 1. 'GRIL' TAB1 'TITR' 'NUSSELT A LA PAROI' ;
un = RV.INCO.'UN';
un2=KOPS un '*' (Pr*(Gr**0.5));
sw = (-1.) * (KOPS un 'ROT' $mt) ;
rk = EQEX $mt 'OPTI' 'EF' 'IMPL'
ZONE $mt OPER LAPN 1. INCO 'PSI'
ZONE $mt OPER FIMP sw INCO 'PSI'
'CLIM' 'PSI' 'TIMP' (cgau et haut et bas et cdro) 0.;
rk.'INCO'=table 'INCO' ;
rk.'INCO'.'PSI'=kcht $mt scal sommet 0. ;
EXEC rk ;
psi=rk.'INCO'.'PSI';
psi2=kops psi '*' (Pr*(Gr**0.5)) ;
LISTE (MAXI PSI) ;
LISTE (MINI PSI) ;
trac psi mt CNT 14 'TITR' 'FONCTION DE COURANT' ;
FINSI ;
FIN ;
© Cast3M 2003 - All rights reserved.
Disclaimer