16#include <Modele_turbulence_hyd_K_Eps_Realisable.h>
17#include <Modele_turbulence_scal_base.h>
18#include <Modele_Shih_Zhu_Lumley_VEF.h>
19#include <Navier_Stokes_Turbulent.h>
20#include <Fluide_Incompressible.h>
21#include <Champ_Inc_P0_base.h>
22#include <Schema_Temps_base.h>
23#include <Champ_Uniforme.h>
24#include <communications.h>
25#include <Probleme_base.h>
26#include <Perf_counters.h>
58 if (mot ==
"Modele_Fonc_Realisable")
61 get_modele_fonction()->discretiser();
62 Cerr <<
"Realizable K_Epsilon model type " << get_modele_fonction().que_suis_je() << finl;
73 const DoubleTab& tab_K_Eps = chK_Eps.
valeurs();
74 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable::calculer_viscosite_turbulente K_Eps", tab_K_Eps);
75 DoubleTab& visco_turb = la_viscosite_turbulente_->valeurs();
80 double non_prepare = 1;
81 if (visco_turb.
size() == n)
83 non_prepare =
mp_max(non_prepare);
88 visco_turb_au_format_K_eps_Rea.typer(type);
91 if (visco_turb_K_eps_Rea.
size() != n)
93 Cerr <<
"visco_turb_K_eps_Rea size is " << visco_turb_K_eps_Rea.
size() <<
" instead of " << n << finl;
97 fill_turbulent_viscosity_tab(n, tab_K_Eps, visco_turb_K_eps_Rea);
98 la_viscosite_turbulente_->affecter(visco_turb_au_format_K_eps_Rea.valeur());
101 fill_turbulent_viscosity_tab(n, tab_K_Eps, visco_turb);
103 la_viscosite_turbulente_->changer_temps(temps);
104 return la_viscosite_turbulente_;
107void Modele_turbulence_hyd_K_Eps_Realisable::fill_turbulent_viscosity_tab(
const int n,
const DoubleTab& tab_K_Eps, DoubleTab& turbulent_viscosity)
109 const DoubleTab& Cmu = get_modele_fonction()->get_Cmu();
110 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable::calculer_viscosite_turbulente Cmu", Cmu);
112 for (
int i = 0; i < n; i++)
115 turbulent_viscosity[i] = 0.;
117 turbulent_viscosity[i] = Cmu(i) * tab_K_Eps(i, 0) * tab_K_Eps(i, 0) / tab_K_Eps(i, 1);
137 statistics().begin_count(STD_COUNTERS::turbulent_viscosity, statistics().get_last_opened_counter_level()+1);
138 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable::mettre_a_jour la_viscosite_turbulente before", la_viscosite_turbulente_->valeurs());
140 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable::mettre_a_jour apres calculer_viscosite_turbulente la_viscosite_turbulente", la_viscosite_turbulente_->valeurs());
141 statistics().end_count(STD_COUNTERS::turbulent_viscosity);
155 if (mon_modele_fonc_)
156 if (mon_modele_fonc_->has_champ(nom, ref_champ))
167 if (mon_modele_fonc_)
168 if (mon_modele_fonc_->has_champ(nom))
181 if (mon_modele_fonc_)
182 if (mon_modele_fonc_->has_champ(nom, ref_champ))
185 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
191 if (mon_modele_fonc_)
192 mon_modele_fonc_->get_noms_champs_postraitables(nom, opt);
198 if (lp ==
"negligeable_VEF" || lp ==
"negligeable_VDF")
199 if (!associe_modele_fonction())
201 Cerr <<
"The turbulence model of type " <<
que_suis_je() << finl;
202 Cerr <<
"must not be used with a wall law of type negligeable or with a modele_function." << finl;
203 Cerr <<
"Another wall law must be selected with this kind of turbulence model." << finl;
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
static void verifier(const char *const msg, double)
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de toutes les conditions aux limites.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual void mettre_a_jour(double temps)
La valeur de l'inconnue sur le pas de temps a ete calculee.
virtual int preparer_calcul()
Tout ce qui ne depend pas des autres problemes eventuels.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
virtual bool initTimeStep(double dt)
Allocation et initialisation de l'inconnue et des CLs jusqu'a present+dt.
static void typer_lire_Modele_Fonc_Realisable(OWN_PTR(Modele_Fonc_Realisable_base)&, const Equation_base &, Entree &is)
Champ_Inc_base & get_set_unknown()
const Champ_Inc_base & get_unknown() const
class Modele_turbulence_hyd_K_Eps_Realisable
int preparer_calcul() override
Prepare le calcul.
void verifie_loi_paroi() override
Transport_K_Eps_Realisable & get_set_eq_transport() override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
bool initTimeStep(double dt) override
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
void controler() override
const Transport_K_Eps_Realisable & get_eq_transport() const override
void mettre_a_jour(double) override
virtual Champ_Fonc_base & calculer_viscosite_turbulente(double temps)
OWN_PTR(Modele_Fonc_Realisable_base) &associe_modele_fonction()
void set_param(Param ¶m) const override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
const Champ_base & get_champ(const Motcle &nom) const override
DoubleTab & complete_viscosity_field(const int, const Domaine_dis_base &, Champ_Inc_base &)
std::enable_if_t<(M_TYPE==MODELE_TYPE::K_EPS||M_TYPE==MODELE_TYPE::K_EPS_REALISABLE||M_TYPE==MODELE_TYPE::K_OMEGA), void > calculate_limit_viscosity(Champ_Inc_base &, double)
Classe Modele_turbulence_hyd_RANS_K_Eps_base Classe de base des modeles de type RANS_keps.
void set_param(Param ¶m) const override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
OBS_PTR(Equation_base) mon_equation_
virtual int preparer_calcul()
Prepare le calcul.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
Un tableau de chaine de caracteres (VECT(Nom)).
virtual int lire_motcle_non_standard(const Motcle &motlu, Entree &is)
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
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(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
static double mp_max(double)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
virtual int faire_un_pas_de_temps_eqn_base(Equation_base &)=0
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const
int controler_K_Eps()
Controle le champ inconnue K-epsilon en forcant a zero les valeurs du champ.