16#include <Traitement_particulier_NS_Pression_VDF.h>
17#include <Navier_Stokes_std.h>
18#include <Milieu_base.h>
19#include <Domaine_Cl_VDF.h>
21#include <Domaine_VDF.h>
41 if (mot ==
"Pression_porosite")
return 1 ;
48 if (mot ==
"Pression_porosite")
58 Motcle accouverte =
"{" , accfermee =
"}" ;
65 les_mots[0] =
"Pression_porosite";
69 if (motbidon == accouverte)
73 while(motlu != accfermee)
76 int rang=les_mots.
search(motlu);
81 Cerr <<
" Reading Pression_porosite " << finl;
85 const int nb_elem = domaine_VDF.
nb_elem() ;
87 ch_p.associer_domaine_dis_base(zdis);
88 ch_p.nommer(
"Pression_porosite");
89 ch_p.fixer_nb_comp(1);
90 ch_p.fixer_nb_valeurs_nodales(nb_elem);
91 ch_p.fixer_unite(
"Pa.m3/kg");
99 if (motlu == accfermee)
105 Cerr <<
"Error while reading Traitement_particulier_Brech_VEF" << finl;
106 Cerr <<
"Possible keywords are: calcul_flux or Richardson " << finl;
107 Cerr <<
"You read: " << motlu << finl;
115 if (motlu != accfermee)
117 Cerr <<
"Error while reading Traitement_particulier_NS_Brech_VEF 1: ";
118 Cerr <<
"Expected a } but got " << motlu << finl;
129 if (c_pression == 1 ) post_traitement_particulier_calcul_pression();
132void Traitement_particulier_NS_Pression_VDF::post_traitement_particulier_calcul_pression()
135 const DoubleVect& porosite_face = mon_equation->milieu().porosite_face();
140 Operateur_Div divergence = mon_equation->operateur_divergence();
142 SolveurSys solveur_pression_ = mon_equation->solveur_pression();
144 DoubleTab& pression=mon_equation->pression().valeurs();
145 DoubleTrav inc_pre(pression);
146 DoubleTrav secmem(pression);
147 gradient.calculer(mon_equation->pression().valeurs(),gradient_P->valeurs());
150 DoubleTab& grad=gradient_P->valeurs();
151 mon_equation->solv_masse().appliquer(grad);
152 DoubleTab& grad_temp = grad;
153 for(i=0; i<nb_face; i++)
155 grad_temp(i) /=porosite_face(i);
157 divergence.calculer(grad_temp, secmem);
159 solveur_pression_.
resoudre_systeme(mon_equation->matrice_pression().valeur(),secmem, inc_pre);
160 Cerr <<
"inc_pre " << inc_pre << finl;
class Champ_base This class is the base of the fields hierarchy.
int nb_faces() const
Returns the total number of faces.
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Class defining operators and methods for all reading operation in an input flow (file,...
A character string (Nom) in uppercase.
An array of Motcle objects.
int search(const Motcle &t) const
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Operateur_Div Generic class of the hierarchy of operators computing the divergence.
Classe Operateur_Grad Generic class of the hierarchy of operators computing the gradient.
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
class SolveurSys A SolveurSys represents any class
int resoudre_systeme(const Matrice_Base &matrice, const DoubleVect &secmem, DoubleVect &solution)
Base class for output streams.
Traitement_particulier_NS_Pression_VDF class.
Entree & lire(Entree &) override
Traitement_particulier_NS_Pression_VDF()
void post_traitement_particulier() override
int a_pour_Champ_Fonc(const Motcle &mot, OBS_PTR(Champ_base)&ch_ref) const
int comprend_champ(const Motcle &mot) const
OBS_PTR(Navier_Stokes_std) mon_equation
Champs_compris champs_compris_