16#include <Modele_turbulence_hyd_0_eq_base.h>
17#include <Modifier_pour_fluide_dilatable.h>
18#include <Domaine_Cl_dis_base.h>
19#include <Discretisation_base.h>
20#include <Schema_Temps_base.h>
21#include <Equation_base.h>
22#include <Probleme_base.h>
23#include <Ecrire_MED.h>
27#include <Perf_counters.h>
47 discretiser_K(mon_equation_->schema_temps(), mon_equation_->domaine_dis(), energie_cinetique_turb_);
53 le_dom_VF_ = ref_cast(
Domaine_VF, domaine_dis);
62 les_motcles[0] =
"viscosite_turbulente";
64 les_motcles[2] =
"distance_paroi";
66 int rang = les_motcles.
search(mot);
71 ch_ref = la_viscosite_turbulente_.valeur();
76 Cerr <<
"The kinetic energy cannot be post-processed for the mixing length model." << finl;
99 les_motcles[1] =
"viscosite_turbulente";
100 les_motcles[2] =
"distance_paroi";
103 int rang = les_motcles.
search(mot);
107 Cerr <<
"The kinetic energy is not known for the mixing length model." << finl;
129 const Domaine& dom = mon_equation_->domaine_dis().domaine();
140 int nb_case_tempo = 1;
141 double temps = mon_equation_->schema_temps().temps_courant();
142 dis.
discretiser_champ(
"CHAMP_ELEM", mon_equation_->domaine_dis(), scalaire, noms, unit, 2, nb_case_tempo, temps, K_eps_sortie_);
143 K_eps_sortie_->nommer(
"K_eps_from_nut");
144 K_eps_sortie_->fixer_unites(unit);
145 K_eps_sortie_->fixer_noms_compo(noms);
151 statistics().begin_count(STD_COUNTERS::turbulent_viscosity,statistics().get_last_opened_counter_level()+1);
156 if (mon_equation_->probleme().is_dilatable())
157 correction_nut_et_cisaillement_paroi_si_qc(*
this);
158 energie_cinetique_turb_->valeurs().echange_espace_virtuel();
159 la_viscosite_turbulente_->valeurs().echange_espace_virtuel();
160 statistics().end_count(STD_COUNTERS::turbulent_viscosity);
171 double temps = mon_equation_->schema_temps().temps_courant();
172 K_eps_sortie_->mettre_a_jour(temps);
176 DoubleTab& K_Eps = K_eps_sortie_->valeurs();
177 const DoubleTab& visco_turb = la_viscosite_turbulente_->valeurs();
181 const double Kappa = 0.415;
187 for (
int elem = 0; elem < nb_elem; elem++)
189 K_Eps(elem, 0) = pow(visco_turb(elem) / (Cmu * Kappa * wall_length(elem)), 2);
191 if (visco_turb(elem) == 0.)
194 K_Eps(elem, 1) = Cmu * K_Eps(elem, 0) * K_Eps(elem, 0) / visco_turb(elem);
199 for (
int elem = 0; elem < nb_elem; elem++)
201 K_Eps(elem, 0) /= 47.;
202 K_Eps(elem, 1) /= 1000.;
208 const Domaine& dom = mon_equation_->domaine_dis().domaine();
211 const Nom& nom_post = K_eps_sortie_->
le_nom();
213 assert(K_eps_sortie_->valeurs().dimension(0) == dom.
nb_elem());
214 Ecrire_MED ecr_med(fic, dom);
215 ecr_med.
ecrire_champ(
"CHAMPMAILLE", nom_post, K_eps_sortie_->valeurs(), K_eps_sortie_->unites(), K_eps_sortie_->noms_compo(), type_elem, temps);
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
void ecrire_champ(const Nom &type, const Nom &nom_cha1, const DoubleTab &val, const Noms &unite, const Noms &noms_compo, const Nom &type_elem, double time)
void ecrire_domaine(bool append=true)
Class defining operators and methods for all reading operation in an input flow (file,...
Classe Modele_turbulence_hyd_0_eq_base Classe de base des modeles a 0 equation.
void set_param(Param ¶m) const override
virtual Champ_Fonc_base & energie_cinetique_turbulente()
OBS_PTR(Domaine_VF) le_dom_VF_
void completer() override
virtual Champ_Fonc_base & calculer_viscosite_turbulente()=0
void mettre_a_jour(double) override
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
Nom fichier_K_eps_sortie_
void discretiser() override
Discretise le modele de turbulence.
int comprend_champ(const Motcle &mot) const
int comprend_mot(const Motcle &mot) const
int a_pour_Champ_Fonc(const Motcle &mot, OBS_PTR(Champ_base) &ch_ref) const
virtual void calculer_energie_cinetique_turb()=0
void imprimer(Sortie &) const override
Effectue l'impression si cela est necessaire.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
int limpr_ustar(double, double, double, double) const
double dt_impr_ustar_mean_only_
virtual void set_param(Param ¶m) const override
void discretiser_K(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const
Champs_compris champs_compris_
void limiter_viscosite_turbulente()
virtual void discretiser()
Discretise le modele de turbulence.
virtual void imprimer(Sortie &) const
Effectue l'impression si cela est necessaire.
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
class Nom Une chaine de caractere pour nommer les objets de TRUST
const Nom & le_nom() const override
Renvoie *this;.
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 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.
static int me()
renvoie mon rang dans le groupe de communication courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double temps_courant() const
Renvoie le temps courant.
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
double temps_precedent() const
Renvoie le temps courant.
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const