16#include <Paroi_loi_WW_scal_VEF.h>
17#include <Paroi_std_hyd_VEF.h>
18#include <Probleme_base.h>
19#include <Champ_Uniforme.h>
20#include <Dirichlet_paroi_fixe.h>
21#include <Dirichlet_paroi_defilante.h>
22#include <Fluide_base.h>
23#include <Modele_turbulence_hyd_base.h>
24#include <Convection_Diffusion_Concentration.h>
25#include <Modele_turbulence_scal_base.h>
26#include <Constituant.h>
49 le_dom_dis_ = ref_cast(
Domaine_VF, domaine_dis);
50 le_dom_Cl_dis_ = domaine_Cl_dis;
67double FthparVEF_WW(
double y_plus,
double Pr,
double Beta)
69 static double C_inv = 2.12;
70 double Gamma = (0.01*pow(Pr*y_plus,4.))/(1.+5.*pow(Pr,3.)*y_plus);
71 double f = Pr*y_plus*exp(-Gamma);
72 f += (C_inv*log(1.+y_plus) + Beta)*exp(-1./(Gamma+1e-20));
80 DoubleTab& alpha_t = diffusivite_turb.
valeurs();
85 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
90 Cerr<<
"Attention: the axisymmetric VEF case is not yet implemented"<<finl;
91 Cerr<<
"in the thermal wall-function. trust will now stop."<<finl;
99 visco = std::max(tab_visco(0,0),DMINFLOAT);
107 Cerr <<
"In Paroi_loi_WW_scal_VEF::calculer_scal : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
115 const RefObjU& modele_turbulence_hydr = eqn_hydr.
get_modele(TURBULENCE);
118 const DoubleVect& tab_u_star = loi.
tab_u_star();
126 for (
int n_bord=0; n_bord<domaine_VEF.
nb_front_Cl(); n_bord++)
136 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
143 for (
int ind_face=0; ind_face<size; ind_face++)
145 int num_face = le_bord.
num_face(ind_face);
146 const IntTab& face_voisins = domaine_VEF.
face_voisins();
149 elem = face_voisins(num_face,0);
151 elem = face_voisins(num_face,1);
155 dist = distance_2D(num_face,elem,domaine_VEF)*1.5;
157 dist = distance_3D(num_face,elem,domaine_VEF)*4./3.;
162 d_visco = tab_visco[elem];
163 double u_star = tab_u_star(num_face);
164 double (*pf)(double,double,double);
168 d_alpha = alpha.
valeurs()(0,0);
172 d_alpha = alpha.
valeurs()(elem);
174 d_alpha = alpha.
valeurs()(elem,0);
176 double Pr = d_visco/d_alpha;
177 double Beta = pow(3.85*pow(Pr,1./3.)-1.3,2.)+2.12*log(Pr);
183 double y0m=(dist*u_star/d_visco)-0.5;
184 double y0p=(dist*u_star/d_visco)+0.5;
185 alpha_t(elem)=d_visco/(pf(y0p,Pr,Beta)-pf(y0m,Pr,Beta))-d_alpha;
186 if(alpha_t(elem)<0.) alpha_t(elem)=0.;
187 equivalent_distance_[n_bord](ind_face) = (d_alpha+alpha_t(elem))*pf(dist*u_star/d_visco,Pr,Beta)/u_star;
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Convection_Diffusion_Concentration Cas particulier de Convection_Diffusion_std
classe Convection_Diffusion_std Cette classe est la base des equations modelisant le transport
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
virtual const RefObjU & get_modele(Type_modele type) const
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
virtual int nb_comp() const
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_cinematique() const
int num_face(const int) const
virtual const Champ_Don_base & diffusivite() const
Renvoie la diffusivite du milieu.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
const Turbulence_paroi_base & loi_paroi() const
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Paroi_loi_WW_scal_VEF
int calculer_scal(Champ_Fonc_base &) override
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_TYPE_ local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
const Objet_U & valeur() const
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.
const DoubleVect & tab_u_star() const
DoubleVects equivalent_distance_