16#include <Masse_VDF_Elem.h>
17#include <Equation_base.h>
18#include <Pb_Multiphase.h>
19#include <Milieu_base.h>
20#include <Domaine_Cl_VDF.h>
21#include <Domaine_VDF.h>
41 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
43 int nb_elem = domaine_VDF.
nb_elem();
49 int nb_comp = sm.
size() / nb_elem;
51 assert((nb_comp * nb_elem == sm.
size()) || (nb_dim == 3));
53 for (
int num_elem = 0; num_elem < nb_elem; num_elem++)
54 sm(num_elem) /= (volumes(num_elem) * porosite_elem(num_elem));
57 for (
int num_elem = 0; num_elem < nb_elem; num_elem++)
58 for (
int k = 0; k < nb_comp; k++)
59 sm(num_elem, k) /= (volumes(num_elem) * porosite_elem(num_elem));
66 for (
int num_elem = 0; num_elem < nb_elem; num_elem++)
67 for (
int k = 0; k < d1; k++)
68 for (
int d = 0; d < d2; d++)
69 sm(num_elem, k, d) /= (volumes(num_elem) * porosite_elem(num_elem));
73 Cerr <<
"Masse_VDF_Elem::appliquer cannot be applied to a DoubleTab with " << sm.
nb_dim() <<
" dimensions" << finl;
double volumes(int i) const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
void preparer_calcul() override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={}) const override
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, double dt, const tabs_t &semi_impl, int resoudre_en_increments) const override
DoubleTab & appliquer_impl(DoubleTab &) const override
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, double dt, const tabs_t &semi_impl, int resoudre_en_increments) const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
DoubleVect & porosite_elem()
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
virtual int debute_par(const char *const n) 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.
Multiphase thermohydraulics problem of type "3*N equations":
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
void preparer_calcul_proto()
void associer_masse_proto(const Solveur_Masse_base &, const Domaine_VF &)
void dimensionner_blocs_proto(matrices_t, const tabs_t &semi_impl={}) const
void ajouter_blocs_proto(matrices_t, DoubleTab &, double, const tabs_t &, int) const
DoubleTab & appliquer_impl_proto(DoubleTab &) const
Base class for output streams.
_SIZE_ dimension(int d) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")