16#include <Pb_Thermohydraulique_Concentration_Turbulent.h>
17#include <Pb_Thermohydraulique_Turbulent.h>
18#include <Source_Transport_VEF_Face_base.h>
19#include <Modele_turbulence_hyd_K_Eps.h>
20#include <Champ_Uniforme.h>
21#include <Constituant.h>
22#include <Fluide_base.h>
23#include <Domaine_Cl_VEF.h>
24#include <Champ_P1NC.h>
25#include <Domaine_VEF.h>
50 const DoubleTab& vit = eq_hydraulique->inconnue().valeurs();
51 const DoubleVect& volumes_entrelaces = le_dom_VEF->volumes_entrelaces();
53 const int nb_faces_ = le_dom_VEF->nb_faces();
54 DoubleTrav P(nb_faces_);
56 const bool deactivate_production_limiter=
true;
60 const int is_modele_fonc = (bool(mon_modele_fonc));
63 DoubleTab& D = ref_cast_non_const(DoubleTab, mon_modele_fonc->get_champ(
"D").valeurs());
64 DoubleTab& E = ref_cast_non_const(DoubleTab, mon_modele_fonc->get_champ(
"E").valeurs());
65 DoubleTab& F1 = ref_cast_non_const(DoubleTab, mon_modele_fonc->get_champ(
"F1").valeurs());
66 DoubleTab& F2 = ref_cast_non_const(DoubleTab, mon_modele_fonc->get_champ(
"F2").valeurs());
74 const int nb_elem_tot = le_dom_VEF->nb_elem_tot();
76 int is_Reynolds_stress_isotrope = mon_modele_fonc->Calcul_is_Reynolds_stress_isotrope();
77 if (is_Reynolds_stress_isotrope == 0)
79 Cerr <<
"On utilise une diffusion turbulente non linaire dans le terme source P" << finl;
80 const DoubleTab& visco_scal = ch_visco_cin.
valeurs();
81 DoubleTab visco_tab(nb_elem_tot);
83 visco_tab = visco_scal(0, 0);
89 if (lp !=
"negligeable_VEF")
90 if (mon_equation->schema_temps().nb_pas_dt() > 0)
94 DoubleTab Re(gradient_elem);
104 else fill_resu(volumes_entrelaces, P, resu);
113 const DoubleTab& scalaire = eq_thermique->inconnue().valeurs();
115 eq_thermique->get_modele(TURBULENCE).valeur());
117 const DoubleTab& g = gravite->valeurs();
119 const DoubleVect& volumes_entrelaces = le_dom_VEF->volumes_entrelaces();
120 const int nb_face = le_dom_VEF->nb_faces();
121 DoubleTrav G(nb_face);
125 alpha_turb, ch_beta, g, 0);
135 const DoubleTab& concen = eq_concentration->inconnue().valeurs();
139 const DoubleVect& g = gravite->valeurs();
141 const DoubleVect& volumes_entrelaces = le_dom_VEF->volumes_entrelaces();
142 const int nb_face = le_dom_VEF->nb_faces();
143 const int nb_consti = eq_concentration->constituant().nb_constituants();
144 DoubleTrav G(nb_face);
147 lambda_turb, ch_beta_concen, g, nb_consti);
159 const DoubleTab& temper = eq_thermique->inconnue().valeurs();
160 const DoubleTab& concen = eq_concentration->inconnue().valeurs();
167 const double rhocp = eq_thermique->milieu().capacite_calorifique().valeurs()(0, 0) * eq_thermique->milieu().masse_volumique().valeurs()(0, 0);
169 const DoubleVect& g = gravite->valeurs();
170 const DoubleVect& volumes_entrelaces = le_dom_VEF->volumes_entrelaces();
173 const int nb_face = le_dom_VEF->nb_faces();
174 const int nb_consti = eq_concentration->constituant().nb_constituants();
175 DoubleTrav G_t(nb_face);
176 DoubleTrav G_c(nb_face);
DoubleTab & calculer_terme_destruction_K_gen(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const DoubleVect &, int) const
DoubleTab & calculer_terme_production_K(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int &interpol_visco, const double &limiteur, const bool &deactivate_production_limiter=false, const double &cst_production_limiter=0.) const
Compute the production term for the turbulent kinetic energy.
DoubleTab & calculer_terme_production_K_EASM(const Domaine_VEF &, const Domaine_Cl_VEF &, DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const int &interpol_visco, const double &limiteur) const
class Champ_Don_base base class of Given Fields (not calculated)
DoubleTab & valeurs() override
Overrides Champ_base::valeurs() Returns the array of values.
static DoubleTab & calcul_gradient(const DoubleTab &, DoubleTab &, const Domaine_Cl_VEF &)
static DoubleTab & calcul_duidxj_paroi(DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Domaine_Cl_VEF &)
class Champ_base This class is the base of the fields hierarchy.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Class defining operators and methods for all reading operation in an input flow (file,...
Base class for an incompressible fluid and its properties:
const Champ_Don_base & viscosite_cinematique() const
Base class for scalar turbulence models coupled to a Navier-Stokes convection-diffusion equation.
const Champ_Fonc_base & conductivite_turbulente() const
const Champ_Fonc_base & diffusivite_turbulente() const
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
class Nom: a character string for naming TRUST objects.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Operateur_Diff_base This class is the base of the hierarchy of operators representing.
class Probleme_base It is a Probleme_U that is not a coupling.
Base class for output streams.
virtual void fill_resu_anisotherme(const DoubleVect &, const DoubleVect &, DoubleTab &) const
DoubleTab & ajouter_keps(DoubleTab &) const
virtual const Nom get_type_paroi() const
DoubleTab & ajouter_anisotherme_concen(DoubleTab &) const
DoubleTab & calculer(DoubleTab &) const override
virtual const DoubleTab & get_visc_turb() const
virtual void calcul_tenseur_reyn(const DoubleTab &, const DoubleTab &, DoubleTab &) const
virtual void fill_resu_bas_rey(const DoubleVect &, const DoubleTrav &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, DoubleTab &) const
DoubleTab & ajouter_anisotherme(DoubleTab &) const
virtual const OWN_PTR(Modele_Fonc_Bas_Reynolds_Base) &get_modele_fonc_bas_reyn() const
virtual void calcul_tabs_bas_reyn(const DoubleTrav &, const DoubleTab &, const DoubleTab &, const Champ_Don_base &, const Champ_base &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &) const
virtual void fill_resu_anisotherme_concen(const DoubleTrav &, const DoubleTrav &, const DoubleVect &, DoubleTab &) const
void associer_pb(const Probleme_base &pb) override
virtual const DoubleTab & get_cisaillement_paroi() const
DoubleTab & ajouter(DoubleTab &) const override=0
virtual const DoubleTab & get_K_pour_production() const
virtual void fill_resu_concen(const DoubleTrav &, const DoubleVect &, DoubleTab &) const
virtual void fill_resu(const DoubleVect &, const DoubleTrav &, DoubleTab &) const
DoubleTab & ajouter_concen(DoubleTab &) const
void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
Source_base A Source_base object is a term appearing on the right-hand side of an.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
double _coefficient_limiteur
void associer_pb_proto(const Probleme_base &)
int _interpolation_viscosite_turbulente
Entree & readOn_proto(Entree &, const Nom &)