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
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
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 &)
classe Champ_base Cette classe est la base de la hierarchie des champs.
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.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_cinematique() const
Classe Modele_turbulence_scal_base Cette classe represente un modele de turbulence pour une equation ...
const Champ_Fonc_base & conductivite_turbulente() const
const Champ_Fonc_base & diffusivite_turbulente() const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
class Nom Une chaine de caractere pour nommer les objets de TRUST
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.
classe Operateur_Diff_base Cette classe est la base de la hierarchie des operateurs representant
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
Classe de base des flux de sortie.
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
classe Source_base Un objet Source_base est un terme apparaissant au second membre d'une
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 &)