16#include <Modele_turbulence_hyd_K_Eps_Bas_Reynolds.h>
17#include <Modele_turbulence_hyd_K_Eps_Realisable.h>
18#include <Modele_turbulence_hyd_K_Eps_Bicephale.h>
19#include <Transport_K_Eps_Bas_Reynolds.h>
20#include <Modele_turbulence_hyd_K_Eps.h>
21#include <Navier_Stokes_Turbulent.h>
22#include <Op_Diff_K_Eps_VDF_base.h>
23#include <Fluide_Dilatable_base.h>
24#include <Operateur_base.h>
25#include <Probleme_base.h>
26#include <Champ_P0_VDF.h>
27#include <Perf_counters.h>
38 iter->associer_champ_convecte_ou_inc(
equation().inconnue(),
nullptr);
39 iter->set_name_champ_inco(
equation().inconnue().
le_nom().getString());
40 iter->set_convective_op_pb_type(
false , 0 );
139 const auto& tab1=matrice.
get_tab1();
142 const IntTab& face_voisins = iter->domaine().face_voisins();
152 int nb_cl=les_cl.size();
153 for (
int num_cl=0; num_cl<nb_cl; num_cl++)
156 const Cond_lim& la_cl = les_cl[num_cl];
158 int nbfaces = la_front_dis.
nb_faces();
160 int nfin = ndeb + nbfaces;
163 for (
int num_face=ndeb; num_face<nfin; num_face++)
165 int elem= face_voisins(num_face,0);
166 if (elem==-1) elem= face_voisins(num_face,1);
168 for (
int comp=0; comp<nb_comp; comp++)
171 int idiag = tab1[elem*nb_comp+comp]-1;
174 int nbvois = tab1[elem*nb_comp+1+comp] - tab1[elem*nb_comp+comp];
175 for (
int k=1; k < nbvois; k++) coeff[idiag+k]=0;
177 secmem(elem,comp)=val(elem,comp);
188 int nb_cl=les_cl.size();
189 for (
int num_cl=0; num_cl<nb_cl; num_cl++)
192 const Cond_lim& la_cl = les_cl[num_cl];
194 int nbfaces = la_front_dis.
nb_faces();
196 int nfin = ndeb + nbfaces;
199 for (
int num_face=ndeb; num_face<nfin; num_face++)
201 int elem= face_voisins(num_face,0);
202 if (elem==-1) elem= face_voisins(num_face,1);
204 for (
int comp=0; comp<nb_comp; comp++)
207 int idiag = tab1[elem*nb_comp+comp]-1;
210 int nbvois = tab1[elem*nb_comp+1+comp] - tab1[elem*nb_comp+comp];
211 for (
int k=1; k < nbvois; k++) coeff[idiag+k]=0;
213 secmem(elem,comp)=val(elem,comp);
224 int nb_cl=les_cl.size();
225 for (
int num_cl=0; num_cl<nb_cl; num_cl++)
228 const Cond_lim& la_cl = les_cl[num_cl];
230 int nbfaces = la_front_dis.
nb_faces();
232 int nfin = ndeb + nbfaces;
235 for (
int num_face=ndeb; num_face<nfin; num_face++)
237 int elem= face_voisins(num_face,0);
238 if (elem==-1) elem= face_voisins(num_face,1);
241 int idiag = tab1[elem]-1;
244 int nbvois = tab1[elem+1] - tab1[elem];
245 for (
int k=1; k < nbvois; k++) coeff[idiag+k]=0;
247 secmem(elem)=val(elem);
253 Cerr<<
" erreur dans Op_Diff_K_Eps_VDF_base::modifier_pour_Cl ... cas non prevu "<<finl;
262 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr, mat2;
271 Matrice_Morse* mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
274 if(mat) iter->ajouter_contribution(inco, *mat);
276 iter->ajouter(inco,secmem);
class Champ_Fonc_base Base class of fields that are functions of a calculated quantity
DoubleTab & valeurs() override
Returns the array of field values at the current time.
class Champ_base This class is the base of the fields hierarchy.
class Cond_lim Generic class used to represent any class
class Conds_lim This class represents a vector of boundary conditions.
Dirichlet_paroi_defilante Imposes the wall velocity in an equation of type Navier_Stokes.
Dirichlet_paroi_fixe Represents a fixed wall in a Navier-Stokes type equation.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Returns the discretized boundary condition domain associated with the equation.
const Champ_base & diffusivite() const
void associer_mvolumique(const Champ_base &mvol)
void associer_diff_turb(const Champ_Fonc_base &diffu)
void associer(const Champ_base &diffu)
void associer_Pr_K_Eps(double Sigma_K, double Sigma_Eps)
const Champ_Fonc_base & diffusivite_turbulente() const
const Nom & le_nom() const override
Returns the name of the field.
Base class for an incompressible fluid and its properties:
int num_premiere_face() const
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
const auto & get_tab1() const
int nb_colonnes() const override
Return local number of columns (=size on the current proc).
virtual const Champ_base & masse_volumique() const
Returns the mass density of the medium (const version).
double get_Sigma_Eps() const
double get_Sigma_K() const
class Modele_turbulence_hyd_K_Eps_Bas_Reynolds
Classe Modele_turbulence_hyd_K_Eps_Bicephale Cette classe represente le modele de turbulence (k,...
class Modele_turbulence_hyd_K_Eps_Realisable
Classe Modele_turbulence_hyd_K_Eps Cette classe represente le modele de turbulence (k,...
Base class for the turbulence model hierarchy for Navier-Stokes equations.
const Turbulence_paroi_base & loi_paroi() const
const Champ_Fonc_base & viscosite_turbulente() const
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
Navier-Stokes equation for a viscous incompressible fluid (div U = 0) with turbulence modelling.
const Modele_turbulence_hyd_base & modele_turbulence() const
class Nom: a character string for naming TRUST objects.
virtual int debute_par(const char *const n) const
const std::string & getString() const
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 const Nom & le_nom() const
Returns the name of the Objet_U. Virtual method to override: returns "neant" in this implementation.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
virtual void mettre_a_jour_diffusivite() const
void associer_diffusivite(const Champ_base &ch_diff) override
void modifier_pour_Cl(Matrice_Morse &, DoubleTab &) const override
DOES NOTHING - to override in derived classes.
void completer() override
Associates the operator with the domaine_dis, the domaine_Cl_dis, and the unknown of its equation.
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
const Champ_base & diffusivite() const override
const Champ_Fonc_base & diffusivite_turbulente() const
void modifier_pour_Cl(const Domaine_VDF &, const Domaine_Cl_VDF &, Matrice_Morse &, DoubleTab &) const
void dimensionner(const Domaine_VDF &, const Domaine_Cl_VDF &, Matrice_Morse &, const bool) const
virtual void completer()
Associates the operator with the domaine_dis, the domaine_Cl_dis, and the unknown of its equation.
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.
const Modele_turbulence_hyd_2_eq_base & modele_turbulence() const
Renvoie le modele de turbulence associe a l'equation.
const Champ_Inc_base & inconnue() const override
Renvoie le champ inconnue de l'equation.
classe Transport_K_Eps Cette classe represente l'equation de transport de l'energie cinetique
const Champ_Inc_base & inconnue() const override
Renvoie le champ inconnue de l'equation.
bool transporte_t_il_K() const
classe Transport_K_ou_Eps Cette classe represente l'equation de transport de l'energie cinetique
Base class for the hierarchy of wall-law models computing turbulent quantities near walls....