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 <<
" Lire 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 <<
"Erreur dans la lecture de Traitement_particulier_Brech_VEF" << finl;
106 Cerr <<
"Les mots cles possibles sont : calcul_flux ou Richardson " << finl;
107 Cerr <<
"Vous avez lu :" << motlu << finl;
115 if (motlu != accfermee)
117 Cerr <<
"Erreur dans la lecture de Traitement_particulier_NS_Brech_VEF 1 ";
118 Cerr <<
"On attendait une } et pas " << 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;
classe Champ_base Cette classe est la base de la hierarchie des champs.
int nb_faces() const
renvoie le nombre global de faces.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
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.
classe Operateur_Div Classe generique de la hierarchie des operateurs calculant la divergence
Classe Operateur_Grad Classe generique de la hierarchie des operateurs calculant le gradient.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
class SolveurSys Un SolveurSys represente n'importe qu'elle classe
int resoudre_systeme(const Matrice_Base &matrice, const DoubleVect &secmem, DoubleVect &solution)
Classe de base des flux de sortie.
classe Traitement_particulier_NS_Pression_VDF Cette classe permet de faire les traitements particulie...
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_