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);
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
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.
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
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()
Renvoie le domaine des conditions aux limite discretisee associee a l'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
Renvoie le nom du champ.
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
int num_premiere_face() const
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
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
Renvoie la masse volumique du milieu.
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,...
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
const Turbulence_paroi_base & loi_paroi() const
const Champ_Fonc_base & viscosite_turbulente() const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
classe Navier_Stokes_Turbulent Cette classe represente l'equation de la dynamique pour un fluide
const Modele_turbulence_hyd_base & modele_turbulence() const
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual int debute_par(const char *const n) const
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 const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
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
Associe l'operateur au domaine_dis, le domaine_Cl_dis, et a l'inconnue de son 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()
Associe l'operateur au domaine_dis, le domaine_Cl_dis, et a l'inconnue de son equation.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
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
Classe Turbulence_paroi_base Classe de base pour la hierarchie des classes representant les modeles.