16#include <Modele_turbulence_hyd_K_Eps_Realisable_Bicephale.h>
17#include <Modifier_pour_fluide_dilatable.h>
18#include <Modele_turbulence_scal_base.h>
19#include <Modele_Shih_Zhu_Lumley_VEF.h>
20#include <Fluide_Incompressible.h>
21#include <Schema_Temps_base.h>
22#include <Champ_Uniforme.h>
23#include <Perf_counters.h>
24#include <Probleme_base.h>
57 if (mot ==
"Modele_Fonc_Realisable")
61 get_modele_fonction()->discretiser();
62 Cerr <<
"Realizable Two-headed K_Epsilon model type " << get_modele_fonction().que_suis_je() << finl;
73 const DoubleTab& tab_K = chK.
valeurs();
75 const DoubleTab& tab_Eps = chEps.
valeurs();
76 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::calculer_viscosite_turbulente K", tab_K);
77 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::calculer_viscosite_turbulente Epsilon", tab_Eps);
78 DoubleTab& visco_turb = la_viscosite_turbulente_->valeurs();
82 double non_prepare = 1;
83 if (visco_turb.
size() == n)
85 non_prepare =
mp_max(non_prepare);
90 visco_turb_au_format_K_eps_Rea.typer(type);
93 if (visco_turb_K_eps_Rea.
size() != n)
95 Cerr <<
"visco_turb_K_eps_Rea size is " << visco_turb_K_eps_Rea.
size() <<
" instead of " << n << finl;
99 fill_turbulent_viscosity_tab(n, tab_K, tab_Eps, visco_turb_K_eps_Rea);
100 la_viscosite_turbulente_->affecter(visco_turb_au_format_K_eps_Rea.valeur());
103 fill_turbulent_viscosity_tab(n, tab_K, tab_Eps, visco_turb);
105 la_viscosite_turbulente_->changer_temps(temps);
106 return la_viscosite_turbulente_;
109void Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::fill_turbulent_viscosity_tab(
const int n,
const DoubleTab& tab_K,
const DoubleTab& tab_Eps, DoubleTab& turbulent_viscosity)
111 const DoubleTab& Cmu = get_modele_fonction()->get_Cmu();
112 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::calculer_viscosite_turbulente Cmu", Cmu);
114 for (
int i = 0; i < n; i++)
116 if (tab_Eps(i, 1) <= DMINFLOAT)
117 turbulent_viscosity[i] = 0.;
119 turbulent_viscosity[i] = Cmu(i) * tab_K(i) * tab_K(i) / tab_Eps(i);
144 statistics().begin_count(STD_COUNTERS::turbulent_viscosity, statistics().get_last_opened_counter_level()+1);
145 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::mettre_a_jour la_viscosite_turbulente before", la_viscosite_turbulente_->valeurs());
147 Debog::verifier(
"Modele_turbulence_hyd_K_Eps_Realisable_Bicephale::mettre_a_jour apres calculer_viscosite_turbulente la_viscosite_turbulente", la_viscosite_turbulente_->valeurs());
148 statistics().end_count(STD_COUNTERS::turbulent_viscosity);
162 if (mon_modele_fonc_)
163 if (mon_modele_fonc_->has_champ(nom, ref_champ))
174 if (mon_modele_fonc_)
175 if (mon_modele_fonc_->has_champ(nom))
188 if (mon_modele_fonc_)
189 if (mon_modele_fonc_->has_champ(nom, ref_champ))
192 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
198 if (mon_modele_fonc_)
199 mon_modele_fonc_->get_noms_champs_postraitables(nom, opt);
205 if (lp ==
"negligeable_VEF" || lp ==
"negligeable_VDF")
206 if (!associe_modele_fonction())
208 Cerr <<
"The turbulence model of type " <<
que_suis_je() << finl;
209 Cerr <<
"must not be used with a wall law of type negligeable or with a modele_function." << finl;
210 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.
static void typer_lire_Modele_Fonc_Realisable(OWN_PTR(Modele_Fonc_Realisable_base)&, const Equation_base &, Entree &is)
class Modele_turbulence_hyd_K_Eps_Realisable_Bicephale
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void set_param(Param ¶m) const override
bool initTimeStep(double dt) override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
OWN_PTR(Modele_Fonc_Realisable_base) &associe_modele_fonction()
void mettre_a_jour(double) override
void verifie_loi_paroi() 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.
virtual Champ_Fonc_base & calculer_viscosite_turbulente(double temps)
const Champ_base & get_champ(const Motcle &nom) const override
int preparer_calcul() override
Prepare le calcul.
Classe Modele_turbulence_hyd_RANS_Bicephale_base Classe de base des modeles de type RANS en formulati...
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
Champ_Inc_base & get_set_K()
Renvoie le champ inconnue K du modele de turbulence Cette inconnue est portee.
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
Transport_K_ou_Eps_base & get_set_eq_transp_K()
Renvoie l equation d evolution de K du modele de turbulence.
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 set_param(Param ¶m) const override
const Transport_K_ou_Eps_base & get_eq_transp_K() const
Renvoie l equation d evolution de K du modele de turbulence (version const).
Transport_K_ou_Eps_base & get_set_eq_transp_Eps()
Renvoie l equation d evolution de epsilon du modele de turbulence.
Champ_Inc_base & get_set_Eps()
Renvoie le champ inconnue epsilon du modele de turbulence Cette inconnue est portee.
OBS_PTR(Equation_base) ma_seconde_equation_
const Transport_K_ou_Eps_base & get_eq_transp_Eps() const
Renvoie l equation d evolution de epsilon du modele de turbulence (version const).
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)
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)).
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
const Champ_Inc_base & inconnue() const override
Renvoie le champ inconnue de l'equation.