16#include <Paroi_std_scal_hyd_EF.h>
17#include <Paroi_std_hyd_EF.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 <Champ_Uniforme_Morceaux.h>
23#include <Champ_Fonc_Tabule.h>
24#include <Fluide_base.h>
25#include <Modele_turbulence_hyd_base.h>
26#include <Convection_Diffusion_Concentration.h>
27#include <Modele_turbulence_scal_base.h>
28#include <Constituant.h>
31#include <Paroi_decalee_Robin.h>
68 param.ajouter_condition(
"(value_of_calcul_ldp_en_flux_impose_eq_0)_or_(value_of_calcul_ldp_en_flux_impose_eq_1)",
"calcul_ldp_en_flux_impose must be 0 or 1");
69 param.lire_avec_accolades_depuis(s);
83 DoubleTab& alpha_t = diffusivite_turb.
valeurs();
87 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
88 const DoubleVect& volumes_maille = domaine_EF.
volumes();
97 visco = std::max(tab_visco(0,0),DMINFLOAT);
103 Cerr <<
"In Paroi_std_scal_hyd_EF::init_lois_paroi : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
109 const RefObjU& modele_turbulence_hydr = eqn_hydr.
get_modele(TURBULENCE);
112 const DoubleVect& tab_u_star = loi.
tab_u_star();
117 const bool alpha_uniforme = (sub_type(
Champ_Uniforme,alpha) ? true :
false);
125 const double d_alpha = alpha.
valeurs()(0,0);
127 for (
int nc = 0; nc < alpha.
valeurs().line_size(); nc++)
128 if (d_alpha!=alpha.
valeurs()(0,nc))
129 Process::exit(
"Law of the wall are not implemented yet for constituants with different diffusion coefficients.");
135 const double d_alpha = alpha.
valeurs()(elem,0);
136 for (
int nc = 0; nc < alpha.
valeurs().line_size(); nc++)
137 if (d_alpha != alpha.
valeurs()(elem, nc))
138 Process::exit(
"Law of the wall are not implemented yet for constituants with different diffusion coefficients.");
144 for (
int n_bord = 0; n_bord < domaine_EF.
nb_front_Cl(); n_bord++)
149 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
152 || (sub_type(
Symetrie, la_cl.valeur()))
156 const int size = le_bord.
nb_faces();
159 for (
int ind_face = 0; ind_face < size; ind_face++)
161 const int num_face = le_bord.
num_face(ind_face);
163 int elem = face_voisins(num_face, 0);
165 elem = face_voisins(num_face, 1);
169 Process::exit(
"Error: the axisymmetric EF case is not yet implemented in the scalar wall-function.");
179 dist = volumes_maille(elem)/surfaces_face(num_face);
183 const double u_star = tab_u_star(num_face);
184 const double d_alpha = (alpha_uniforme ? alpha.
valeurs()(0, 0) : alpha.
valeurs()(elem, 0));
186 if (u_star == 0 || d_alpha==0)
187 dist_equiv[ind_face] = dist;
191 const double d_visco = (l_unif ? visco : tab_visco(elem,0));
192 const double Pr = d_visco/d_alpha;
193 const double y_plus = dist*u_star/d_visco;
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 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.
virtual const DoubleVect & face_surfaces() const
double volumes(int i) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
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.
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
cette classe permet de specifier des options a la loi de paroi standard.
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.
int init_lois_paroi() override
int calculer_scal(Champ_Fonc_base &) override
int init_lois_paroi() override
int init_lois_paroi_scalaire()
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.
classe Symetrie Sur les faces de symetrie on a les proprietes suivantes:
_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 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_
KOKKOS_INLINE_FUNCTION double T_plus(double y_plus, double Pr, double Prdt_sur_kappa)
int calcul_ldp_en_flux_impose_