TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Champ_Generique_Extraction.cpp
1/****************************************************************************
2* Copyright (c) 2026, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#include <Champ_Generique_Interpolation.h>
17#include <Champ_Generique_Extraction.h>
18#include <Champ_Generique_refChamp.h>
19#include <Champ_front_uniforme.h>
20#include <Domaine_Cl_dis_base.h>
21#include <Discretisation_base.h>
22#include <Dirichlet_homogene.h>
23#include <Domaine_dis_cache.h>
24#include <Equation_base.h>
25#include <NettoieNoeuds.h>
26#include <Postraitement.h>
27#include <Synonyme_info.h>
28#include <TRUST_Deriv.h>
29#include <Domaine_VF.h>
30#include <Cond_lim.h>
31#include <Domaine.h>
32#include <Param.h>
33
34Implemente_instanciable_sans_constructeur(Champ_Generique_Extraction,"Extraction",Champ_Gen_de_Champs_Gen);
35// XD extraction champ_post_de_champs_post extraction INHERITS_BRACE To create a surface field (values at the boundary)
36// XD_CONT of a volume field
37
38Add_synonym(Champ_Generique_Extraction,"Champ_Post_Extraction");
39
45
47{
49 // Verifications:
50 if (get_nb_sources() != 1)
51 {
52 Cerr << "Error in Champ_Generique_Extraction::readOn\n"
53 << " You must specify exactly 1 \"Source\"." << finl;
54 }
55 return is;
56}
57
59{
60 exit();
61 return os;
62}
63
64// domaine : lecture du nom du domaine d extraction pour initialiser la reference domaine_
65// nom_frontiere : lecture du nom de la frontiere sur laquelle on veut faire l extraction
66// methode : specification de la methode choisie pour extraire les valeurs
67// (optionnel : trace par defaut ou champ_frontiere)
69{
71 param.ajouter("domaine",&dom_extrac_,Param::REQUIRED); // XD attr domaine ref_domaine domaine REQ name of the volume
72 // XD_CONT field
73 param.ajouter("nom_frontiere",&nom_fr_,Param::REQUIRED); // XD attr nom_frontiere chaine nom_frontiere REQ boundary
74 // XD_CONT name where the values of the volume field will be picked
75 param.ajouter("methode",&methode_); // XD attr methode chaine(into=["trace","champ_frontiere"]) methode OPT name of the extraction method (trace by_default or champ_frontiere)
76}
77
78//Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression)
79//pour lancer la discretisation de l espace de stockage rendu par
80//la methode get_champ() du Champ_Generique_base qui a lance l appel de cette methode
82{
83 Motcle directive;
84 directive = "champ_elem";
85 return directive;
86}
87
89{
90 OWN_PTR(Champ_base) source_espace_stockage_tmp;
91 const Champ_base& source = get_source(0).get_champ_without_evaluation(source_espace_stockage_tmp);
92 Nature_du_champ nature_source = source.nature_du_champ();
93 int nb_comp = source.nb_comp();
94
96 espace_stockage = creer_espace_stockage(nature_source,nb_comp,es_tmp);
97 return espace_stockage;
98}
99/*! @brief Extraction des valeurs d un champ (trace ou champ frontiere) sur un bord du domaine
100 *
101 */
103{
104
105 OWN_PTR(Champ_base) source_espace_stockage;
106 const Champ_Generique_base& source = get_source(0);
107 const Champ_base& source_stockage = source.get_champ(source_espace_stockage);
108
109 const DoubleTab& source_valeurs = source_stockage.valeurs();
110 const Domaine_dis_base& domaine_dis_source = source.get_ref_domaine_dis_base();
111 const Nature_du_champ& nature_source = source_stockage.nature_du_champ();
112
113 //Le test suivant n est pas dans completer() car utilise equation() : la reference doit etre initialisee
114 if (methode_=="champ_frontiere")
115 {
116 int num_bord = domaine_dis_source.rang_frontiere(nom_fr_);
117 const Champ_Inc_base& source_inconnue = ref_cast(Champ_Inc_base,source_stockage);
118 const Cond_lim& cl = source_inconnue.equation().domaine_Cl_dis().les_conditions_limites(num_bord);
119 if (sub_type(Dirichlet_homogene,cl.valeur()))
120 {
121 Cerr<<"A boundary condition of type Dirichlet homogeneous does not use field boundary"<<finl;
122 Cerr<<"The extraction of field "<<source_stockage.le_nom()<<" with the option champ_frontiere"<<finl;
123 Cerr<<"is therefore not possible for this type of boundary condition"<<finl;
124 Cerr<<"You can possibly remove the option champ_frontiere for postprocess the trace of the field"<<finl;
125 exit();
126 }
127 }
128
129
130 //Probleme pour discretisation du domaine d extraction (dimension)
131 ////const Domaine_dis_base& domaine_dis = get_ref_domaine_dis_base();
132
133 int nb_comp_source = source_stockage.nb_comp();
134 double temps = source.get_time();
135
136 Nom type_espace_stockage, disc;
137 int nb_comp = 0;
138 int nb_ddl = 0;
139
140 if (source.get_discretisation().is_vdf())
141 disc = "VDF";
142 else if (source.get_discretisation().is_vef())
143 disc = "VEF";
144 else if (source.get_discretisation().is_ef())
145 disc = "EF";
146 else
147 {
148 Cerr<<"Champ_Generique_Extraction::get_champ()"<<finl;
149 Cerr<<"We do not recognize the type of area discretized"<<domaine_dis_source.que_suis_je()<<finl;
150 exit();
151 }
152
153 type_espace_stockage = "Champ_Fonc_P0_";
154 type_espace_stockage += disc;
155
156 if (source_stockage.que_suis_je()=="Champ_Face")
158 else
159 nb_comp = nb_comp_source;
160
161 //La trace rend systematiquement un tableau de valeurs aux faces de depart
162 //et un champ frontiere discretise est dimensionne par rapport au nombre de faces
163 //de la frontiere : dans les deux cas nb_ddl = nb_faces
164 const Frontiere_dis_base& fr_dis = domaine_dis_source.frontiere_dis(nom_fr_);
165 const Frontiere& la_frontiere = fr_dis.frontiere();
166 nb_ddl = la_frontiere.nb_faces();
167
168 //le Domaine discretise a associer n est actuellement pas disponible
169 //On associe pas de domaine_discretisee et on ne fixe pas nb_valeurs_nodales
170 espace_stockage.typer(type_espace_stockage);
171 ////espace_stockage.associer_domaine_dis_base(domaine_dis);
172 espace_stockage->fixer_nb_comp(nb_comp);
173 ////espace_stockage.fixer_nb_valeurs_nodales(nb_ddl);
174 espace_stockage->fixer_nature_du_champ(nature_source);
175
176 DoubleTab& espace_valeurs = espace_stockage->valeurs();
177 const int N = source_valeurs.line_size();
178 espace_valeurs.resize(nb_ddl,nb_comp);
179
180 if (methode_=="trace") //On prend la trace du champ sur un bord
181 {
182 source_stockage.trace(fr_dis,espace_valeurs,temps,0);
183 }
184 else if (methode_=="champ_frontiere") //On recupere le champ frontiere
185 {
186 int num_bord = domaine_dis_source.rang_frontiere(nom_fr_);
187 const Champ_Inc_base& source_inconnue = ref_cast(Champ_Inc_base,source_stockage);
188 const Champ_front_base& champ_fr = source_inconnue.equation().domaine_Cl_dis().les_conditions_limites(num_bord)->champ_front();
189
190 if (sub_type(Champ_front_uniforme,champ_fr))
191 {
192 for (int j = 0; j < N; j++)
193 for (int i=0; i<nb_ddl; i++)
194 espace_valeurs(i,j) = champ_fr.valeurs()(0,j);
195 }
196 else
197 espace_valeurs = champ_fr.valeurs();
198 }
199
200 //L espace de stockage n a pas actuellement d espace virtuel
201 ////espace_valeurs.echange_espace_virtuel();
202
203 return espace_stockage;
204}
205
207{
208
209 Motcles motcles(1);
210 motcles[0] = "composantes";
211 int rang = motcles.search(query);
212 switch(rang)
213 {
214
215 case 0:
216 {
217 Noms source_compos = get_source(0).get_property("composantes");
218 int nb_comp = source_compos.size();
219 Noms compo(nb_comp);
220
221 for (int i=0; i<nb_comp; i++)
222 {
223 Nom nume(i);
224 compo[i] = nom_post_+nume;
225 }
226
227 return compo;
228 }
229 }
230
232
233}
234//Nomme le champ en tant que source par defaut
235//"Extraction_" + nom_champ_source
237{
238 if (nom_post_=="??")
239 {
240 Nom nom_post_source, nom_champ_source;
241 const Noms nom = get_source(0).get_property("nom");
242 nom_champ_source = nom[0];
243 nom_post_source = "Extraction_";
244 nom_post_source += nom_champ_source;
245 nommer(nom_post_source);
246 }
247}
248
249// La methode completer complete le domaine d extraction declare dans le jeu de donnes
250// auquel la classe fait reference:
251// - ajout d un domaine (de type Pave)
252// - on determine les coordonnees des sommets contenus dans le plan d extraction
253// Actuellement on ne procede pas a la discretisation du domaine d extraction (pb dimension)
255{
257 const Objet_U& ob = interprete().objet(dom_extrac_);
258 if (!sub_type(Domaine, ob))
259 {
260 Cerr << "Error in Champ_Generique_Extraction:get_champ"<<finl;
261 Cerr<<"We do not retrieve domain"<<finl;
262 exit();
263 }
264 domaine_ = ref_cast(Domaine,ob);
265 const Champ_Generique_base& source = get_source(0);
266
267 if (methode_=="champ_frontiere")
268 {
269 if (sub_type(Champ_Generique_refChamp,source))
270 {
271 OWN_PTR(Champ_base) source_espace_stockage;
272 const Champ_base& source_stockage = source.get_champ(source_espace_stockage);
273 if (!sub_type(Champ_Inc_base,source_stockage))
274 {
275 Cerr<<"The method "<<methode_<<" can be applied to extract only unknown fields of the problem."<<finl;
276 Cerr<<"The field to extract "<<source_stockage.le_nom()<<" do not satisfied this requirement."<<finl;
277 exit();
278 }
279 }
280 else
281 {
282 const Noms nom_champ = get_property("nom");
283 Cerr<<"The method "<<methode_<<" can be applied to extract only unknown fields of the problem."<<finl;
284 Cerr<<"The source of the post-processing field "<<nom_champ[0]<<" do not encapsulate an unknown field."<<finl;
285 exit();
286 }
287
288 }
289
290 const Domaine& dom = source.get_ref_domain();
291 if (dom==domaine_.valeur())
292 {
293 Cerr<<"Error in Champ_Generique_Extraction:get_champ"<<finl;
294 Cerr<<"The domain is the same as the source's domain."<<finl;
295 exit();
296 }
297 const Domaine_dis_base& domaine_dis_source = source.get_ref_domaine_dis_base();
298 const Domaine_VF& zvf_source = ref_cast(Domaine_VF,domaine_dis_source);
299 // Pour eviter un crash:
300 if (zvf_source.nb_frontiere_dis()==0)
301 {
302 Cerr << "You can't extract a field onto a boundary of the domain " << dom.le_nom() << finl;
303 Cerr << "because there is NO boundaries defined on it." << finl;
304 if (sub_type(Champ_Generique_Interpolation,source))
305 {
306 Cerr << "It is not possible to extract on a boundary a field interpolated other than the calculation domain." << finl;
307 Cerr << "So, change the domain in Interpolation definition into domain " << ref_cast(Champ_Generique_Interpolation,source).get_source(0).get_ref_domain().le_nom() << finl;
308 }
309 exit();
310 }
311 const Frontiere_dis_base& fr_dis = domaine_dis_source.frontiere_dis(nom_fr_);
312 const Frontiere& la_frontiere = fr_dis.frontiere();
313 const Type_Face type_face_source = la_frontiere.faces().type_face();
314 int nb_faces = la_frontiere.nb_faces();
315
316 const DoubleTab& sommets_source = dom.les_sommets();
317 int num_premiere_face = la_frontiere.num_premiere_face();
318 Entity index1,index2;
319 index1 = Entity::FACE;
320 index2 = Entity::NODE;
321 const IntTab& face_sommets = source.get_ref_connectivity(index1,index2);
322 int nb_som_faces = zvf_source.nb_som_face();
323
324 Nom type_elem;
325 if (type_face_source==Type_Face::segment_2D || type_face_source==Type_Face::segment_2D_axi)
326 type_elem = "Segment"; // Pour MC2
327 else if (type_face_source==Type_Face::quadrilatere_2D_axi)
328 type_elem = "Segment"; // Pour MC2
329 else if (type_face_source==Type_Face::quadrangle_3D)
330 type_elem = "Quadrangle";
331 else if (type_face_source==Type_Face::triangle_3D)
332 type_elem = "Triangle";
333 else if (type_face_source==Type_Face::point_1D)
334 type_elem = "Point";
335 //Cas suivant possible en parallele
336 else if ((type_face_source==Type_Face::vide_0D) && (nb_faces==0))
337 {
338 if (source.get_discretisation().is_vdf())
339 type_elem = "Rectangle";
340 else if (source.get_discretisation().is_vef())
341 type_elem = "Triangle";
342 else
343 {
344 Cerr<<"The type of domaine discretized"<<zvf_source.que_suis_je()<<" is not recognized"<<finl;
345 exit();
346 }
347 }
348 else
349 {
350 Cerr<<"The type of faces of the boundary name "<<nom_fr_<<" is neither type Type_Face::quadrangle_3D nor Type_Face::triangle_3D"<<finl;
351 Cerr<<"We do not realize the extraction"<<finl;
352 exit();
353 }
354
355 // Verification que le domaine d'extraction utilise est correct:
356 if (domaine_->nb_som()!=0)
357 {
358 if (domaine_->les_elems().dimension(0) != nb_faces ||
359 domaine_->les_elems().dimension(1) != nb_som_faces)
360 {
361 Cerr << "Error when extracting the field " << nom_post_ << ": The " << domaine_->le_nom() << " domain can't be used cause already built with different support !" << finl;
362 Cerr << "You could create an empty domain with no operations on it before extracting this field." << finl;
364 }
365 }
366 domaine_->typer(type_elem);
367
368 IntTab& mes_elems_domaine = domaine_->les_elems();
369 mes_elems_domaine.reset();
370 mes_elems_domaine.resize(nb_faces, nb_som_faces);
371
372 // Destruction du descripteur parallele, et on reconstruit...
373 domaine_->les_sommets().reset();
374 domaine_->les_sommets() = sommets_source;
375 for (int face = 0; face < nb_faces; face++)
376 for (int s = 0; s < nb_som_faces; s++)
377 mes_elems_domaine(face, s) = face_sommets(num_premiere_face + face, s);
378 NettoieNoeuds::nettoie(domaine_);
379
380 // Discretisation du domaine d'extraction
382}
383
385{
386 if (domaine_)
387 return domaine_.valeur();
388 else
389 {
390 Cerr<<"There is no extraction domain created to this Champ_Generique_Extraction"<<finl;
391 exit();
392 }
393 //Pour compilation
394 return get_ref_domain();
395}
396
398{
399 const Domaine& dom = get_ref_domain();
400 domain = dom;
401}
402
404{
405 if (domaine_)
406 return le_dom_dis.valeur();
407 else
408 {
409 Cerr<<"There is no domain associated to this Champ_Generique_Extraction"<<finl;
410 exit();
411 }
412 //Pour compilation
414}
415
417{
418 Entity loc;
419 loc = Entity::ELEMENT;
420 return loc;
421}
422
423
424//Discretisation du domaine d extraction
425//Cette discretisation est necessaire pour associer un domaine discretise
426//a l espace de stockage dans la methode get_champ()
428{
429 if (domaine_)
430 {
431 const Probleme_base& Pb = get_ref_pb_base();
432 const Discretisation_base& discr = Pb.discretisation();
433 Nom type_discr = discr.que_suis_je();
434 if (type_discr == "VEFPreP1B") type_discr = "VEF";
435 Nom type = "NO_FACE_Domaine_";
436 type += type_discr;
437 le_dom_dis = Domaine_dis_cache::Build_or_get(type, domaine_.valeur());
438 }
439}
440
441
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
Classe de base des champs generiques ayant comme source d'autres champs generiques L'utilisation des ...
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
virtual OWN_PTR(Champ_Fonc_base) &creer_espace_stockage(const Nature_du_champ &nature
void completer(const Postraitement_base &post) override
const Probleme_base & get_ref_pb_base() const override
Renvoie le probleme qui porte le champ cible.
virtual const Champ_Generique_base & get_source(int i) const
void set_param(Param &param) const override
Un champ generique qui effctue l extraction d un champ sur une frontiere.
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
void completer(const Postraitement_base &post) override
const Champ_base & get_champ(OWN_PTR(Champ_base)&espace_stockage) const override
Extraction des valeurs d un champ (trace ou champ frontiere) sur un bord du domaine.
const Domaine & get_ref_domain() const override
Renvoie une ref au domaine sur lequel sera evalue l espace de stockage.
const Domaine_dis_base & get_ref_domaine_dis_base() const override
Renvoie une ref au domaine_discretisee du domaine sur lequel sera evalue l espace de stockage.
Entity get_localisation(const int index=-1) const override
Renvoie le type des entites geometriques sur auxquelles les valeurs discretes sont attachees (NODE po...
void set_param(Param &param) const override
const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const override
void get_copy_domain(Domaine &) const override
Cree une copie du domaine sur lequel sera evalue l espace de stockage.
const Motcle get_directive_pour_discr() const override
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
Un champ generique qui est construit comme une interpolation d'un autre champ generique (interpolatio...
class Champ_Generique_base
virtual const Noms get_property(const Motcle &query) const
Renvoie la propriete demandee.
virtual const Domaine_dis_base & get_ref_domaine_dis_base() const
Renvoie une ref au domaine_discretisee du domaine sur lequel sera evalue l espace de stockage.
virtual const IntTab & get_ref_connectivity(Entity index1, Entity index2) const
Renvoie le tableau de connectivite entre l'entite geometrique index1 et l'entite index2.
virtual const Champ_base & get_champ(OWN_PTR(Champ_base) &espace_stockage) const =0
virtual double get_time() const
Renvoie le temps du Champ_Generique_base.
virtual const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const =0
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
virtual const Domaine & get_ref_domain() const
Renvoie une ref au domaine sur lequel sera evalue l espace de stockage.
virtual const Discretisation_base & get_discretisation() const
Renvoie la discretisation associee au probleme.
Classe de champ particuliere qui encapsule une reference a un champ volumique de TRUST de type Champ_...
Classe Champ_Inc_base.
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
virtual DoubleTab & trace(const Frontiere_dis_base &, DoubleTab &, double, int distant) const
Calcule la trace d'un champ sur une frontiere au temps tps.
classe Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
virtual DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ.
classe Champ_front_uniforme Classe derivee de Champ_front_base qui represente les
classe Cond_lim Classe generique servant a representer n'importe quelle classe
Definition Cond_lim.h:31
Classe Dirichlet_homogene Cette classe est la classe de base de la hierarchie des conditions aux limi...
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
virtual bool is_ef() const
virtual bool is_vdf() const
virtual bool is_vef() const
DoubleTab_t & les_sommets()
Definition Domaine.h:113
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
class Domaine_VF
Definition Domaine_VF.h:44
int nb_frontiere_dis() const
Definition Domaine_VF.h:111
int nb_som_face() const
renvoie le nombre de sommets par face.
Definition Domaine_VF.h:494
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Frontiere_dis_base & frontiere_dis(const Nom &) const
Renvoie la frontiere de Nom nom.
int rang_frontiere(const Nom &)
static Domaine_dis_base & Build_or_get(const Nom &type, const Domaine &dom, const Discretisation_base *disc=nullptr)
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Type_Face type_face() const
Definition Faces.h:65
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
const Nom & le_nom() const override
Renvoie le nom du champ.
virtual Nature_du_champ fixer_nature_du_champ(Nature_du_champ nat)
Fixer la nature d'un champ: scalaire, multiscalaire, vectoriel.
virtual int nb_comp() const
Definition Field_base.h:56
virtual Nature_du_champ nature_du_champ() const
Definition Field_base.h:77
int_t num_premiere_face() const
Definition Frontiere.h:67
int_t nb_faces() const
Renvoie le nombre de faces de la frontiere.
Definition Frontiere.h:59
const Faces_t & faces() const
Definition Frontiere.h:54
classe Frontiere_dis_base Classe representant une frontiere discretisee.
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
static Objet_U & objet(const Nom &)
Voir Interprete_bloc::objet_global() BM: la classe Interprete n'est pas le meilleur endroit pour cett...
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Definition MorEqn.h:62
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
Un tableau d'objets de la classe Motcle.
Definition Motcle.h:63
int search(const Motcle &t) const
Definition Motcle.cpp:321
static void nettoie(Domaine_t &)
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
const Interprete & interprete() const
Definition Objet_U.cpp:212
static int dimension
Definition Objet_U.h:99
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
Definition Objet_U.cpp:104
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
Definition Objet_U.cpp:293
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Definition Objet_U.cpp:282
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Definition Param.cpp:364
@ REQUIRED
Definition Param.h:115
Classe de base pour l'ensemble des postraitements.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
const Discretisation_base & discretisation() const
Renvoie la discretisation associee au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
Classe de base des flux de sortie.
Definition Sortie.h:52
void reset() override
Definition TRUSTTab.tpp:362
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Definition TRUSTTab.tpp:469
int line_size() const
Definition TRUSTVect.tpp:67