16#include <Sortie_libre_Gradient_Pression_impose.h>
17#include <Domaine_Cl_dis_base.h>
18#include <Navier_Stokes_std.h>
19#include <Champ_Uniforme.h>
20#include <Milieu_base.h>
21#include <Champ_P0_VDF.h>
22#include <Domaine_VDF.h>
38 le_champ_ext.typer(
"Champ_front_uniforme");
39 le_champ_ext->valeurs().resize(1,
dimension);
45 Cerr <<
"Sortie_libre_Gradient_Pression_impose::completer()" << finl;
53 const DoubleVect& face_surfaces = domaine_vdf.
face_surfaces();
55 le_dom_VDF = domaine_vdf;
56 pression_interne = pression;
59 int nb_faces_loc = le_bord.
nb_faces();
63 coeff.resize(nb_faces_loc);
66 for (face = ndeb; face < ndeb + nb_faces_loc; face++)
67 if (face_voisins(face, 0) != -1)
68 coeff[face - ndeb] = volumes_entrelaces[face] / face_surfaces[face];
70 coeff[face - ndeb] = -volumes_entrelaces[face] / face_surfaces[face];
72 Cerr <<
"Sortie_libre_Gradient_Pression_impose::completer() ok" << finl;
82 int nb_faces_loc = le_bord.
nb_faces();
84 assert(pression_interne);
85 for (
int face = ndeb; face < ndeb + nb_faces_loc; face++)
91 if (le_champ_front->valeurs().size() == 1)
93 else if (le_champ_front->valeurs().line_size() == 1)
96 Cerr <<
"Sortie_libre_Gradient_Pression_impose::flux_impose erreur" << finl;
105 Cerr <<
"Sortie_libre_Gradient_Pression_impose::flux_impose(int , int )" << finl;
106 Cerr <<
"On ne sait imposer que la composante normale du gradient" << finl;
117 double d_rho = rho.
valeurs()(0, 0);
118 if (le_champ_front->valeurs().size() == 1)
119 return le_champ_front->valeurs()(0, 0) / d_rho;
120 else if (le_champ_front->valeurs().line_size() == 1)
121 return le_champ_front->valeurs()(face, 0) / d_rho;
123 Cerr <<
"Sortie_libre_Gradient_Pression_impose::grad_P_imp() erreur" << finl;
129 int elem = le_dom_VDF->face_voisins(face, 0);
131 elem = le_dom_VDF->face_voisins(face, 1);
132 double d_rho = tab_rho(elem);
133 if (le_champ_front->valeurs().size() == 1)
134 return le_champ_front->valeurs()(0, 0) / d_rho;
135 else if (le_champ_front->valeurs().line_size() == 1)
136 return le_champ_front->valeurs()(face, 0) / d_rho;
138 Cerr <<
"Sortie_libre_Gradient_Pression_impose::grad_P_imp() erreur" << finl;
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Champ_P0_VDF Classe qui represente un champ discret P0 par element associe a un domaine discre...
virtual DoubleTab & valeurs()=0
std::vector< Nom > supp_discs
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de la condition aux limites.
Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limites discretisee dont l'objet fait partie.
std::vector< Motcle > app_domains
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
virtual const DoubleVect & face_surfaces() const
DoubleVect & volumes_entrelaces()
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,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
int num_premiere_face() const
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.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
Champ_Inc_base & pression()
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 exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Sortie_libre_Gradient_Pression_impose.
void completer() override
NE FAIT RIEN A surcharger dans les classes derivees.
double flux_impose(int) const override
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
DoubleVect trace_pression_int
void mettre_a_jour(double) override
Effectue une mise a jour en temps de la condition aux limites.
virtual double grad_P_imp(int) const
Classe de base des flux de sortie.