16#include <Perte_Charge_Singuliere_PolyMAC_CDO_Face.h>
17#include <Domaine_PolyMAC_CDO.h>
18#include <Matrice_Morse.h>
19#include <Equation_base.h>
20#include <Probleme_base.h>
40 col_names.add(
"Flow_rate");
41 col_names.add(
"Target_Flow_rate");
51 int taille_bloc = domaine_PolyMAC_CDO.
nb_elem();
59 Cerr <<
"Error when defining the surface plane for the singular porosity :" << finl;
60 Cerr <<
"No mesh faces has been found for the surface plane." << finl;
61 Cerr <<
"Check the coordinate of the surface plane which should match mesh coordinates." << finl;
73 const DoubleTab& vit = la_vitesse->valeurs();
75 for (
int i = 0, f; i <
num_faces.size(); i++)
78 double Ud = vit(f) * p_f(f),
80 resu(f) -= 0.5 * surf * p_f(f) *
K() * Ud * std::fabs(Ud);
101 const DoubleTab& vit = la_vitesse->valeurs();
103 for (
int i = 0, f; i <
num_faces.size(); i++)
106 double Ud = vit(f) * p_f(f),
108 matrice.
coef(f, f) += surf * p_f(f) *
K() * p_f(f) * std::fabs(Ud);
virtual const DoubleVect & face_surfaces() const
int nb_faces() const
renvoie le nombre global de faces.
virtual double face_normales(int face, int comp) 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()
Renvoie le probleme associe a l'equation.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
double coef(int i, int j) const
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 Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
class Perte_Charge_Singuliere_PolyMAC_CDO_Face
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
contribution a la matrice implicite des termes sources par defaut pas de contribution
void mettre_a_jour(double temps) override
DOES NOTHING - to override in derived classes.
DoubleTab & ajouter(DoubleTab &) const override
void remplir_num_faces(Entree &)
DoubleTab & calculer(DoubleTab &) const override
void update_K(const Equation_base &eqn, double deb, DoubleVect &bilan)
double calculate_Q(const Equation_base &eqn, const IntVect &num_faces, const IntVect &sgn) const
virtual void lire_surfaces(Entree &, const Domaine &, const Domaine_dis_base &, IntVect &, IntVect &, int lire_derniere_accolade=1)
Entree & lire_donnees(Entree &)
int direction_perte_charge() const
Renvoie la direction de perte de charge.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
static double mp_max(double)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Classe de base des flux de sortie.
void set_fichier(const Nom &)
virtual void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const
contribution a la matrice implicite des termes sources par defaut pas de contribution
void set_col_names(const Noms &col_names)
void set_description(const Nom &nom)
virtual int has_interface_blocs() const
virtual DoubleTab & ajouter(DoubleTab &) const
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)