16#include <Linear_algebra_tools_impl.h>
17#include <Op_Grad_PolyMAC_HFV_Face.h>
18#include <Masse_ajoutee_base.h>
19#include <Masse_PolyMAC_HFV_Face.h>
20#include <Dirichlet_homogene.h>
21#include <Champ_Face_PolyMAC_HFV.h>
22#include <Schema_Temps_base.h>
23#include <Domaine_Cl_PolyMAC_family.h>
24#include <Champ_Uniforme.h>
25#include <Equation_base.h>
26#include <Pb_Multiphase.h>
27#include <Domaine_PolyMAC_HFV.h>
28#include <Matrix_tools.h>
29#include <Array_tools.h>
56 &vfd = domaine.volumes_entrelaces_dir();
60 for (f = 0; f < domaine.nb_faces(); f++)
61 for (n = 0; n < N; n++)
63 for (fac = 0, i = 0; i < 2 && (e = f_e(f, i)) >= 0; i++) fac += vfd(f, i) * (a_r ? (*a_r)(e, n) : 1);
64 sm(f, n) /= pf(f) * fac;
87 const Conds_lim& cls = le_dom_Cl_PolyMAC_CDO->les_conditions_limites();
90 const DoubleVect& fs = domaine.face_surfaces();
93 for (f = 0; f < domaine.nb_faces_tot(); f++)
94 if (fcl(f, 0) == 2 || fcl(f, 0) == 4)
95 for (n = 0; n < N; n++) x(f, n) = incr ? -vit(f, n) : 0;
96 else if (fcl(f, 0) == 3)
97 for (n = 0; n < N; n++)
98 for (x(f, n) = incr ? -vit(f, n) : 0, d = 0; d < D; d++)
99 x(f, n) += nf(f, d) / fs(f) * ref_cast(
Dirichlet, cls[fcl(f, 1)].valeur()).val_imp(fcl(f, 2), N * d + n);
: class Champ_Face_PolyMAC_HFV
DoubleTab & valeurs() override
Returns the array of field values at the current time.
class Conds_lim This class represents a vector of boundary conditions.
Dirichlet This class is the base class of the hierarchy of Dirichlet-type boundary conditions.
int face_voisins(int num_face, int i) const
Returns the neighbouring element of num_face in direction i.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
void completer() 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 dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
virtual DoubleTab & corriger_solution(DoubleTab &x, const DoubleTab &y, int incr=0) const override
DoubleVect & porosite_face()
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
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":
Carries the terms of the momentum equation for multiphase flow without turbulence modelling.
void associer_masse_proto(const Solveur_Masse_base &, const Domaine_VF &)
void ajouter_blocs_proto(matrices_t matrices, DoubleTab &secmem, double dt, const tabs_t &semi_impl, int resoudre_en_increments) const
void dimensionner_blocs_proto(matrices_t matrices, const tabs_t &semi_impl, const bool allocate, Stencil &) const
Base class for output streams.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")