80 const IntVect& orientation = domaine_VDF.
orientation();
82 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
88 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
99 visco = std::max(tab_visco(0,0),DMINFLOAT);
112 Cerr <<
"In Paroi_loi_Ciofalo_hyd_VDF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
121 double u_plus_d_plus,d_visco;
124 double val,val1,val2;
128 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
134 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
149 for (
int num_face=ndeb; num_face<nfin; num_face++)
153 ori = orientation(num_face);
158 if ( (elem =face_voisins(num_face,0)) != -1)
159 norm_v=norm_2D_vit(vit,elem,ori,domaine_VDF,val);
162 elem = face_voisins(num_face,1);
163 norm_v=norm_2D_vit(vit,elem,ori,domaine_VDF,val);
176 d_visco = tab_visco[elem];
179 u_plus_d_plus = norm_v*dist/d_visco;
183 calculer_local(u_plus_d_plus,d_visco,tab_nu_t,tab_k,norm_v,dist,elem,num_face);
185 Cerr <<
"ATTENTION!!! MODIFS FAITE POUR 3D ETENDUE A 2D MAIS NON VERIFIEE POUR 2D!!!!" << finl;
186 int num_elem = domaine_VDF.
elem_faces(num_face,0);
188 num_elem = domaine_VDF.
elem_faces(num_face,1);
200 for (
int num_face=ndeb; num_face<nfin; num_face++)
204 ori = orientation(num_face);
207 if ( (elem = face_voisins(num_face,0)) != -1)
208 norm_v=norm_3D_vit(vit,elem,ori,domaine_VDF,val1,val2);
211 elem = face_voisins(num_face,1);
212 norm_v=norm_3D_vit(vit,elem,ori,domaine_VDF,val1,val2);
225 d_visco = tab_visco[elem];
228 u_plus_d_plus = norm_v*dist/d_visco;
232 calculer_local(u_plus_d_plus,d_visco,tab_nu_t,tab_k,norm_v,dist,elem,num_face);
237 int num_elem = domaine_VDF.
elem_faces(num_face,0);
239 num_elem = domaine_VDF.
elem_faces(num_face,1);
276 for (
int face=ndeb; face<nfin; face++)
278 vitesse_imposee_face_bord(face-ndeb,k) = cl_diri.
val_imp(face-ndeb,k);
288 for (
int num_face=ndeb; num_face<nfin; num_face++)
291 ori = orientation(num_face);
293 int rang = num_face-ndeb;
296 if ( (elem = face_voisins(num_face,0)) != -1)
297 norm_v=norm_2D_vit(vit,elem,ori,domaine_VDF,vitesse_imposee_face_bord(rang,0),
298 vitesse_imposee_face_bord(rang,1),val);
301 elem = face_voisins(num_face,1);
302 norm_v=norm_2D_vit(vit,elem,ori,domaine_VDF,vitesse_imposee_face_bord(rang,0),
303 vitesse_imposee_face_bord(rang,1),val);
316 d_visco = tab_visco[elem];
320 u_plus_d_plus = norm_v*dist/d_visco;
323 calculer_local(u_plus_d_plus,d_visco,tab_nu_t,tab_k,norm_v,dist,elem,num_face);
336 for (
int num_face=ndeb; num_face<nfin; num_face++)
340 ori = orientation(num_face);
342 int rang = num_face-ndeb;
345 if ( (elem = face_voisins(num_face,0)) != -1)
346 norm_v=norm_3D_vit(vit,elem,ori,domaine_VDF,vitesse_imposee_face_bord(rang,0),
347 vitesse_imposee_face_bord(rang,1),
348 vitesse_imposee_face_bord(rang,2),val1,val2);
351 elem = face_voisins(num_face,1);
352 norm_v=norm_3D_vit(vit,elem,ori,domaine_VDF,vitesse_imposee_face_bord(rang,0),
353 vitesse_imposee_face_bord(rang,1),
354 vitesse_imposee_face_bord(rang,2),val1,val2);
367 d_visco = tab_visco[elem];
370 u_plus_d_plus = norm_v*dist/d_visco;
374 calculer_local(u_plus_d_plus,d_visco,tab_nu_t,tab_k,norm_v,dist,elem,num_face);
406 DoubleTab& tab_nu_t,DoubleTab& tab_k,
double norm_vit,
407 double dist,
int elem,
int num_face)
411 double valmin=
Y0*
Y0 ;
413 double psi_E, psi_P ;
420 if ( tab_k(elem) <= 1.E-10 )
424 if (u_plus_d_plus <= valmin)
444 psi_P= sqrt( tab_k(elem) )/ norm_vit ;
446 if (u_plus_d_plus <= valmin )
447 psi_E=1/(
Y0*pow (
Cmu_, 1./4.) ) ;
454 const int itmax = 25;
455 const double seuil = 0.001;
456 const double c1 =
Kappa_*norm_vit;
457 const double c2 = log(
Erugu*dist/d_visco);
458 double u_star,u_star1;
467 while (( std::fabs((u_star-u_star1)/u_star1) > seuil ) && (iter < itmax ) )
471 F= u_star*(log(u_star)+c2) -c1 ;
472 F_= log(u_star)+1+c2 ;
473 u_star1=u_star- F/F_ ;
476 if (iter >= itmax) erreur_non_convergence();
481 psi_E=
Kappa_ / (log (
Erugu*dist*u_star/d_visco)* pow (
Cmu_, 1./4.) ) ;
486 Y_nu =
Y0*pow( (psi_P/psi_E) , -c );
488 E_ = ( exp (
Kappa_ * Y_nu) ) / Y_nu ;
490 if (u_plus_d_plus <= Y_nu*Y_nu)
510 if ( (dist*
tab_u_star(num_face)/d_visco) > 500. )
514 Cerr <<
"Y+=" << (dist*
tab_u_star(num_face)/d_visco) << finl;
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.