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
Renvoie le tableau des valeurs du champ au temps courant.
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
classe Dirichlet Cette classe est la classe de base de la hierarchie des conditions aux limites de ty...
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la 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
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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 const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N...
classe QDM_Multiphase Cette classe porte les termes de l'equation de la dynamique
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
Classe de base des flux de sortie.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")