16#include <Source_Transport_K_Eps_VDF_Elem.h>
17#include <Modele_turbulence_hyd_K_Eps.h>
18#include <VDF_discretisation.h>
19#include <Schema_Temps_base.h>
20#include <Milieu_base.h>
54 noms_compris.add(
"production_k");
56 if (opt == DESCRIPTION)
57 Cerr <<
que_suis_je() <<
" : " << noms_compris << finl;
59 nom.add(noms_compris);
64 return mon_eq_transport_K_Eps->modele_turbulence().viscosite_turbulente().valeurs();
69 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
81 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
82 get_modele_fonc_bas_reyn()->Calcul_D(D,mon_eq_transport_K_Eps->domaine_dis(),mon_eq_transport_K_Eps->domaine_Cl_dis(),vit,K_eps,ch_visco_cin);
83 get_modele_fonc_bas_reyn()->Calcul_E(E,mon_eq_transport_K_Eps->domaine_dis(),mon_eq_transport_K_Eps->domaine_Cl_dis(),vit,K_eps,ch_visco_cin,visco_turb);
88 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
89 get_modele_fonc_bas_reyn()->Calcul_F1(F1,mon_eq_transport_K_Eps->domaine_dis(),mon_eq_transport_K_Eps->domaine_Cl_dis(), P_tab, K_eps,ch_visco_cin_ou_dyn);
90 get_modele_fonc_bas_reyn()->Calcul_F2(F2,D,mon_eq_transport_K_Eps->domaine_dis(),K_eps, ch_visco_cin_ou_dyn);
95 const DoubleVect& volumes = le_dom_VDF->volumes(), &porosite_vol = le_dom_Cl_VDF->equation().milieu().porosite_elem();
96 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
97 for (
int elem = 0; elem < le_dom_VDF->nb_elem(); elem++)
99 resu(elem,0) += (P(elem)-K_eps(elem,1)-D(elem))*volumes(elem)*porosite_vol(elem);
100 resu(elem,1) += ((
C1*P(elem)*F1(elem)-
C2*F2(elem)*(K_eps(elem,1)))*K_eps(elem,1)/(K_eps(elem,0)+DMINFLOAT)+E(elem))*volumes(elem)*porosite_vol(elem);
106 const DoubleVect& volumes = le_dom_VDF->volumes(), &porosite_vol = le_dom_Cl_VDF->equation().milieu().porosite_elem();
107 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
108 const double LeK_MIN = mon_eq_transport_K_Eps->modele_turbulence().get_K_MIN();
109 DoubleTab& production_k_elem = ref_cast_non_const(DoubleTab,production_k_elem_->valeurs());
110 for (
int elem = 0; elem < le_dom_VDF->nb_elem(); elem++)
112 production_k_elem(elem)=P(elem);
113 resu(elem,0) += (P(elem)-K_eps(elem,1))*volumes(elem)*porosite_vol(elem);
114 if (K_eps(elem,0) >= LeK_MIN)
115 resu(elem,1) += (
C1*P(elem)-
C2*K_eps(elem,1))*volumes(elem)*porosite_vol(elem)*K_eps(elem,1)/K_eps(elem,0);
125 Matrice_Morse* mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
129 const DoubleVect& porosite = le_dom_Cl_VDF->equation().milieu().porosite_elem(), &volumes = le_dom_VDF->volumes();
132 const OWN_PTR(Modele_Fonc_Bas_Reynolds_Base)& mon_modele_fonc=ref_cast(Modele_turbulence_hyd_K_Eps,mon_eq_transport_K_Eps->modele_turbulence()).associe_modele_fonction();
133 const int is_modele_fonc=(bool(mon_modele_fonc));
139 const Domaine_dis_base& domaine_dis_keps =mon_eq_transport_K_Eps->domaine_dis();
140 const Champ_base& ch_visco_cin_ou_dyn =ref_cast(Operateur_Diff_base,
equation().operateur(0).l_op_base()).diffusivite();
141 mon_modele_fonc->Calcul_F2(F2,D,domaine_dis_keps,val, ch_visco_cin_ou_dyn );
144 for (
int c=0; c<size; c++)
147 if (val(c,0)>DMINFLOAT)
149 double coef_k=porosite(c)*volumes(c)*val(c,1)/val(c,0);
150 (*mat)(c*2,c*2)+=coef_k;
151 double coef_eps=
C2*coef_k;
152 if (is_modele_fonc) coef_eps*=F2(c);
153 (*mat)(c*2+1,c*2+1)+=coef_eps;
DoubleVect & calculer_terme_production_K(const Domaine_VDF &, const Domaine_Cl_VDF &, DoubleVect &, const DoubleTab &, const DoubleTab &, const Champ_Face_VDF &, const DoubleTab &) const
DoubleVect & calculer_terme_production_K_Axi(const Domaine_VDF &, const Champ_Face_VDF &, DoubleVect &, const DoubleTab &, const DoubleTab &) const
classe Champ_Don_base classe de base des Champs donnes (non calcules)
class Champ_Face_VDF Cette classe sert a representer un champ vectoriel dont on ne calcule
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const =0
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
Class defining operators and methods for all reading operation in an input flow (file,...
const Discretisation_base & discretisation() const
Renvoie la discretisation associee a l'equation.
virtual const Champ_Inc_base & inconnue() const =0
const Nom & le_nom() const override
Renvoie le nom du champ.
Classe Modele_turbulence_hyd_K_Eps Cette classe represente le modele de turbulence (k,...
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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 Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
Classe de base des flux de sortie.
class Source_Transport_K_Eps_VDF_Elem Cette classe represente le terme source qui figure dans l'equat...
OWN_PTR(Champ_Fonc_base) production_k_elem_
const DoubleTab & get_visc_turb() const override
void fill_resu(const DoubleVect &, DoubleTab &) const override
void associer_pb(const Probleme_base &pb) override
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void calcul_D_E(const DoubleTab &, const DoubleTab &, const Champ_Don_base &, DoubleTab &, DoubleTab &) const override
void discretiser() override
void calcul_F1_F2(const Champ_base &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &) const override
void calculer_terme_production(const Champ_Face_VDF &, const DoubleTab &, const DoubleTab &, DoubleVect &, const bool &deactivate_production_limiter=false, const double &cst_production_limiter=0.) const override
void fill_resu_bas_rey(const DoubleVect &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, DoubleTab &) const override
DoubleTab & ajouter_keps(DoubleTab &) const
void associer_pb(const Probleme_base &) override
Champs_compris champs_compris_
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const
classe Transport_K_Eps Cette classe represente l'equation de transport de l'energie cinetique
void verifier_pb_keps(const Probleme_base &, const Nom &)