* fichier : fsckei.dgibi ************************************************************************ ************************************************************************ ************************************************************************************ * * * Maillage d'un sous-canal d'un faisceau de tube * * à pas carré * * * ************************************************************************************ COMPLET=FAUX; *COMPLET=VRAI; NBIT = 10 ; GRAPH = FAUX ; DT = 1. ; Si COMPLET; GRAPH = VRAI ; NBIT = 1000; DT = 0.2; Finsi ; sqrt2 = 2.**0.5 ; tole = 1e-5; ****************************************************************** * Paramètres géométriques du sous-canal ****************************************************************** * Espacement entre deux centres de cylindres b0 = 8.; * Rayon d'un cylindre r0 = 4. ; * demi-diagonale "fluide" diag1 = (b0*sqrt2)+((-1.)*r0) ; ****************************************************************** * Paramètres du maillage ****************************************************************** * distance entre le point p0 (centre du sous canal) et le point pint01 * c'est une portion (entre 0 et 1) de diag1 alpha01 = 0.7 ; * distance entre le point p3 et pint23 (portion entre 0 et 1 de la distance entre p2 et p3) alpha23 = 0.5 ; * nombre de points sur le cylindre n2 = 8 ; * nombre de points sur la diagonale proche du cylindre n12 = 10 ; * nombre de points sur la diagonale loin du cylindre n11 = 5 ; ****************************************************************** * Paramètres lié à l'écoulement ****************************************************************** * Constante du modèle de turbulence CMU = 0.09 ; * Viscosité cinématique du fluide NU = 1.e-6; * Vitesse d'entrée UI = 1.e-6; UI = 0.1 ; * Diamètre hydraulique du sous-canal DH = ((4*b0**2)+((-1.*PI)*(r0**2)))/(2*PI*r0) ; ****************************************************************** * Paramètres liés à la résolution numérique ****************************************************************** KPRESS = 'CENTREP1' ; DISCR = 'MACRO' ; * Nombre d'itérations NITMA = NBIT; * Pas de temps * Distance à la paroi YP = 1e-3; ****************************************************************** * PROCEDURE ****************************************************************** DEBPROC CALCUL; Tps = rv.'Tps' ; DT = rv.'DT' ; NUPAT = rv.'NUPAT' + 1; Tps = Tps + DT ; rv.'Tps' = Tps ; rv.'NUPAT'=NUPAT ; un = rv.'INCO'.'UN' ; rc.'pts1_1'=rc.'pts1_1' rc.'pts1_2'=rc.'pts1_2' rc.'pts1_3'=rc.'pts1_3' rc.'pts1_4'=rc.'pts1_4' rc.'pts1_5'=rc.'pts1_5' rc.'pts1_6'=rc.'pts1_6' rc.'pts1_7'=rc.'pts1_7' rc.'pts1_8'=rc.'pts1_8' rc.'pts1_1u'=rc.'pts1_1u' rc.'pts1_2u'=rc.'pts1_2u' rc.'pts1_3u'=rc.'pts1_3u' rc.'pts1_4u'=rc.'pts1_4u' rc.'pts2_1'=rc.'pts2_1' rc.'pts2_2'=rc.'pts2_2' rc.'pts2_3'=rc.'pts2_3' rc.'pts2_4'=rc.'pts2_4' rc.'pts2_5'=rc.'pts2_5' rc.'pts2_6'=rc.'pts2_6' rc.'pts2_7'=rc.'pts2_7' rc.'pts2_8'=rc.'pts2_8' rc.'pts3_1'=rc.'pts3_1' rc.'pts3_2'=rc.'pts3_2' rc.'pts3_3'=rc.'pts3_3' rc.'pts3_4'=rc.'pts3_4' rc.'pts3_5'=rc.'pts3_5' rc.'pts3_6'=rc.'pts3_6' rc.'pts3_7'=rc.'pts3_7' rc.'pts3_8'=rc.'pts3_8' rc.'pts3_1v'=rc.'pts3_1v' rc.'pts3_2v'=rc.'pts3_2v' rc.'pts3_3v'=rc.'pts3_3v' rc.'pts3_4v'=rc.'pts3_4v' * evs1 = (evol manu rv.ltps 'Temps (s)' rc.'pts3_1v' 'UY') * et (evol manu rv.ltps 'Temps (s)' rc.'pts3_2v' 'UY') * et (evol manu rv.ltps 'Temps (s)' rc.'pts3_3v' 'UY') * et (evol manu rv.ltps 'Temps (s)' rc.'pts3_4v' 'UY'); * dess evs1 'NCLK' TITR 'Composante UY de la vitesse section 3 ' ; Mess ' Pas de temps ' NUPAT ' Temps ' tps ; ai = modulo NUPAT 100; si (EGA ai 0); Mess ' Pas de temps ' NUPAT ' Temps ' tps ; oeil =1.e4 -1.e4 1.e4 ; oeil2=-1.e4 -1.e4 1.e4 ; THIS = FAUX ; TECT = FAUX ; POST THIS TECT ; Finsi ; aii = modulo NUPAT 1000; si (EGA aii 0); THIS = VRAI ; TECT = VRAI ; POST THIS TECT ; THIS = FAUX ; TECT = FAUX ; Finsi ; *mess ' FIN CALCUL ' ; finproc as2 ama1 ; ****************************************************************** * Construction du maillage ****************************************************************** * Centre du cylindre c0 = (-1.*b0) b0; * Points pour construire le maillage élémentaire p0 = 0. 0. ; p1 = (-1.*diag1*0.5*sqrt2) (diag1*0.5*sqrt2) ; p2 = (-1.*b0) (b0+((-1.)*r0)); p3 = (-1.*b0) 0 ; pint01 = (-1.*alpha01*diag1*0.5*sqrt2) (alpha01*diag1*0.5*sqrt2); pint23 = (-1.*b0) ((-1.)*(1.-alpha01)*diag1 + b0 + (-1.*r0)); * Points pour créer les maillages symétriques p4 = 0. b0 ; p5 = b0 0. ; p6 = (r0 + (-1.*b0)) b0; * Construction des cotés élémentaires * Reconstitution de 4 cotés pour utiliser la fonction DALLER cot1 = cot11 et cot12; cot3 = cot31 et cot32; dom1 = daller cot1 cot2 cot3 cot4 ; * Description du domaine de calcul et des frontières domtot = (dom1 et dom2 et dom3 et dom4) ; et ouest et est et nord et sud) ; *tracer (domtot et ouest et est et nord et sud et bordNO * et bordNE et bordSO et bordSE) ; 'MESSAGE' 'Nombre d éléments du maillage' NN; WALL0 = bordNO et bordNE et bordSO et bordSE; ******************************************************************** * Changement des éléments du maillage en DISCR: ******************************************************************** £domtot = 'CHANGER' domtot QUAF ; £bordNO = 'CHANGER' bordNO QUAF ; £bordNE = 'CHANGER' bordNE QUAF ; £bordSO = 'CHANGER' bordSO QUAF ; £bordSE = 'CHANGER' bordSE QUAF ; £ouest = 'CHANGER' ouest QUAF ; £est = 'CHANGER' est QUAF ; £nord = 'CHANGER' nord QUAF ; £sud = 'CHANGER' sud QUAF ; et £ouest et £est et £nord et £sud) ; ************************************************************** * Formulation du domaine Navier Stokes: ************************************************************** $WALL0 = $bordNO et $bordNE et $bordSE et $bordSO; ***************************************************************** * Création de la table des inconnues et initialisation: ***************************************************************** KE = (0.05 * UI)*(0.05 * UI)/2.; EE = (KE**1.5)/r0 ; RV = EQEX $domtot 'ITMA' NITMA 'OPTI' 'EF' 'IMPL' 'CENTREE' 'ZONE' $WALL0 'OPER' 'FPU' 1. 'UN' NU 'UF' YP 'INCO' 'UN' 'KN' 'EN' 'ZONE' $domtot 'OPER' 'KEPSILON' 1. 'UN' NU 'DT' 'INCO' 'KN' 'EN' 'ZONE' $domtot 'OPER' 'NS' 1. 'UN' 'MUF' 'INCO' 'UN' 'ZONE' $domtot 'OPER' 'TSCA' 1. 'UN' 'MUF' 'INCO' 'TN' ; * Condition limite sur les surfaces des cylindres *RV = EQEX RV 'CLIM' 'UN' 'UIMP' bordNO 0. 'UN' 'VIMP' bordNO 0.; *RV = EQEX RV 'CLIM' 'UN' 'UIMP' bordSO 0. 'UN' 'VIMP' bordSO 0.; *RV = EQEX RV 'CLIM' 'UN' 'UIMP' bordNE 0. 'UN' 'VIMP' bordNE 0.; *RV = EQEX RV 'CLIM' 'UN' 'UIMP' bordSE 0. 'UN' 'VIMP' bordSE 0.; * Condition limite sur les frontières libres * Remarque : pas besoin d'imposer une condition à la sortie car en utilisant la fonction 'CENTREP1' * pour la pression, si aucune valeur n'est précisé, son intégrale sur cette frontière est maintenue nulle. *opti donn 5; ; RV.INCO= 'TABLE' INCO; * Vitesse de frottement RV.INCO.'DT' = DT ; RV.INCO.'MUF' = NU; exec rv ; un= rv.inco.'UN' ; Si GRAPH ; pp= pn - (0.5*u2) ; *trace pres domtot; trace ung domtot; nut = rv.inco.'MUF' - NU; Finsi ; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales