16#include <Op_Dift_Multiphase_VDF_Elem.h>
17#include <Op_Dift_Multiphase_VDF_Face.h>
18#include <Pb_Multiphase.h>
61 Cerr <<
"Error in " <<
que_suis_je() <<
": no turbulent momentum diffusion found!" << finl;
68 Cerr <<
"Error in " <<
que_suis_je() <<
": no turbulent viscosity correlation found!" << finl;
81 double dt_stab, coef = -1.e10;
83 const IntTab& elem_faces = domaine_VDF.
elem_faces();
89 double mu_turbulent, mu_physique, nu_physique, alfa;
91 ArrOfInt numfa(2 * dim);
92 for (
int elem = 0; elem < domaine_VDF.
nb_elem(); elem++)
96 for (
int i = 0; i < 2 * dim; i++)
97 numfa[i] = elem_faces(elem, i);
99 for (
int d = 0; d < dim; d++)
101 const double hd = domaine_VDF.
dist_face(numfa[d], numfa[dim + d], d);
102 deltax += 1. / (hd * hd);
109 alfa = (alp ? (*alp)(elem, ncomp) : 1.0);
112 if (alfa != 0.0 ) mu_turbulent = mu_turbulent/alfa;
114 mu_physique = rho(!cR * elem, ncomp) * lambda(!cL * elem, ncomp);
115 nu_physique = diffu(!cD * elem, ncomp);
120 diflo = deltax * (mu_physique + mu_turbulent) * (nu_physique / mu_physique);
122 coef = std::max(coef, diflo);
127 dt_stab = 0.5 / (coef + DMINFLOAT);
virtual DoubleTab & valeurs()=0
virtual DoubleTab & passe(int i=1)
virtual void creer_champ(const Motcle &motlu)=0
virtual void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const =0
Convection_Diffusion_std This class is the base for equations modelling the transport.
static void typer_lire_correlation(OWN_PTR(Correlation_base)&, const Probleme_base &, const Nom &, Entree &)
double dist_face(int, int, int k) const
Returns the distance between two face centers in direction k (Cartesian only).
int elem_faces(int i, int j) const
Returns the index of the i-th face of element num_elem; the face numbering convention is.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
Probleme_base & probleme()
Returns the problem associated with the equation.
virtual const Operateur & operateur(int) const =0
virtual const Champ_base & masse_volumique() const
Returns the mass density of the medium (const version).
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
A character string (Nom) in uppercase.
An array of character strings (VECT(Nom)).
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.
std::enable_if_t< _TYPE_==Type_Operateur::Op_DIFT_MULTIPHASE_FACE, void > set_nut_impl(const DoubleTab &nut)
void associer_pb(const Probleme_base &pb)
std::enable_if_t< _TYPE_==Type_Operateur::Op_DIFT_MULTIPHASE_FACE||_TYPE_==Type_Operateur::Op_DIFT_MULTIPHASE_ELEM, void > associer_corr_impl(const Correlation_base &corr)
const DoubleTab & alpha_() const
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void completer() override
Associates the operator with the domaine_dis, the domaine_Cl_dis, and the unknown of its equation.
double calculer_dt_stab() const override
Computes dt_stab.
void creer_champ(const Motcle &motlu) override
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
void associer_proto(const Probleme_base &, Champs_compris &)
void ajout_champs_proto_elem()
void mettre_a_jour_proto_elem(const double temps)
void creer_champ_proto_elem(const Motcle &motlu)
void completer_proto_elem(const Operateur_Diff_base &op)
DoubleTab nu_ou_lambda_turb_
void get_noms_champs_postraitables_proto(const Nom &, Noms &nom, Option opt) const
void call_compute_diff_turb(const Convection_Diffusion_std &eq, const Viscosite_turbulente_base &visc_turb)
void completer_Op_Dift_VDF_base()
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
Returns the field corresponding to the true diffusivity of the medium used for the time step computat...
class Operateur_base This class is the base of the hierarchy of objects representing an
Champs_compris champs_compris_
virtual void mettre_a_jour(double temps)
DOES NOTHING - to override in derived classes.
virtual Operateur_base & l_op_base()=0
Multiphase thermohydraulics problem of type "3*N equations":
virtual const Equation_base & equation(int) const =0
static double mp_max(double)
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.
_SIZE_ dimension(int d) const
Turbulent viscosity correlations describing the Reynolds stress tensor R_{ij} = - <u'_i u'_j>.