16#include <Traitement_particulier_NS_Pression_VEF.h>
17#include <Assembleur_base.h>
18#include <Milieu_base.h>
19#include <Domaine_Cl_VEF.h>
39 if (mot ==
"Pression_porosite")
return 1 ;
46 if (mot ==
"Pression_porosite")
56 Motcle accouverte =
"{" , accfermee =
"}" ;
63 les_mots[0] =
"Pression_porosite";
67 if (motbidon == accouverte)
71 while(motlu != accfermee)
74 int rang=les_mots.
search(motlu);
79 Cerr <<
" Lire Pression_porosite " << finl;
83 const int nb_elem = domaine_VEF.
nb_elem() ;
85 ch_p.associer_domaine_dis_base(zdis);
86 ch_p.nommer(
"Pression_porosite");
87 ch_p.fixer_nb_comp(1);
88 ch_p.fixer_nb_valeurs_nodales(nb_elem);
89 ch_p.fixer_unite(
"Pa.m3/kg");
97 if (motlu == accfermee)
103 Cerr <<
"Erreur dans la lecture de Traitement_particulier_Brech_VEF" << finl;
104 Cerr <<
"Les mots cles possibles sont : calcul_flux ou Richardson " << finl;
105 Cerr <<
"Vous avez lu :" << motlu << finl;
113 if (motlu != accfermee)
115 Cerr <<
"Erreur dans la lecture de Traitement_particulier_NS_Brech_VEF 1 ";
116 Cerr <<
"On attendait une } et pas " << motlu << finl;
128 if (c_pression == 1 ) post_traitement_particulier_calcul_pression() ;
132void Traitement_particulier_NS_Pression_VEF::post_traitement_particulier_calcul_pression()
135 const DoubleVect& porosite_face = mon_equation->milieu().porosite_face();
138 Operateur_Div divergence = mon_equation->operateur_divergence();
140 SolveurSys solveur_pression_ = mon_equation->solveur_pression();
142 DoubleTab& pression=mon_equation->pression().valeurs();
143 DoubleTab& vitesse=mon_equation->vitesse().valeurs();
144 DoubleTab gradP(vitesse);
145 DoubleTab inc_pre(pression);
146 DoubleTab secmem(pression);
147 DoubleTab grad_temp(vitesse);
154 gradient.calculer(mon_equation->pression().valeurs(),gradP);
157 mon_equation->solv_masse().appliquer(gradP);
159 for(i=0; i<nb_face; i++)
162 grad_temp(i,comp) = gradP(i,comp)/porosite_face(i);
166 divergence.calculer(grad_temp, secmem);
170 mon_equation->assembleur_pression()->modifier_secmem(secmem);
173 solveur_pression_.
resoudre_systeme(mon_equation->matrice_pression().valeur(),secmem, inc_pre);
174 DoubleVect& la_pression_porosite =
ch_p.valeurs();
175 la_pression_porosite = pression;
178 la_pression_porosite += inc_pre;
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_VEF Cette classe permet de faire les traitements particulie...
Entree & lire(Entree &) override
Traitement_particulier_NS_Pression_VEF()
void post_traitement_particulier() override
int comprend_champ(const Motcle &mot) const
int a_pour_Champ_Fonc(const Motcle &mot, OBS_PTR(Champ_base)&ch_ref) const
OBS_PTR(Navier_Stokes_std) mon_equation
Champs_compris champs_compris_