15#include <Domaine_bord.h>
23template <
typename _SIZE_>
33template <
typename _SIZE_>
43template <
typename _SIZE_>
46 domaine_source_ = source;
54template <
typename _SIZE_>
57 return domaine_source_;
63template <
typename _SIZE_>
72template <
typename _SIZE_>
81template <
typename _SIZE_>
86 case Type_Face::vide_0D:
87 type_elem_face =
"??";
89 case Type_Face::point_1D:
90 type_elem_face =
"??";
92 case Type_Face::segment_2D:
93 type_elem_face =
"segment";
95 case Type_Face::segment_2D_axi:
96 type_elem_face =
"segment";
98 case Type_Face::triangle_3D:
99 type_elem_face =
"triangle";
101 case Type_Face::quadrilatere_2D_axi:
102 type_elem_face =
"quadrangle_VEF";
104 case Type_Face::quadrangle_3D:
105 type_elem_face = (sub_type(Hexaedre,type_elem)?
"rectangle":
"quadrangle_VEF");
107 case Type_Face::quadrangle_3D_axi:
108 type_elem_face =
"quadrangle_VEF";
111 type_elem_face =
"??";
122template <
typename _SIZE_>
130 Cerr <<
"extraire_domaine_bord in parallel: the domain created will not have a distributed structure\n"
131 <<
" (this will be done one day... ask to B.Mathieu)" << finl;
141 type_face_to_type_elem(src.type_elem().valeur(), src.type_elem()->type_face(), type_elem);
142 const std::string suff = !std::is_same<_SIZE_, int>::value ?
"_64" :
"";
143 Nom type_elem_64 = type_elem + suff;
144 dest.type_elem().
typer(type_elem_64);
145 dest.type_elem()->associer_domaine(dest);
152 elem_dest.
resize(nb_faces, nb_som_face);
158 int_t nb_som_dest = 0;
159 for (
int_t i = 0; i < nb_faces; i++)
161 for (
int j = 0; j < nb_som_face; j++)
163 const int_t som = faces_src(i, j);
165 if (renum_inverse[som] < 0)
168 renum_inverse[som] = nb_som_dest++;
170 elem_dest(i, j) = renum_inverse[som];
176 const int dim =
static_cast<int>(som_src.
dimension(1));
177 som_dest.
resize(nb_som_dest, dim);
178 for (
int_t i = 0; i < nb_som_dest; i++)
180 const int_t som = renum_som[i];
181 for (
int j = 0; j < dim; j++)
182 som_dest(i, j) = som_src(som, j);
classe Domaine_32_64 un Domaine est un maillage compose d'un ensemble d'elements geometriques de meme...
DoubleTab_t & les_sommets()
const Frontiere_t & frontiere(int i) const
void typer(const Nom &)
Type les elements du domaine avec le nom passe en parametre.
int_t nb_som() const
Renvoie le nombre de sommets du domaine.
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
Cette classe est un domaine dont les sommets et les elements sont extraits d'un bord d'un domaine sou...
virtual void construire_domaine_bord(const Domaine_t &source, const Nom &nom_bord)
construit le domaine en appelant extraire_domaine_bord()
virtual const Domaine_t & get_domaine_source() const
renvoie une reference au domaine source
Frontiere_32_64< _SIZE_ > Frontiere_t
virtual const Nom & get_nom_bord_source() const
renvoie le nom du bord source
static void extraire_domaine_bord(const Domaine_t &src, const Nom &nom_bord, Domaine_t &dest, ArrOfInt_t &renum_som)
remplit le domaine "dest" avec les sommets et les faces du bord "nom_bord" du domaine "src".
virtual const ArrOfInt_t & get_renum_som() const
renvoie renum_som (pour chaque sommet du domaine_bord, indice du meme sommet dans le domaine)
DoubleTab_T< _SIZE_ > DoubleTab_t
Domaine_32_64< _SIZE_ > Domaine_t
IntTab_T< _SIZE_ > IntTab_t
ArrOfInt_T< _SIZE_ > ArrOfInt_t
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,...
const IntTab_t & les_sommets() const
Renvoie le tableau des sommets de toutes les faces.
int nb_som_faces() const
Renvoie le nombre de sommet par face.
const Faces_t & faces() const
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
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.
static bool is_parallel()
Classe de base des flux de sortie.
void append_array(_TYPE_ valeur)
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const