16#include <Eval_Dift_Multiphase_VDF.h>
17#include <Modele_turbulence_hyd_base.h>
18#include <Op_Dift_VDF_base.h>
19#include <Eval_Dift_VDF.h>
20#include <Perf_counters.h>
31 iter_->ajouter_blocs(matrices,secmem,semi_impl);
43 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
49 const DoubleTab& xv = zvdf.
xv();
53 int face, nb_faces = zvdf.
nb_faces();
54 double db_diffusivite;
58 const DoubleTab& tab_diffusivite = ch.
valeurs();
59 const int N = tab_diffusivite.
dimension(1);
63 int cM = (tab_diffusivite.
dimension(0) == 1);
69 const DoubleTab& diffusivite_turb = eval_dift.
tab_nu_t() ;
71 assert(diffusivite_turb.
nb_dim()==2);
73 for (
int i = 0; i < size; i++)
74 for (
int n=0; n<N; n++)
75 diffu_tot(i, n) = tab_diffusivite(!cM*i, n) + alpharho(i, n)*diffusivite_turb(i,n);
81 const DoubleVect& diffusivite_turb = ch_diff_turb.
valeurs();
83 for (
int i = 0; i < size; i++)
84 diffu_tot[i] = tab_diffusivite[!cM*i] + diffusivite_turb[i];
88 Cerr <<
"Method Op_Dift_VDF_base::ajoute_terme_pour_axi_turb" << finl;
90 Cerr <<
"with the current operator " <<
que_suis_je() <<
"is not coherent." << finl;
91 Cerr <<
"It must be sub typing of Navier_Stokes_Turbulent" << finl;
95 for (face = 0; face < nb_faces; face++)
96 for (
int n = 0; n < N; n++)
99 const int elem1 = face_voisins(face, 0), elem2 = face_voisins(face, 1);
101 if (elem1 == -1) db_diffusivite = diffu_tot(elem2, n);
102 else if (elem2 == -1) db_diffusivite = diffu_tot(elem1, n);
103 else db_diffusivite = 0.5 * (diffu_tot(elem2, n) + diffu_tot(elem1, n));
105 double r = xv(face, 0);
108 if (mat) (*mat)(N * face + n, N * face + n) += db_diffusivite * volumes_entrelaces(face) / (r * r);
109 secmem(face, n) -= inco(face, n) * db_diffusivite * volumes_entrelaces(face) / (r * r);
DoubleTab & valeurs() override
Overrides Champ_base::valeurs() Returns the array of values.
class Champ_Fonc_base Base class of fields that are functions of a calculated quantity
DoubleTab & passe(int i=1) override
Returns field values at instant t-i.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
virtual DoubleTab & valeurs()=0
class Champ_base This class is the base of the fields hierarchy.
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
int nb_faces() const
Returns the total number of faces.
DoubleVect & volumes_entrelaces()
double xv(int num_face, int k) const
int face_voisins(int num_face, int i) const
Returns the neighbouring element of num_face in direction i.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const RefObjU & get_modele(Type_modele type) const
Champ_Inc_base & champ_conserve() const
virtual const Champ_Inc_base & inconnue() const =0
Probleme_base & probleme()
Returns the problem associated with the equation.
virtual const Champ_base & get_diffusivite() const final
const DoubleTab & tab_nu_t() const
const Champ_Fonc_base & diffusivite_turbulente() const
const Nom & le_nom() const override
Returns the name of the field.
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
Base class for the turbulence model hierarchy for Navier-Stokes equations.
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
A character string (Nom) in uppercase.
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 Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
class Op_Diff_VDF_base Classe de base des operateurs de diffusion VDF
void ajoute_terme_pour_axi_turb(matrices_t, DoubleTab &, const tabs_t &) const
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
virtual bool is_turb() const
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const
const Objet_U & valeur() const