* fichier : smithhutton.dgibi ************************************************************************ ************************************************************************ * *------------------------------------------------------------------------------- * Convection/Diffusion : CAS SMITH ET HUTTON * REFERENCE : NUMERICAL HEAT TRANSFER, VOL.5, p.439, 1982 *------------------------------------------------------------------------------- * Les faces latérales et supérieure d'une boite rectangulaire sont * imperméables. Le fluide rentre et sort de la boite par la face * inférieure. Il rentre par la moitié gauche de la face inférieure * et sort par la moitié droite de cette même face. * * Le champ de vitesse est connu et donné par : * v(x,y) = 2y(1-x2) i - 2x(1-y2) j * la taille de la boite étant [-1,1]x[0,1] * * L'écoulement transporte un scalaire passif qui est injecté en entrée * suivant le profil : * c(x,0) = 1 + tanh(10(2x+1)) * avec x variant de -1 à 0 (entrée du domaine). * Sur les frontières imperméables du domaine, la concentration est * constante et égale à 1-tanh(10). * * On cherche la solution stationnaire du transport par diffusion et * convection du champ scalaire passif. On compare la solution en sortie * avec la solution de référence. Plusieurs solutions sont calculées * suivant le Peclet (rapport entre la convection et la diffusion). *------------------------------------------------------------------------------- * * * Pe : Peclet (convection sur diffusion) * Les cas traités dans la référence sont 10, 100, 500, 1000 et 1000000 Pe = 10 ; * * KSUPG : Option de décentrement (CENTREE/SUPG/SUPGDC) * GRAPH : Booleen pour l'affichage des tracés à l'issue du calcul * POST1 : Booleen pour affichage Résidu à chaque pas * POST2 : Booleen pour affichage C(x,t) à chaque pas * COMPLET : Booleen modifiant la finesse du maillage et la précision des calculs * NX : Nombre de maille suivant x * NY : Nombre de maille suivant y * nbiter : Nombre de pas de temps * tolera : Tolérance pour la comparaison avec la solution de référence KSUPG = 'SUPG' ; GRAPH = FAUX ; POST1 = FAUX ; POST2 = FAUX ; COMPLET = faux ; 'SI' ( COMPLET ) ; NY = 20 ; NX = 2 * NY ; nbiter = 2000 ; tolera = 0.01 ; 'SINON' ; NY = 10 ; NX = 2 * NY ; nbiter = 100 ; tolera = 0.2 ; 'FINSI' ; * *================================================================== * Calcul du résidu en température et arrêt suivant un critère *================================================================== * E/ : RVX : TABLE : TABLE des données créées par EQEX * ARG1 : Fréquence d'impression * ARG2 : Critère d'arrêt * /S : MAT1 : MATRIK : Objet vide * /S : CHP1 : CHPO : Objet vide *------------------------------------------------------------------ * 'DEBPROC' residu rvx*table ; FREQ = RVX . 'ARG1' ; EPS0 = RVX . 'ARG2' ; NITER = RV . 'NITER' ; DD = RV . 'PASDETPS' . 'NUPASDT' ; NN = DD '/' FREQ ; L0 = 'EGA' (DD '-' (FREQ*NN)) 0 ; 'SI' L0 ; RANG0 = RV . 'PASDETPS' . 'NUPASDT' ; TIME0 = RV . 'PASDETPS' . 'TPS' ; CN0 = RV . 'INCO' . 'CN' ; CNM0 = RV . 'INCO' . 'CN2' ; ERR0 = ('MAXIMUM' ('ABS' (CN0 '-' CNM0))) '+' 1.D-20 ; ERR10 = ('LOG' ERR0 ) '/' ('LOG' 10.) ; 'MESSAGE' 'Résidu en Température au pas' RANG0 '(' TIME0 ') :' ERR0 ':' ERR10 ; Y1 = ('LOG' EPS0) '/' ('LOG' 10) ; 'SI' POST1 ; X1 = 0. ; X2 = RV . 'ITMA' ; 'DESSIN' EV1 'YBOR' Y1 0. 'NCLK' 'TITR' 'Evolution du résidu' ; 'FINSI' ; 'SI' POST2 ; trace L1 cn0 DOMTOT CNT1 'TITR' 'Concentration' 'NCLK' ; 'FINSI' ; 'SI' ((ERR10 < Y1) 'ET' (DD > 10)) ; RV . 'TFINAL' = RV . 'PASDETPS' . 'TPS' ; 'FINSI' ; 'FINSI' ; RV . 'INCO' . 'CN2' = 'COPIER' RV . 'INCO' . 'CN' ; 'FINP' mat1 chp1 ; *------------------------------------------------------------------ * * *- MAILLAGE * * * Points A1 = -1.0 0.0 ; A2 = 1.0 0.0 ; A3 = 1.0 1.0 ; A4 = -1.0 1.0 ; A0 = 0.0 0.0 ; * * Lignes FBAS = LIN 'ET' LOUT ; LIMP = FDRO 'ET' FHAU 'ET' FGAU ; * * Maillage * * Modèles et sous-modèles * * Récupération des maillages et fusion des supports * * Champ de vitesse VXSH = (2.*YY)*(1.0-(XX*XX)) ; VYSH = (-2.*XX)*(1.0-(YY*YY)) ; * * Diffusion (1/Pe) DIF = 1.0 / ('FLOT' Pe) ; * * Profil de concentration à l'entrée TOTO = 2.0*XBAS + 1.0 * 10. ; SOLUTION = 'TANH' TOTO ; SOLUTION = 1.0 + SOLUTION ; * * Conditions aux limites en concentration sur les frontières imperméables C1 = (1.0 - (TANH 10.0)) ; * * Description du problème de transport 'ZONE' $DOMTOT 'OPER' residu 1 1.D-7 'OPTI' KSUPG 'EFM1' 'EXPL' 'ZONE' $DOMTOT 'OPER' 'TSCAL' DIF 'VITESSE' 0. 'INCO' 'CN' 'OPTI' 'CENTREE' * * Description des conditions aux limites RV1 = 'EQEX' RV1 'CLIM' 'CN' 'TIMP' LIN CHP1 'CLIM' 'CN' 'TIMP' LIMP C1 ; * * Description des conditions initiales RV1 . 'INCO' = TABLE 'INCO' ; * * Autres data RV1 . 'INCO' . 'VITESSE' = CHVIT ; * * *- CALCUL * * EXEC RV1 ; * * *- ANALYSE DES RESULTATS * * * * Solutions de référence SI ( Pe 'EGA' 10 ) ; 0.227 0.111 0.000 ; FINSI ; SI ( Pe 'EGA' 100 ) ; 0.070 0.017 0.000 ; FINSI ; SI ( Pe 'EGA' 500 ) ; 0.001 0.000 0.000 ; FINSI ; SI ( Pe 'EGA' 1000 ) ; 0.000 0.000 0.000 ; FINSI ; SI ( Pe 'EGA' 1000000 ) ; 0.000 0.000 0.000 ; FINSI ; ERR0 = 0. ; REPETER BLOC1 NP ; UCAL = EXTRAIRE LIUC &BLOC1 ; UREF = EXTRAIRE LIUT &BLOC1 ; ERR0 = ERR0 + ((UCAL-UREF)*(UCAL-UREF)) ; FIN BLOC1 ; ERR0 = ERR0/NP ; ERR0 = ERR0 '**' 0.5 ; MESSAGE 'ERREUR ' ERR0 ; * * *- POST-TRAITEMENT * * 'SI' GRAPH ; * * Maillage * * Vitesse * * Concentration * * Convergence vers la solution stationnaire 'LOG|E|inf' (RV1 . 'INCO' . 'ER') ; 'TITR' 'Evolution du résidu' ; * * Comparaison avec la solution analytique TAB1 = TABLE ; TAB1 . TITRE = TABLE ; TAB1. 2 = 'MARQ LOSA NOLI' ; 'MIMA' 'XBOR' -1.0 1.0 'YBOR' -1.0 3.0 ; * FINSI ; * * Arret si problème * SI ( ERR0 > tolera ) ; ERREUR 5 ; FINSI ; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales