16#include <Modele_turbulence_hyd_K_Eps_Bicephale.h>
17#include <Source_Transport_Eps_VDF_Elem.h>
18#include <Matrix_tools.h>
19#include <Array_tools.h>
20#include <Milieu_base.h>
47 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs();
60 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs(), &Eps =
mon_eq_transport_Eps->inconnue().valeurs();
67 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs(), &Eps =
mon_eq_transport_Eps->inconnue().valeurs();
69 get_modele_fonc_bas_reyn()->Calcul_F2_BiK(F2,D,
mon_eq_transport_Eps->domaine_dis(),K, Eps, ch_visco_cin_ou_dyn );
74 const DoubleVect& volumes = le_dom_VDF->volumes(), &porosite_vol = le_dom_Cl_VDF->equation().milieu().porosite_elem();
75 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs(), &Eps =
mon_eq_transport_Eps->inconnue().valeurs();
76 for (
int elem = 0; elem < le_dom_VDF->nb_elem(); elem++)
77 resu(elem) += ((
C1*P(elem)*F1(elem)-
C2*F2(elem)*(Eps(elem)))*Eps(elem)/(K(elem)+DMINFLOAT)+E(elem))*volumes(elem)*porosite_vol(elem);
82 const DoubleVect& volumes = le_dom_VDF->volumes(), &porosite_vol = le_dom_Cl_VDF->equation().milieu().porosite_elem();
83 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs(), &Eps =
mon_eq_transport_Eps->inconnue().valeurs();
84 const double LeK_MIN = mon_eq_transport_K->modele_turbulence().get_K_MIN();
85 for (
int elem = 0; elem < le_dom_VDF->nb_elem(); elem++)
86 if (K(elem) >= LeK_MIN)
87 resu(elem) += (
C1*P(elem)-
C2*Eps(elem))*volumes(elem)*porosite_vol(elem)*Eps(elem)/K(elem);
93 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr, mat2;
96 Stencil stencil(0, 2);
97 const int size = mon_eq_transport_K->inconnue().valeurs().dimension(0);
98 for (
int e = 0; e < size; e++)
99 stencil.append_line(e, e);
100 tableau_trier_retirer_doublons(stencil);
110 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
113 const DoubleTab& K = mon_eq_transport_K->inconnue().valeurs(), &Eps =
mon_eq_transport_Eps->inconnue().valeurs();
114 const DoubleVect& porosite = le_dom_Cl_VDF->equation().milieu().porosite_elem(), &volumes = le_dom_VDF->volumes();
117 const OWN_PTR(Modele_Fonc_Bas_Reynolds_Base)& mon_modele_fonc=ref_cast(Modele_turbulence_hyd_K_Eps_Bicephale,
mon_eq_transport_Eps->modele_turbulence()).associe_modele_fonction();
118 const int is_modele_fonc=(bool(mon_modele_fonc));
125 const Champ_base& ch_visco_cin_ou_dyn =ref_cast(Operateur_Diff_base,
equation().operateur(0).l_op_base()).diffusivite();
126 mon_modele_fonc->Calcul_F2_BiK(F2,D,domaine_dis_eps,K,Eps, ch_visco_cin_ou_dyn );
129 for (
int c=0; c<size; c++)
134 double coef_eps=
C2*porosite(c)*volumes(c)*Eps(c)/K(c);
135 if (is_modele_fonc) coef_eps*=F2(c);
136 (*mat)(c,c)+=coef_eps;
DoubleVect & calculer_terme_production_K_BiK(const Domaine_VDF &, const Domaine_Cl_VDF &, DoubleVect &, const DoubleTab &, const DoubleTab &, const Champ_Face_VDF &, const DoubleTab &) const
DoubleVect & calculer_terme_production_K_BiK_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
classe Champ_base Cette classe est la base de la hierarchie des champs.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
const Nom & le_nom() const override
Renvoie le nom du champ.
int nb_colonnes() const override
Return local number of columns (=size on the current proc).
Classe Modele_turbulence_hyd_K_Eps_Bicephale Cette classe represente le modele de turbulence (k,...
const Transport_K_ou_Eps_base & get_eq_transp_K() const
Renvoie l equation d evolution de K du modele de turbulence (version const).
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
const std::string & getString() const
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_Eps_VDF_Elem Cette classe represente le terme source qui figure dans l'equatio...
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
void associer_pb(const Probleme_base &pb) 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 calcul_D_E(const DoubleTab &, const DoubleTab &, const Champ_Don_base &, DoubleTab &, DoubleTab &) const override
void fill_resu(const DoubleVect &, DoubleTab &) const override
void fill_resu_bas_rey(const DoubleVect &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, DoubleTab &) const override
const DoubleTab & get_visc_turb() const override
void calcul_F1_F2(const Champ_base &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &) const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
const OWN_PTR(Modele_Fonc_Bas_Reynolds_Base) &get_modele_fonc_bas_reyn() const override
DoubleTab & ajouter_keps(DoubleTab &) const
void associer_pb(const Probleme_base &) override
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_ou_Eps Cette classe represente l'equation de transport de l'energie cinetique
void verifier_pb_keps(const Probleme_base &, const Nom &)