16#include <Sortie_libre_Pression_imposee_Orlansky.h>
17#include <Domaine_Cl_dis_base.h>
18#include <Navier_Stokes_std.h>
19#include <Champ_Face_VDF.h>
20#include <Champ_P0_VDF.h>
21#include <Domaine_VDF.h>
38 le_champ_ext.typer(
"Champ_front_uniforme");
39 le_champ_ext->valeurs().resize(1,
dimension);
40 le_champ_front.typer(
"Champ_front_uniforme");
41 le_champ_front->valeurs().resize(1,
dimension);
42 le_champ_front->fixer_nb_comp(1);
48 Cerr <<
"Sortie_libre_Pression_imposee_Orlansky::completer()" << finl;
59 le_dom_VDF = domaine_vdf;
60 pression_interne = pression;
61 vitesse_interne = vitesse;
64 int nb_faces_loc = le_bord.
nb_faces();
67 le_champ_front->valeurs().resize(nb_faces_loc);
68 le_champ_ext->valeurs().resize(nb_faces_loc,
dimension);
69 VPhiP.resize(nb_faces_loc);
87 Cerr <<
"Sortie_libre_Pression_imposee_Orlansky::completer() ok" << finl;
97 assert(pression_interne);
100 int nb_faces_loc = le_bord.
nb_faces();
102 DoubleTab& pre_bord = le_champ_front->valeurs();
103 DoubleTab& vit_ext = le_champ_ext->valeurs();
105 const DoubleTab& pre = pression_interne->valeurs();
106 const DoubleTab& vitesse = vitesse_interne->valeurs();
110 for (face = ndeb; face < ndeb + nb_faces_loc; face++)
125 int face_moins_un = zvdf.
elem_faces(elem_un, ori);
126 if (face_moins_un == face)
131 if (elem_deux == elem_un)
139 if (pre_m_un_t_m_deux == pre_m_un)
142 VPhiP(i) = (pre_m_un_t_m_deux - pre_m_un) / (pre_m_un + pre_m_un_t_m_deux - 2 * pre_m_deux_t_m_un);
143 if (
VPhiP(i) <= 1.e-24)
147 assert(
VPhiP(i) < 1.e12);
160 for (compo = 0; compo <
dimension; compo++)
161 for (face = ndeb; face < ndeb + nb_faces_loc; face++)
177 int face_moins_un = zvdf.
elem_faces(elem_un, ori);
178 if (face_moins_un == face)
185 if (elem_deux == elem_un)
194 if (pre_m_un_t_m_deux == pre_m_un)
197 VPhiV(i, compo) = (pre_m_un_t_m_deux - pre_m_un) / (pre_m_un + pre_m_un_t_m_deux - 2 * pre_m_deux_t_m_un);
198 if (
VPhiV(i, compo) <= 1.e-24)
199 VPhiV(i, compo) = 0.0;
200 if (
VPhiV(i, compo) > 1.)
201 VPhiV(i, compo) = 1.0;
202 assert(
VPhiV(i, compo) < 1.e12);
213 return le_champ_front->valeurs()(face);
220 Cerr <<
"Sortie_libre_Pression_imposee_Orlansky::flux_impose(int , int ). La pression est un scalaire." << finl;
class Champ_Face_VDF Cette classe sert a representer un champ vectoriel dont on ne calcule
classe Champ_P0_VDF Classe qui represente un champ discret P0 par element associe a un domaine discre...
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.
static void verifier_bord(const char *const msg, const DoubleVect &arr, int num_deb)
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
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....
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
int num_premiere_face() const
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
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
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_Pression_imposee_Orlansky.
DoubleVect pression_temps_moins_deux
DoubleTab vitesse_moins_un_temps_moins_un
void completer() override
NE FAIT RIEN A surcharger dans les classes derivees.
DoubleTab vitesse_moins_deux
DoubleVect pression_moins_un
DoubleTab vitesse_moins_un
DoubleVect pression_moins_un_temps_moins_un
DoubleVect pression_moins_deux_temps_moins_un
DoubleTab vitesse_temps_moins_un
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...
DoubleTab vitesse_moins_un_temps_moins_deux
DoubleTab vitesse_moins_deux_temps_moins_un
DoubleVect pression_temps_moins_un
DoubleTab vitesse_temps_moins_deux
DoubleVect pression_moins_un_temps_moins_deux
void mettre_a_jour(double) override
Effectue une mise a jour en temps de la condition aux limites.
DoubleVect pression_moins_deux
Classe de base des flux de sortie.