16#include <Sortie_libre_pression_moyenne_imposee.h>
17#include <Navier_Stokes_std.h>
18#include <Champ_Uniforme.h>
19#include <Milieu_base.h>
21#include <Domaine_VF.h>
29Sortie_libre_pression_moyenne_imposee::Sortie_libre_pression_moyenne_imposee() : d_rho(-123.) { }
38 le_champ_ext.typer(
"Champ_front_uniforme");
39 le_champ_ext->valeurs().resize(1,
dimension);
40 le_champ_front.typer(
"Champ_front_fonc");
41 le_champ_front->fixer_nb_comp(1);
59 le_champ_front->valeurs().resize(
nb_faces_, 1);
60 DoubleTab& Pimp = le_champ_front->valeurs();
81 const DoubleTab& tab_P = ref_cast(
Navier_Stokes_std,mon_dom_cl_dis->equation()).pression().valeurs();
83 int face, elem, facegl;
84 DoubleTab& Pimp = le_champ_front->valeurs();
86 double Ptot = 0, s, S = 0;
90 facegl = face +
ndeb_;
96 Ptot += s * tab_P(elem);
102 Cerr <<
"Sortie_libre_pression_moyenne_imposee pmoy= " << Ptot << finl;
106 facegl = face +
ndeb_;
110 Pimp(face, 0) = tab_P(elem) + (
Pext_ - Ptot);
130 assert(!est_egal(
d_rho, -123.));
136 if (le_champ_front->valeurs().size() == 1)
137 return le_champ_front->valeurs()(0, 0) / rho_;
138 else if (le_champ_front->valeurs().dimension(1) == 1)
139 return le_champ_front->valeurs()(i, 0) / rho_;
141 Cerr <<
"Neumann::flux_impose erreur" << finl;
160 assert(!est_egal(
d_rho, -123.));
166 if (le_champ_front->valeurs().dimension(0) == 1)
167 return le_champ_front->valeurs()(0, j) / rho_;
169 return le_champ_front->valeurs()(i, j) / rho_;
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de la condition aux limites.
std::vector< Motcle > app_domains
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
virtual const DoubleVect & face_surfaces() const
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
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
virtual const Equation_base & equation(const std::string &nom_inc) const
virtual const Champ_base & masse_volumique() const
Renvoie la masse volumique du milieu.
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
classe Neumann_sortie_libre Cette classe represente une frontiere ouverte sans vitesse imposee
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.
static void mp_sum_for_each(T &arg1, T &arg2)
C++14 compatible mp_sum_for_each: combine multiple mp_sum calls into one collective operation Usage: ...
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
classe Sortie_libre_pression_moyenne_imposee Cette classe derive de Neumann_sortie_libre
void mettre_a_jour(double) override
Met a jour les conditions aux limites.
double flux_impose(int i) const override
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
void completer() override
NE FAIT RIEN A surcharger dans les classes derivees.
Classe de base des flux de sortie.