Download vahldavis.dgibi

Back to the list

* 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