TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Domaine.h
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#ifndef Domaine_32_64_included
17#define Domaine_32_64_included
18
19#include <Domaine_base.h>
20
21#include <TRUST_Deriv.h>
22#include <Octree.h>
23#include <Elem_geom.h>
24
25#include <medcoupling++.h>
26
27#ifdef MEDCOUPLING_
28#include <MEDCouplingFieldTemplate.hxx>
29#include <MEDCouplingUMesh.hxx>
30#include <MEDCouplingRemapper.hxx>
31using MEDCoupling::MEDCouplingRemapper;
32using MEDCoupling::MEDCouplingUMesh;
33using MEDCoupling::MCAuto;
34using MEDCoupling::MEDCouplingFieldDouble;
35#ifdef MPI_
36#include <OverlapDEC.hxx>
37using MEDCoupling::OverlapDEC;
38#endif
39#endif
40
41// Forward decl:
43class Conds_lim;
44class Reorder_Mesh;
45
46template <typename _SIZE_> class OctreeRoot_32_64;
47template <typename _SIZE_> class Sous_Domaine_32_64;
48
49/*! @brief classe Domaine_32_64 un Domaine est un maillage compose d'un ensemble d'elements geometriques de meme type.
50 *
51 * Les differents types d'elements sont des objets de classes derivees de Elem_geom_base.
52 * Une domaine est constitue de noeuds, d'elements, de bords, de bords periodiques,
53 * de joints, de raccords et de bords internes.
54 *
55 * This class is templatized on the 32/64 bit configuration.
56 * All the methods/members not sensitive to this are in Domaine_base.
57 *
58 * @sa Domaine, Domaine_64, Sous_Domaine, Frontiere, Elem_geom, Elem_geom_base, Bord, Bord_perio, Joint, Raccord, Bords_Interne
59 */
60template<typename _SIZE_>
62{
63
64 Declare_instanciable_sans_constructeur_32_64( Domaine_32_64 );
65
66public:
67 //
68 // Types
69 //
70 using int_t = _SIZE_;
71 using ArrOfInt_t = ArrOfInt_T<_SIZE_>;
72 using IntVect_t = IntVect_T<_SIZE_>;
73 using IntTab_t = IntTab_T<_SIZE_>;
74 using SmallArrOfTID_t = SmallArrOfTID_T<_SIZE_>;
75 using ArrOfDouble_t= ArrOfDouble_T<_SIZE_>;
76 using DoubleVect_t = DoubleVect_T<_SIZE_>;
77 using DoubleTab_t = DoubleTab_T<_SIZE_>;
78
79 using ArrsOfInt_t = ArrsOfInt_T<_SIZE_>;
80 using DoubleTabs_t = DoubleTabs_T<_SIZE_>;
81
95
96 //
97 // General
98 //
100 Entree& readOn_has_perio(Entree& s, bool& has_perio);
101 inline void typer(const Nom&);
102 inline const OWN_PTR(Elem_geom_base_32_64<_SIZE_>)& type_elem() const { return elem_; }
103 inline OWN_PTR(Elem_geom_base_32_64<_SIZE_>)& type_elem() { return elem_; }
104 inline void reordonner() { elem_->reordonner(); }
105
106
107 //
108 // Nodes
109 //
110 inline double coord(int_t i, int j) const { return sommets_(i,j); }
111 inline double& coord(int_t i, int j) { return sommets_(i,j); }
112 inline const DoubleTab_t& coord_sommets() const { return sommets_; }
113 inline DoubleTab_t& les_sommets() { return sommets_; }
114 inline const DoubleTab_t& les_sommets() const { return sommets_; }
117 DoubleTab getBoundingBox() const;
118 void ajouter(const DoubleTab_t& soms);
119 void ajouter(const DoubleTab_t& soms, IntVect_t& nums);
120 /// Renvoie le nombre de sommets du domaine.
121 int_t nb_som() const { return sommets_.dimension(0); }
122 /// Renvoie le nombre total de sommets du domaine i.e. le nombre de sommets reels et virtuels sur le processeur courant.
123 int_t nb_som_tot() const { return sommets_.dimension_tot(0); }
125
126 //
127 // Elements
128 //
129 inline IntTab_t& les_elems() { return mes_elems_; }
130 inline const IntTab_t& les_elems() const { return mes_elems_; }
131 inline int_t nb_elem() const { return mes_elems_.dimension(0); }
132 inline int_t nb_elem_tot() const { return mes_elems_.dimension_tot(0); }
133 inline int nb_som_elem() const;
134 inline int nb_faces_elem(int=0) const;
135 /// @brief Renvoie le numero (global) du j-ieme sommet du i-ieme element
136 inline int_t sommet_elem(int_t i, int j) const { return mes_elems_(i,j); }
137
138 //
139 // Aretes
140 //
141
142 /// Renvoie le nombre d'aretes reelles.
143 inline int_t nb_aretes() const { return aretes_som_.dimension(0); }
144 /// renvoie le nombre d'aretes total (reelles+virtuelles).
145 inline int_t nb_aretes_tot() const { return aretes_som_.dimension_tot(0); }
146
147 //
148 // Correspondances
149 //
150
151 /// renvoie le numero du jeme sommet de la ieme arete.
152 inline int_t arete_sommets(int_t i, int j) const { return aretes_som_(i, j); }
153 /// renvoie le numero de la jeme arete du ieme element.
154 inline int_t elem_aretes(int_t i, int j) const { return elem_aretes_(i, j); }
155 /// renvoie le tableau de connectivite aretes/sommets.
156 inline const IntTab_t& aretes_som() const { return aretes_som_; }
157 /// renvoie le tableau de connectivite elements/aretes.
158 inline const IntTab_t& elem_aretes() const { return elem_aretes_; }
159 inline IntTab_t& set_aretes_som() { return aretes_som_; }
161
162 //
163 // Faces
164 //
165 inline int_t nb_faces_bord() const { return mes_faces_bord_.nb_faces(); }
166 inline int_t nb_faces_bord(int num_bord) const { return mes_faces_bord_(num_bord).nb_faces(); }
167 inline int_t nb_faces_bord(Type_Face type) const { return mes_faces_bord_.nb_faces(type); }
168 inline int_t nb_faces_joint() const { return mes_faces_joint_.nb_faces(); }
169 inline int_t nb_faces_joint(int num_joint) const { return mes_faces_joint_(num_joint).nb_faces(); }
170 inline int_t nb_faces_joint(Type_Face type) const { return mes_faces_joint_.nb_faces(type); }
171 inline int_t nb_faces_raccord() const { return mes_faces_raccord_.nb_faces(); }
172 inline int_t nb_faces_raccord(int num_rac) const { return mes_faces_raccord_(num_rac)->nb_faces(); }
173 inline int_t nb_faces_raccord(Type_Face type) const { return mes_faces_raccord_.nb_faces(type); }
174 inline int_t nb_faces_bords_int() const { return mes_bords_int_.nb_faces(); }
175 inline int_t nb_faces_bords_int(int num_bord) const { return mes_bords_int_(num_bord).nb_faces(); }
176 inline int_t nb_faces_bords_int(Type_Face type) const { return mes_bords_int_.nb_faces(type); }
177 inline int_t nb_faces_groupes_faces() const { return mes_groupes_faces_.nb_faces(); }
178 inline int_t nb_faces_groupes_faces(int num_g) const { return mes_groupes_faces_(num_g).nb_faces(); }
179 inline int_t nb_faces_groupes_faces(Type_Face type) const { return mes_groupes_faces_.nb_faces(type); }
180
181 inline int_t nb_faces_frontiere() const;
182 inline int_t nb_faces_frontiere(Type_Face type) const;
183
185 inline int_t nb_faces_specifiques(Type_Face type) const;
186
188
189 ///
190 /// Bords
191 ///
192 inline int nb_bords() const { return mes_faces_bord_.nb_bords(); }
193 inline Bord_t& bord(int i) { return mes_faces_bord_(i); }
194 inline const Bord_t& bord(int i) const { return mes_faces_bord_(i); }
195 inline Bord_t& bord(const Nom& nom) { return mes_faces_bord_(nom); }
196 inline const Bord_t& bord(const Nom& nom) const { return mes_faces_bord_(nom); }
197
198 inline Bords_t& faces_bord() { return mes_faces_bord_; }
199 inline const Bords_t& faces_bord() const { return mes_faces_bord_; }
200
204
205 ///
206 /// Bords internes
207 ///
208 inline Bord_Interne_t& bords_interne(int i) { return mes_bords_int_(i); }
209 inline const Bord_Interne_t& bords_interne(int i) const { return mes_bords_int_(i); }
210 inline Bord_Interne_t& bords_interne(const Nom& nom) { return mes_bords_int_(nom); }
211 inline const Bord_Interne_t& bords_interne(const Nom& nom) const { return mes_bords_int_(nom); }
212
214 inline const Bords_Internes_t& bords_int() const { return mes_bords_int_; }
215
216
217 ///
218 /// Groupes_Faces
219 ///
220 inline int nb_groupes_faces() const { return mes_groupes_faces_.nb_groupes_faces(); }
221 inline Groupe_Faces_t& groupe_faces(int i) { return mes_groupes_faces_(i); }
222 inline const Groupe_Faces_t& groupe_faces(int i) const { return mes_groupes_faces_(i); }
223 inline const Groupe_Faces_t& groupe_faces(const Nom& nom) const { return mes_groupes_faces_(nom); }
225 inline const Groupes_Faces_t& groupes_faces() const { return mes_groupes_faces_; }
226
227 ///
228 /// Frontieres
229 ///
230 inline const Frontiere_t& frontiere(int i) const;
231 inline Frontiere_t& frontiere(int i);
232 int rang_frontiere(const Nom& ) const;
233 const Frontiere_t& frontiere(const Nom&) const;
235 inline int nb_frontieres_internes() const { return mes_bords_int_.nb_bords_internes(); }
236 inline int nb_front_Cl() const { return nb_bords() +nb_raccords() + nb_frontieres_internes(); }
237
238 ///
239 /// Domaines frontieres
240 ///
241 inline const LIST(OBS_PTR(Domaine_32_64))& domaines_frontieres() const { return domaines_frontieres_; }
242 inline Domaine_32_64& domaine_frontiere(int i) { return domaines_frontieres_(i).valeur(); }
243
244 ///
245 /// Raccords
246 ///
247 inline int nb_raccords() const { return mes_faces_raccord_.nb_raccords(); }
248 inline Raccord_t& raccord(int i) { return mes_faces_raccord_(i); }
249 inline const Raccord_t& raccord(int i) const { return mes_faces_raccord_(i); }
250 inline Raccord_t& raccord(const Nom& nom) { return mes_faces_raccord_(nom); }
251 inline const Raccord_t& raccord(const Nom& nom) const { return mes_faces_raccord_(nom); }
252
254 inline const Raccords_t& faces_raccord() const { return mes_faces_raccord_; }
255
256 ///
257 /// Joints
258 ///
259 inline int nb_joints() const { return mes_faces_joint_.nb_joints(); }
260
261 inline Joint_t& joint(int i) { return mes_faces_joint_(i); }
262 inline const Joint_t& joint(int i) const { return mes_faces_joint_(i); }
263 inline Joint_t& joint(const Nom& nom) { return mes_faces_joint_(nom); }
264 inline const Joint_t& joint(const Nom& nom) const { return mes_faces_joint_(nom); }
266 inline const Joints_t& faces_joint() const { return mes_faces_joint_; }
267
268 inline Joint_t& joint_of_pe(int);
269 inline const Joint_t& joint_of_pe(int) const;
271
272 void renum_joint_common_items(const IntVect_t& nums, const int_t elem_offset);
273
274
275 ///
276 /// Periodicity
277 ///
278 inline const Noms& bords_perio() const { return bords_perio_; }
279 inline Noms& bords_perio() { return bords_perio_; }
281 inline int_t get_renum_som_perio(int_t i) const { return renum_som_perio_[i]; }
285
286 //
287 // Sous Domaines
288 //
289 inline int nb_ss_domaines() const { return les_ss_domaines_.size(); }
290 inline const Sous_Domaine_t& ss_domaine(int i) const { return les_ss_domaines_[i].valeur(); }
291 inline Sous_Domaine_t& ss_domaine(int i) { return les_ss_domaines_[i].valeur(); }
292 inline const Sous_Domaine_t& ss_domaine(const Nom& nom) const { return les_ss_domaines_(nom).valeur(); }
293 inline Sous_Domaine_t& ss_domaine(const Nom& nom) { return les_ss_domaines_(nom).valeur(); }
294 void add(const Sous_Domaine_t& sd) { les_ss_domaines_.add(sd); }
295 int associer_(Objet_U&) override; // Associate sous_domaine
296 inline const LIST(OBS_PTR(Sous_Domaine_t))& ss_domaines() const { return les_ss_domaines_; }
297
298
299 ///
300 /// Geometric computations
301 ///
302 inline void calculer_centres_gravite(DoubleTab_t& xp) const;
304 virtual void calculer_volumes(DoubleVect_t& volumes, DoubleVect_t& inv_volumes) const;
305 void calculer_mon_centre_de_gravite(ArrOfDouble& c);
306 double volume_total() const;
307 inline const ArrOfDouble& cg_moments() const { return cg_moments_; }
308 inline ArrOfDouble& cg_moments() { return cg_moments_; }
309 inline void exporter_mon_centre_de_gravite(ArrOfDouble c) { cg_moments_ = c; }
310
311 ///
312 /// Lookup methods and mapping arrays
313 ///
314 SmallArrOfTID_t& chercher_elements(const DoubleTab& pos, SmallArrOfTID_t& elem, int reel=0) const;
315 SmallArrOfTID_t& chercher_elements(const DoubleVect& pos, SmallArrOfTID_t& elem, int reel=0) const;
316 int_t chercher_elements(double x, double y=0, double z=0,int reel=0) const;
317 SmallArrOfTID_t& indice_elements(const IntTab& som, SmallArrOfTID_t& elem, int reel=0) const;
318
319 SmallArrOfTID_t& chercher_sommets(const DoubleTab& pos, SmallArrOfTID_t& som, int reel=0) const;
320 int_t chercher_sommets(double x, double y=0, double z=0,int reel=0) const;
321
322 SmallArrOfTID_t& chercher_aretes(const DoubleTab& pos, SmallArrOfTID_t& arr, int reel=0) const;
323 void rang_elems_sommet(SmallArrOfTID_t& elems, double x, double y=0, double z=0) const;
324
326 const OctreeRoot_t& construit_octree(int&) const;
328
329 ///
330 /// Various
331 ///
332 virtual void clear();
333 void renum(const IntVect_t& nums);
335 void imprimer() const;
337 void read_former_domaine(Entree& s, bool& read_perio); // used in Scatter
339 void fill_from_list(std::list<Domaine_32_64*>& lst);
340
341 ///
342 /// MEDCoupling:
343 ///
344#ifdef MEDCOUPLING_
345 inline const MEDCouplingUMesh* get_mc_mesh(bool virt = false) const;
346 inline void set_mc_mesh(MCAuto<MEDCouplingUMesh> m) const { mc_mesh_ = m; }
347 // remapper with other domains
348 MEDCouplingRemapper* get_remapper(const Domaine_32_64& other_dom, bool virt=false) const;
349 // DEC with other domains
350#ifdef MPI_
351 OverlapDEC* get_dec(const Domaine_32_64& other_dom, MEDCouplingFieldDouble *dist, MEDCouplingFieldDouble *loc) const;
352#endif
353#endif
354 void build_mc_mesh(bool virt = false) const;
355 bool is_mc_mesh_ready() const { return mc_mesh_ready_; }
356 // Used in Interprete_geometrique_base for example - method is const, because mc_mesh_ready_ is mutable:
357 void set_mc_mesh_ready(bool flag) const { mc_mesh_ready_ = flag; }
358
359 ///
360 /// Parallelism and virtual items management
361 ///
362 inline const ArrOfInt_t& ind_faces_virt_bord() const { return ind_faces_virt_bord_; }
364 void construire_elem_virt_pe_num(IntTab_t& elem_virt_pe_num_cpy) const;
365 const IntTab_t& elem_virt_pe_num() const { return elem_virt_pe_num_; }
366 virtual void creer_tableau_elements(Array_base&, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const;
367 virtual const MD_Vector& md_vector_elements() const;
368 virtual void creer_tableau_sommets(Array_base&, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const;
369 virtual const MD_Vector& md_vector_sommets() const { return sommets_.get_md_vector(); }
370
371
372 ///
373 /// Methods only used in 32 bits (i.e. after Scatter)
374 ///
375 static int identifie_item_unique(IntList& item_possible, DoubleTab& coord_possible, const DoubleVect& coord_ref);
376 void init_faces_virt_bord(const MD_Vector& md_vect_faces, MD_Vector& md_vect_faces_bord);
379
380
381protected:
382 // Geometric element type of this domain
384
385 // Array of vertices
387 DoubleTab_t sommets_n; // vertex coordinates at beginning of step, needed for implicit iterations
388 // Renumbering array for periodicity
390 // Description des elements (pour le multi-element, le tableau peut contenir des -1 !!!)
392 // Definition des aretes des elements (pour chaque arete, indices des deux sommets)
393 // (ce tableau n'est pas toujours rempli, selon la discretisation)
395 // Pour chaque element, indices de ses aretes dans Aretes_som (voir Elem_geom_base::get_tab_aretes_sommets_locaux())
397 // Pour les faces virtuelles du Domaine_VF, indices de la meme face dans le tableau des faces de bord
398 // (voir Domaine_32_64<_SIZE_>::init_faces_virt_bord())
399 ArrOfInt_t ind_faces_virt_bord_; // contient les indices des faces virtuelles de bord // BigArrOfTID
400 // Pour chaque element virtuel i avec nb_elem<=i<nb_elem_tot on a :
401 // elem_virt_pe_num_(i-nb_elem,0) = numero du PE qui possede l'element
402 // elem_virt_pe_num_(i-nb_elem,1) = numero local de cet element sur le PE qui le possede
404
405 // L'octree est mutable: on le construit a la volee lorsqu'il est utilise dans les methodes const
406 mutable OWN_PTR(OctreeRoot_t) deriv_octree_;
407 ArrOfDouble cg_moments_; // max dim 3
408
409 // List of references to sub domains
410 LIST(OBS_PTR(Sous_Domaine_t)) les_ss_domaines_;
411
412 // Bords, raccords et Bords_Internes forment les "faces_frontiere" sur lesquelles
413 // sont definies les conditions aux limites.
417 // Groupes_Faces representent les groupes de faces lues dans les fichiers d'entrees
419 // Les faces de joint sont les faces communes avec les autres processeurs (bords
420 // du domaine locaux a ce processeur qui se raccordent a un processeur voisin)
422
423 LIST(OBS_PTR(Domaine_32_64)) domaines_frontieres_;
424
425 Noms bords_perio_; ///< List of periodic boundaries - this is filled by Interprete 'Declarer_bord_perio'
426
427#ifdef MEDCOUPLING_
428 ///! MEDCoupling version of the domain:
429 mutable MCAuto<MEDCouplingUMesh> mc_mesh_, mc_mesh_virt_;
430 // One remapper per distant domain...
431 mutable std::map<const Domaine_32_64*, MEDCoupling::MEDCouplingRemapper> rmps;
432#ifdef MPI_
433 // ... but one DEC per (distant domain, field nature)
434 mutable std::map<std::pair<const Domaine_32_64*, MEDCoupling::NatureOfField>, OverlapDEC> decs;
435#endif
436 mutable bool mc_mesh_ready_ = false, mc_mesh_virt_ready_ = false;
437#endif
438
439private:
440 void prepare_rmp_with(const Domaine_32_64& other_dom, bool virt) const;
441 void prepare_dec_with(const Domaine_32_64& other_dom, MEDCouplingFieldDouble *dist, MEDCouplingFieldDouble *loc) const;
442
443 template<typename _BORD_TYP_>
444 void correct_type_single_border_type(std::list<_BORD_TYP_>& list);
445
446 // Cached infos to accelerate chercher_elements():
447 mutable DoubleTabs cached_positions_;
448 mutable TRUST_Vector<SmallArrOfTID_t> cached_elements_;
449};
450
451/*! @brief Type les elements du domaine avec le nom passe en parametre.
452 *
453 * Et associe le type d'element au domaine.
454 * @param (Nom& typ) le nom du type des elements geometriques du domaine.
455 */
456template<typename _SIZE_>
457inline void Domaine_32_64<_SIZE_>::typer(const Nom& typ)
458{
459 const std::string suff = !std::is_same<_SIZE_, int>::value ? "_64" : "";
460 Nom typ_32_64 = typ + suff;
461 elem_.typer(typ_32_64); // e.g. 'Point' or 'Point_64'
462 elem_->associer_domaine(*this);
463}
464
465
466/*! @brief Renvoie le nombre de sommets des elements geometriques constituants le domaine.
467 *
468 * Tous les elements du domaine etant du meme type ils ont tous le meme nombre de sommets
469 * qui est le nombre de sommet du type des elements geometriques du domaine.
470 *
471 * @return (int) le nombre de sommets par element
472 */
473template<typename _SIZE_>
474inline int Domaine_32_64<_SIZE_>::nb_som_elem() const { return elem_->nb_som(); }
475
476/*! @brief Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
477 *
478 * Ex: les objets de la classe Prisme ont 2 types de faces: triangle ou quadrangle.
479 *
480 * @param (int i) le type de face
481 * @return (int) le nombre de face de type i des elements geometriques constituants le domaine
482 */
483template<typename _SIZE_>
484inline int Domaine_32_64<_SIZE_>::nb_faces_elem(int i) const { return elem_->nb_faces(i); }
485
486/// Renvoie le nombre de faces frontiere du domaine (somme des nombres de bords, de raccords et de bords internes)
487template<typename _SIZE_>
489
490
491/*! @brief Renvoie le nombre de faces speciales du domaine.
492 *
493 * C'est la somme des nombres de bords, de raccords, de bords internes et de groupes de faces specifies
494 */
495template<typename _SIZE_>
497
498/*! @brief Calcule les centres de gravites des elements du domaine.
499 *
500 * @param (DoubleTab_t& xp) le tableau contenant les centres de gravites des elements du domaine
501 */
502template<typename _SIZE_>
503inline void Domaine_32_64<_SIZE_>::calculer_centres_gravite(DoubleTab_t& xp) const { elem_->calculer_centres_gravite(xp); }
504
505/*! @brief Renvoie le nombre de faces frontiere du domaine du type specifie.
506 *
507 * C'est la somme des nombres de bords, de raccords et de bords internes du type specifie.
508 *
509 * @param (Type_Face type) un type de face (certains elements geometriques ont plusieurs types de faces)
510 * @return (int) le nombre de faces frontiere du domaine du type specifie
511 */
512template<typename _SIZE_>
514{
515 return
516 nb_faces_bord(type) +
517 nb_faces_bords_int(type) +
518 nb_faces_raccord(type);
519}
520
521/*! @brief Renvoie le nombre de faces specifique du domaine du type specifie.
522 *
523 * C'est la somme des nombres de bords, de raccords de bords internes et de groupes de faces du type specifie.
524 *
525 * @param (Type_Face type) un type de face (certains elements geometriques ont plusieurs types de faces)
526 * @return (int) le nombre de faces frontiere du domaine du type specifie
527 */
528template<typename _SIZE_>
530{
531 return
532 nb_faces_bord(type) +
533 nb_faces_bords_int(type) +
534 nb_faces_raccord(type) +
536}
537
538template<typename _SIZE_>
540{
541 int fin=nb_bords();
542 if(i<fin)
543 return mes_faces_bord_(i);
544 i-=fin;
545 fin=nb_raccords();
546 if(i<fin)
547 return mes_faces_raccord_(i).valeur();
548 i-=fin;
550 if(i<fin)
551 return mes_bords_int_(i);
552 i-=fin;
553 fin=nb_groupes_faces();
554 if(i<fin)
555 return mes_groupes_faces_(i);
556 assert(0);
558 return frontiere(i);
559}
560
561
562template<typename _SIZE_>
564{
565 int fin=nb_bords();
566 if(i<fin)
567 return mes_faces_bord_(i);
568 i-=fin;
569 fin=nb_raccords();
570 if(i<fin)
571 return mes_faces_raccord_(i).valeur();
572 i-=fin;
574 if(i<fin)
575 return mes_bords_int_(i);
576 i-=fin;
577 fin=nb_groupes_faces();
578 if(i<fin)
579 return mes_groupes_faces_(i);
580 assert(0);
582 return frontiere(i);
583}
584
585template<typename _SIZE_>
587{
588 int i;
589 for(i=0; i<nb_joints(); i++)
590 if(mes_faces_joint_(i).PEvoisin()==pe)
591 break;
592 return mes_faces_joint_(i);
593}
594
595template<typename _SIZE_>
597{
598 int i;
599 for(i=0; i<nb_joints(); i++)
600 if(mes_faces_joint_(i).PEvoisin()==pe)
601 break;
602 return mes_faces_joint_(i);
603}
604
605
606#ifdef MEDCOUPLING_
607template<typename _SIZE_>
608inline const MEDCouplingUMesh* Domaine_32_64<_SIZE_>::get_mc_mesh(bool virt) const
609{
610 if (virt ? !mc_mesh_virt_ready_ : !mc_mesh_ready_)
611 build_mc_mesh(virt);
612 return virt ? mc_mesh_virt_ : mc_mesh_;
613}
614
615#endif // MEDCOUPLING_
616
617
618using Domaine = Domaine_32_64<int>;
619using Domaine_64 = Domaine_32_64<trustIdType>;
620
621#endif
Empty class used as a base for all the arrays.
Definition Array_base.h:41
Classe Bord Cette classe represente un bord d'un domaine, c'est un type de frontiere.
Definition Bord.h:32
Classe Bord_Interne La classe sert a representer un ensemble de faces qui sont internes.
Classe Bords Cette classe represente une liste d'objets de type Bord.
Definition Bords.h:28
int_t nb_faces() const
Renvoie le nombre total de faces de tous les bords de la liste.
Definition Bords.cpp:42
Class Bords_Internes Cette classe represente une liste d'objets de type Bords_Interne.
int_t nb_faces() const
Renvoie le nombre total de faces contenues dans la liste des Bord_Interne, i.
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
Definition Conds_lim.h:32
classe Domaine_32_64 un Domaine est un maillage compose d'un ensemble d'elements geometriques de meme...
Definition Domaine.h:62
int_t nb_faces_bords_int() const
Definition Domaine.h:174
Bord_Interne_32_64< _SIZE_ > Bord_Interne_t
Definition Domaine.h:86
IntVect_T< _SIZE_ > IntVect_t
Definition Domaine.h:72
void calculer_mon_centre_de_gravite(ArrOfDouble &c)
Calcule le centre de gravite du domaine.
Definition Domaine.cpp:736
double volume_total() const
Definition Domaine.cpp:877
IntTab_t aretes_som_
Definition Domaine.h:394
void construire_elem_virt_pe_num()
Definition Domaine.cpp:704
Sous_Domaine_t & ss_domaine(int i)
Definition Domaine.h:291
SmallArrOfTID_t & chercher_elements(const DoubleVect &pos, SmallArrOfTID_t &elem, int reel=0) const
Recherche des elements contenant les points dont les coordonnees sont specifiees.
Definition Domaine.cpp:492
IntTab_t elem_aretes_
Definition Domaine.h:396
Bords_Internes_t mes_bords_int_
Definition Domaine.h:416
Domaine_32_64 & domaine_frontiere(int i)
Definition Domaine.h:242
virtual void clear()
Reset the Domaine completely except for its name.
Definition Domaine.cpp:108
ArrOfInt_t renum_som_perio_
Definition Domaine.h:389
int_t nb_faces_groupes_faces(Type_Face type) const
Definition Domaine.h:179
const Sous_Domaine_t & ss_domaine(int i) const
Definition Domaine.h:290
ArrOfDouble & cg_moments()
Definition Domaine.h:308
const Joint_t & joint(const Nom &nom) const
Definition Domaine.h:264
void rang_elems_sommet(SmallArrOfTID_t &elems, double x, double y=0, double z=0) const
Definition Domaine.cpp:803
int nb_front_Cl() const
Definition Domaine.h:236
int_t nb_faces_raccord(Type_Face type) const
Definition Domaine.h:173
const OWN_PTR(Elem_geom_base_32_64< _SIZE_ >) &type_elem() const
Definition Domaine.h:102
const Joints_t & faces_joint() const
Definition Domaine.h:266
Groupe_Faces_t & groupe_faces(int i)
Definition Domaine.h:221
const Frontiere_t & frontiere(const Nom &) const
Definition Domaine.cpp:1088
int_t nb_aretes_tot() const
renvoie le nombre d'aretes total (reelles+virtuelles).
Definition Domaine.h:145
Frontiere_32_64< _SIZE_ > Frontiere_t
Definition Domaine.h:90
int_t nb_faces_bord(int num_bord) const
Definition Domaine.h:166
const Raccord_t & raccord(const Nom &nom) const
Definition Domaine.h:251
virtual const MD_Vector & md_vector_sommets() const
Definition Domaine.h:369
int_t chercher_elements(double x, double y=0, double z=0, int reel=0) const
Renvoie le rang de l'element contenant le point dont les coordonnees sont specifiees.
Definition Domaine.cpp:649
ArrsOfInt_T< _SIZE_ > ArrsOfInt_t
Definition Domaine.h:79
Bord_t & bord(const Nom &nom)
Definition Domaine.h:195
Joints_t mes_faces_joint_
Definition Domaine.h:421
int nb_som_elem() const
Renvoie le nombre de sommets des elements geometriques constituants le domaine.
Definition Domaine.h:474
void construire_elem_virt_pe_num(IntTab_t &elem_virt_pe_num_cpy) const
Definition Domaine.cpp:710
int_t nb_elem_tot() const
Definition Domaine.h:132
int_t nb_faces_specifiques() const
Renvoie le nombre de faces speciales du domaine.
Definition Domaine.h:496
OWN_PTR(Raccord_base_32_64< _SIZE_ >) Raccord_t
Definition Domaine.h:91
Bord_Interne_t & bords_interne(int i)
Definition Domaine.h:208
void creer_aretes()
Definition Domaine.cpp:2122
int_t nb_faces_bord() const
Definition Domaine.h:165
Frontiere_t & frontiere(int i)
Definition Domaine.h:563
ArrOfDouble cg_moments_
Definition Domaine.h:407
const Groupes_Faces_t & groupes_faces() const
Definition Domaine.h:225
SmallArrOfTID_t & chercher_elements(const DoubleTab &pos, SmallArrOfTID_t &elem, int reel=0) const
Recherche des elements contenant les points dont les coordonnees sont specifiees.
Definition Domaine.cpp:405
int_t nb_faces_raccord(int num_rac) const
Definition Domaine.h:172
SmallArrOfTID_T< _SIZE_ > SmallArrOfTID_t
Definition Domaine.h:74
LIST(OBS_PTR(Domaine_32_64)) domaines_frontieres_
OWN_PTR(OctreeRoot_t) deriv_octree_
Sous_Domaine_t & ss_domaine(const Nom &nom)
Definition Domaine.h:293
const IntTab_t & aretes_som() const
renvoie le tableau de connectivite aretes/sommets.
Definition Domaine.h:156
DoubleTab_T< _SIZE_ > DoubleTab_t
Definition Domaine.h:77
const OctreeRoot_t & construit_octree() const
Definition Domaine.cpp:817
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
Definition Domaine.cpp:851
LIST(OBS_PTR(Sous_Domaine_t)) les_ss_domaines_
void creer_mes_domaines_frontieres(const Domaine_VF &domaine_vf)
Definition Domaine.cpp:2176
SmallArrOfTID_t & chercher_aretes(const DoubleTab &pos, SmallArrOfTID_t &arr, int reel=0) const
Definition Domaine.cpp:677
Raccord_t & raccord(int i)
Definition Domaine.h:248
void calculer_centres_gravite(DoubleTab_t &xp) const
Calcule les centres de gravites des elements du domaine.
Definition Domaine.h:503
int_t nb_faces_frontiere() const
Renvoie le nombre de faces frontiere du domaine (somme des nombres de bords, de raccords et de bords ...
Definition Domaine.h:488
int_t nb_faces_bords_int(Type_Face type) const
Definition Domaine.h:176
Raccords_t mes_faces_raccord_
Definition Domaine.h:415
Bords_t mes_faces_bord_
Definition Domaine.h:414
static int identifie_item_unique(IntList &item_possible, DoubleTab &coord_possible, const DoubleVect &coord_ref)
Definition Domaine.cpp:1760
Bord_32_64< _SIZE_ > Bord_t
Definition Domaine.h:84
virtual void calculer_volumes(DoubleVect_t &volumes, DoubleVect_t &inv_volumes) const
Calcule les volumes des elements du domaine.
Definition Domaine.cpp:764
void init_faces_virt_bord(const MD_Vector &md_vect_faces, MD_Vector &md_vect_faces_bord)
Definition Domaine.cpp:1908
DoubleTab_t & les_sommets()
Definition Domaine.h:113
const ArrOfInt_t & ind_faces_virt_bord() const
Definition Domaine.h:362
int_t nb_faces_bord(Type_Face type) const
Definition Domaine.h:167
void set_mc_mesh_ready(bool flag) const
Definition Domaine.h:357
void set_renum_som_perio(IntTab_t &renum)
Definition Domaine.h:283
int rang_frontiere(const Nom &) const
Definition Domaine.cpp:1052
int_t nb_faces_bords_int(int num_bord) const
Definition Domaine.h:175
const Raccords_t & faces_raccord() const
Definition Domaine.h:254
void fill_from_list(std::list< Domaine_32_64 * > &lst)
Fills the Domaine from a list of Domaine objects by aggregating them.
Definition Domaine.cpp:1509
Joint_32_64< _SIZE_ > Joint_t
Definition Domaine.h:93
Entree & readOn_has_perio(Entree &s, bool &has_perio)
Lit les objets constituant un Domaine a partir d'un flot d'entree.
Definition Domaine.cpp:209
int_t get_renum_som_perio(int_t i) const
Definition Domaine.h:281
Bords_t & faces_bord()
Definition Domaine.h:198
ArrOfInt_T< _SIZE_ > ArrOfInt_t
Definition Domaine.h:71
const LIST(OBS_PTR(Sous_Domaine_t)) &ss_domaines() const
Definition Domaine.h:296
int associer_(Objet_U &) override
Association d'un Sous_Domaine au Domaine.
Definition Domaine.cpp:1300
int_t nb_faces_raccord() const
Definition Domaine.h:171
double & coord(int_t i, int j)
Definition Domaine.h:111
int_t nb_faces_groupes_faces() const
Definition Domaine.h:177
const Frontiere_t & frontiere(int i) const
Definition Domaine.h:539
const DoubleTab_t & les_sommets() const
Definition Domaine.h:114
int nb_frontieres_internes() const
Definition Domaine.h:235
DoubleTab_t sommets_n
Definition Domaine.h:387
ArrOfInt_t ind_faces_virt_bord_
Definition Domaine.h:399
Noms & bords_perio()
Definition Domaine.h:279
int nb_ss_domaines() const
Definition Domaine.h:289
const Groupe_Faces_t & groupe_faces(const Nom &nom) const
Definition Domaine.h:223
int_t nb_faces_joint() const
Definition Domaine.h:168
IntTab_t & set_aretes_som()
Definition Domaine.h:159
int_t nb_faces_groupes_faces(int num_g) const
Definition Domaine.h:178
Bord_Interne_t & bords_interne(const Nom &nom)
Definition Domaine.h:210
int nb_joints() const
Definition Domaine.h:259
void add(const Sous_Domaine_t &sd)
Definition Domaine.h:294
DoubleTab getBoundingBox() const
Definition Domaine.cpp:884
_SIZE_ int_t
Definition Domaine.h:70
Frontiere_t & frontiere(const Nom &)
Definition Domaine.cpp:1095
int_t chercher_sommets(double x, double y=0, double z=0, int reel=0) const
Definition Domaine.cpp:691
Raccords_t & faces_raccord()
Definition Domaine.h:253
IntTab_t & set_elem_aretes()
Definition Domaine.h:160
IntTab_t & les_elems()
Definition Domaine.h:129
int_t nb_elem() const
Definition Domaine.h:131
const Joint_t & joint(int i) const
Definition Domaine.h:262
void resetSommetsCoordinates()
Definition Domaine.h:116
const IntTab_t & les_elems() const
Definition Domaine.h:130
void fixer_premieres_faces_frontiere()
Definition Domaine.cpp:1102
void init_renum_perio()
Initialize the renumerotation array for periodicity.
Definition Domaine.cpp:1314
int_t nb_faces_joint(int num_joint) const
Definition Domaine.h:169
Sous_Domaine_32_64< _SIZE_ > Sous_Domaine_t
Definition Domaine.h:83
const Sous_Domaine_t & ss_domaine(const Nom &nom) const
Definition Domaine.h:292
void merge_wo_vertices_with(Domaine_32_64 &z)
Merge another Domaine into this, without considering vertices which are handled separately.
Definition Domaine.cpp:1237
const OctreeRoot_t & construit_octree(int &) const
construction de l'octree si pas deja fait
Definition Domaine.cpp:833
void construire_renum_som_perio(const Conds_lim &, const Domaine_dis_base &)
Definition Domaine.cpp:2237
const Bord_Interne_t & bords_interne(const Nom &nom) const
Definition Domaine.h:211
const Bords_Internes_t & bords_int() const
Definition Domaine.h:214
Joint_t & joint(const Nom &nom)
Definition Domaine.h:263
void renum(const IntVect_t &nums)
Bords_Internes_32_64< _SIZE_ > Bords_Internes_t
Definition Domaine.h:87
Joints_32_64< _SIZE_ > Joints_t
Definition Domaine.h:94
void invalide_octree()
Definition Domaine.cpp:810
int_t nb_faces_joint(Type_Face type) const
Definition Domaine.h:170
Bords_32_64< _SIZE_ > Bords_t
Definition Domaine.h:85
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
Definition Domaine.h:484
void read_former_domaine(Entree &s, bool &read_perio)
read what was (before TRUST 1.9.2) the "domaine" part from the input stream i.e. (roughly) the elemen...
Definition Domaine.cpp:259
DoubleTabs_T< _SIZE_ > DoubleTabs_t
Definition Domaine.h:80
Bords_Internes_t & bords_int()
Definition Domaine.h:213
Bord_t & bord(int i)
Definition Domaine.h:193
void read_vertices(Entree &s)
only read vertices from the stream s
Definition Domaine.cpp:1010
int_t nb_faces_frontiere(Type_Face type) const
Renvoie le nombre de faces frontiere du domaine du type specifie.
Definition Domaine.h:513
Groupes_Faces_t mes_groupes_faces_
Definition Domaine.h:418
int nb_bords() const
Definition Domaine.h:192
OWN_PTR(Elem_geom_base_32_64< _SIZE_ >) &type_elem()
Definition Domaine.h:103
Joint_t & joint(int i)
Definition Domaine.h:261
const ArrOfInt_t & get_renum_som_perio() const
Definition Domaine.h:284
int_t nb_faces_specifiques(Type_Face type) const
Renvoie le nombre de faces specifique du domaine du type specifie.
Definition Domaine.h:529
OctreeRoot_32_64< _SIZE_ > OctreeRoot_t
Definition Domaine.h:82
int_t nb_aretes() const
Renvoie le nombre d'aretes reelles.
Definition Domaine.h:143
Groupes_Faces_32_64< _SIZE_ > Groupes_Faces_t
Definition Domaine.h:89
DoubleTab_t sommets_
Definition Domaine.h:386
void typer(const Nom &)
Type les elements du domaine avec le nom passe en parametre.
Definition Domaine.h:457
SmallArrOfTID_t & chercher_sommets(const DoubleTab &pos, SmallArrOfTID_t &som, int reel=0) const
Definition Domaine.cpp:663
void calculer_centres_gravite_aretes(DoubleTab_t &xa) const
Calcule les centres de gravites des aretes du domaine.
Definition Domaine.cpp:792
const Raccord_t & raccord(int i) const
Definition Domaine.h:249
Raccord_t & raccord(const Nom &nom)
Definition Domaine.h:250
const DoubleTab_t & coord_sommets() const
Definition Domaine.h:112
const ArrOfDouble & cg_moments() const
Definition Domaine.h:307
void check_domaine()
associate the read objects to the domaine and check that the reading objects are coherent
Definition Domaine.cpp:341
DoubleVect_T< _SIZE_ > DoubleVect_t
Definition Domaine.h:76
Joint_t & joint_of_pe(int)
Definition Domaine.h:596
void exporter_mon_centre_de_gravite(ArrOfDouble c)
Definition Domaine.h:309
IntTab_t elem_virt_pe_num_
Definition Domaine.h:403
const Bord_Interne_t & bords_interne(int i) const
Definition Domaine.h:209
void correct_type_of_borders_after_merge()
Correcting type of borders if they were empty before merge (ie equal to vide_0D).
Definition Domaine.cpp:1162
void ajouter(const DoubleTab_t &soms, IntVect_t &nums)
Ajoute des noeuds au domaine avec elimination des noeuds double au retour nums contient les nouveaux ...
Definition Domaine.cpp:929
void saveSommetsCoordinates()
Definition Domaine.h:115
ArrOfDouble_T< _SIZE_ > ArrOfDouble_t
Definition Domaine.h:75
void build_mc_mesh(bool virt=false) const
Build the MEDCoupling mesh corresponding to the TRUST mesh.
Definition Domaine.cpp:1327
int_t arete_sommets(int_t i, int j) const
renvoie le numero du jeme sommet de la ieme arete.
Definition Domaine.h:152
void renum_joint_common_items(const IntVect_t &nums, const int_t elem_offset)
Renumerotation des noeuds et des elements presents dans les items communs des joints.
Definition Domaine.cpp:1551
int_t face_bords_interne_conjuguee(int_t face) const
Renvoie -1 si face n'est pas une face de bord interne Renvoie le numero de la face dupliquee sinon.
Definition Domaine.cpp:516
SmallArrOfTID_t & indice_elements(const IntTab &som, SmallArrOfTID_t &elem, int reel=0) const
Cherche les numeros (indices) des elements contenants les sommets specifies par le parametre "sommets...
Definition Domaine.cpp:383
OWN_PTR(Elem_geom_base_32_64< _SIZE_ >) elem_
virtual void creer_tableau_sommets(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Cree un tableau ayant une "ligne" par sommet du maillage.
Definition Domaine.cpp:1000
const LIST(OBS_PTR(Domaine_32_64)) &domaines_frontieres() const
Definition Domaine.h:241
virtual const MD_Vector & md_vector_elements() const
renvoie le descripteur parallele des tableaux aux elements du domaine
Definition Domaine.cpp:860
bool is_mc_mesh_ready() const
Definition Domaine.h:355
int_t elem_aretes(int_t i, int j) const
renvoie le numero de la jeme arete du ieme element.
Definition Domaine.h:154
Joints_t & faces_joint()
Definition Domaine.h:265
IntTab_t mes_elems_
Definition Domaine.h:391
int_t nb_som_tot() const
Renvoie le nombre total de sommets du domaine i.e. le nombre de sommets reels et virtuels sur le proc...
Definition Domaine.h:123
Raccords_32_64< _SIZE_ > Raccords_t
Definition Domaine.h:92
double coord(int_t i, int j) const
Definition Domaine.h:110
int_t nb_som() const
Renvoie le nombre de sommets du domaine.
Definition Domaine.h:121
void ajouter(const DoubleTab_t &soms)
Ajoute des noeuds (ou sommets) au domaine (sans verifier les doublons).
Definition Domaine.cpp:909
int nb_groupes_faces() const
Definition Domaine.h:220
const IntTab_t & elem_aretes() const
renvoie le tableau de connectivite elements/aretes.
Definition Domaine.h:158
const Bords_t & faces_bord() const
Definition Domaine.h:199
const Bord_t & bord(int i) const
Definition Domaine.h:194
void ecrire_noms_bords(Sortie &) const
Ecriture des noms des bords sur un flot de sortie.
Definition Domaine.cpp:1032
const IntTab_t & elem_virt_pe_num() const
Definition Domaine.h:365
const Joint_t & joint_of_pe(int) const
Definition Domaine.h:586
Groupes_Faces_t & groupes_faces()
Definition Domaine.h:224
Groupe_Faces_32_64< _SIZE_ > Groupe_Faces_t
Definition Domaine.h:88
IntTab_T< _SIZE_ > IntTab_t
Definition Domaine.h:73
void imprimer() const
Definition Domaine.cpp:1184
int comprimer()
Concatene les bords de meme nom et ceci pour: les bords, les bords periodiques, les bords internes et...
Definition Domaine.cpp:547
int nb_raccords() const
Definition Domaine.h:247
const Bord_t & bord(const Nom &nom) const
Definition Domaine.h:196
const Noms & bords_perio() const
Definition Domaine.h:278
const Groupe_Faces_t & groupe_faces(int i) const
Definition Domaine.h:222
void reordonner()
Definition Domaine.h:104
int_t sommet_elem(int_t i, int j) const
Renvoie le numero (global) du j-ieme sommet du i-ieme element.
Definition Domaine.h:136
int comprimer_joints()
Concatene les joints de meme nom.
Definition Domaine.cpp:1568
class Domaine_VF
Definition Domaine_VF.h:44
Base class for domains description. This class holds all the data shared by all domains and not sensi...
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Classe Elem_geom_base Cette classe est la classe de base pour la definition d'elements.
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
Classe Frontiere.
Definition Frontiere.h:32
Classe Groupe_Face La classe sert a representer une selection de faces lu dans le fichier med.
Class Groupes_Faces Cette classe represente une liste d'objets de type Groupe_Faces.
int_t nb_faces() const
Renvoie le nombre total de faces contenues dans la liste des Groupe_Faces, i.
La classe Joint est une Frontiere qui contient les faces et les sommets de joint avec le domaine PEvo...
Definition Joint.h:34
Classe Joints Cette classe represente une liste d'objet de type Joint.
Definition Joints.h:28
int_t nb_faces() const
Renvoie le nombre de face total des Joints_32_64 de la liste.
Definition Joints.cpp:46
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
Definition MD_Vector.h:48
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
classe Objet_U Cette classe est la classe de base des Objets de TRUST
Definition Objet_U.h:73
Classe OctreeRoot.
Definition Octree.h:102
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
Classe Raccord_base Cette classe est simplement une frontiere, c'est la classe de base de la.
Classe Raccords Cette represente une liste d'objets de type Raccord.
Definition Raccords.h:29
int_t nb_faces() const
Renvoie le nombre de face total des Raccords_32_64 de la liste.
Definition Raccords.cpp:44
Reorder_Mesh allows the user to trigger the renumbering of the mesh entities.
Classe de base des flux de sortie.
Definition Sortie.h:52
Sous_Domaine represents a volumic sub-domain i.e. a sub set of elements of a Domaine.
classe TRUST_Vector