16#include <Paroi_loi_WW_hyd_EF.h>
17#include <Fluide_base.h>
18#include <Champ_Uniforme.h>
19#include <Dirichlet_paroi_fixe.h>
20#include <Dirichlet_paroi_defilante.h>
22#include <Modele_turbulence_hyd_base.h>
23#include <Equation_base.h>
37 Cerr<<
"Reading of data for a "<<
que_suis_je()<<
" wall law"<<finl;
40 param.lire_avec_accolades_depuis(is);
59 Cmu_ = mon_modele_turb_hyd->get_Cmu();
76 Cerr <<
" Paroi_loi_WW_hyd_EF::calculer_hyd(DoubleTab& tab_k_eps) " << finl;
77 Cerr <<
"on ne doit pas entrer dans cette methode" << finl;
78 Cerr <<
" car elle est definie uniquement pour la LES " << finl ;
88 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
92 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
97 visco = std::max(tab_visco(0,0),DMINFLOAT);
107 Cerr <<
"In Paroi_loi_WW_hyd_EF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
114 double dist_G,dist_som;
125 ArrOfInt nodes_face(nsom);
126 int nb_nodes_free = nsom_elem - nsom;
130 for (
int n_bord=0; n_bord<domaine_EF.
nb_front_Cl(); n_bord++)
137 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
146 for (
int ind_face=ndeb; ind_face<nfin; ind_face++)
148 int num_face=le_bord.
num_face(ind_face);
149 int elem = face_voisins(num_face,0);
154 for(
int jsom=0; jsom<nsom; jsom++)
157 nodes_face[jsom] = num_som;
158 for(
int comp=0; comp<
dimension; comp++) vit_face[comp]+=vitesse(num_som,comp)/nsom;
163 for (
int i=0; i<nsom_elem; i++)
165 int node=elems(elem,i);
167 for(
int jsom=0; jsom<nsom; jsom++)
168 if (nodes_face[jsom] == node) IOK=0;
172 vit[j]+=(vitesse(node,j)-vit_face[j])/nb_nodes_free;
174 norm_v = norm_vit_lp(vit,num_face,domaine_EF,val);
179 d_visco = tab_visco[elem];
181 dist_G = distance_face_elem(num_face,elem,domaine_EF);
182 dist_som = 2.0*dist_G;
186 calculer_local(d_visco,tab_nu_t,tab_k,norm_v,dist_G,dist_som,elem,num_face);
199 Cerr <<
"pour l instant Werner et Wengle n'est pas code pour la condition de paroi defilante!!" << finl;
211 DoubleTab& tab_nu_t,DoubleTab& tab_k,
double norm_vit,
212 double dist_G,
double dist_som,
int elem,
int num_face)
215 double up_lim = d_visco*
Y0*
Y0/dist_som;
217 if (norm_vit <= up_lim)
224 if (
impr==1) Cerr <<
"Domaine lineaire" << finl;
230 if (
impr==1) Cerr <<
"Domaine en puissance" << finl;
237 double d_visco,
double dist,
251 double dist,
int face)
264 part1bis= ( pow(d_visco,
B) * norm_vit ) / (
A *pow(dist,
B) );
274 double dist,
int elem,
int face)
285 tab_k(elem) = u_star*u_star/sqrt(
Cmu_);
286 nu_t(elem) = u_star*
Kappa_*dist ;
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
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.
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
int face_sommets(int i, int j) const
renvoie le numero du ieme sommet de la face num_face.
int nb_som_face() const
renvoie le nombre de sommets par face.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Domaine & domaine() const
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 Champ_Inc_base & inconnue() const =0
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
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.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_flag(const char *keyword, const bool *value)
Register a boolean flag whose mere presence switches it to true.
int preparer_calcul_hyd(DoubleTab &)
int calculer_local(double, DoubleTab &, DoubleTab &, double, double, double, int, int)
int init_lois_paroi_hydraulique() override
int calculer_hyd(DoubleTab &) override
void set_param(Param ¶m) const override
int calculer_couche_puissance(DoubleTab &, DoubleTab &, double, int, int)
int calculer_u_star_sous_couche_visq(double, double, double, int)
int calculer_u_star_couche_puissance(double, double, double, int)
void set_param(Param ¶m) const override
Classe de base des flux de sortie.
_TYPE_ local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
const DoubleVect & tab_u_star() const
DoubleTab Cisaillement_paroi_