16#include <Perte_Charge_Singuliere_VEF_Face.h>
17#include <Domaine_VEF.h>
18#include <Equation_base.h>
19#include <Probleme_base.h>
22#include <Matrice_Morse.h>
63 int taille_bloc = domaine_VEF.
nb_elem();
71 Cerr <<
"Faces number found in Perte_Charge_Singuliere_VEF_Face : " << nfac_tot << finl;
75 Cerr <<
"Error when defining the surface plane for the singular porosity :" << finl;
76 Cerr <<
"No mesh faces has been found for the surface plane." << finl;
77 Cerr <<
"Check the coordinate of the surface plane which should match mesh coordinates." << finl;
85 const Domaine_VEF& domaine_VEF = le_dom_VEF.valeur();
88 const DoubleTab& vit = la_vitesse->valeurs();
96 for (
int i=0; i<nb_faces; i++)
102 Ud = vit(numfa,j)*porosite_surf[numfa];
107 resu(numfa,j) -= 0.5*coefK*Ud*std::fabs(Ud)*area*porosite_surf[numfa];
115 const Domaine_VEF& domaine_VEF = le_dom_VEF.valeur();
117 const DoubleTab& vit = la_vitesse->valeurs();
125 for (
int i=0; i<nb_faces; i++)
132 Ud = porosite_surf[numfa];
133 double Ud2= vit(numfa,j)*porosite_surf[numfa];
139 matrice.
coef(n0,n0)+= 0.5*coefK*Ud*std::fabs(Ud2)*area*porosite_surf[numfa];
virtual const DoubleVect & face_surfaces() const
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.
class Perte_Charge_Singuliere_VEF_Face
void mettre_a_jour(double temps) override
DOES NOTHING - to override in derived classes.
void remplir_num_faces(Entree &)
DoubleTab & ajouter(DoubleTab &) const override
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
contribution a la matrice implicite des termes sources par defaut pas de contribution
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 &)
class Perte_Charge_VEF_Face
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
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 &)
void set_description(const Nom &nom)
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)