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
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
DoubleTab & passe(int i=1) override
Renvoie les valeurs du champs a l'instant t-i.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
int nb_faces() const
renvoie le nombre global de faces.
DoubleVect & volumes_entrelaces()
double xv(int num_face, int k) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la 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()
Renvoie le probleme associe a l'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
Renvoie le nom du champ.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
Classe Modele_turbulence_hyd_base Cette classe sert de base a la hierarchie des classes.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Une chaine de caractere (Nom) en majuscules.
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.
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)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const
const Objet_U & valeur() const