16#include <MD_Vector_tools.h>
34template <
typename _SIZE_>
38 return is >> les_faces;
51template <
typename _SIZE_>
55 return os << les_faces;
62template <
typename _SIZE_>
66 les_faces.associer_domaine(un_domaine);
73template <
typename _SIZE_>
85template <
typename _SIZE_>
88 les_faces.ajouter(sommets);
95template <
typename _SIZE_>
105template <
typename _SIZE_>
108 les_faces.typer(typ);
115template <
typename _SIZE_>
118 return les_faces.les_sommets();
124template <
typename _SIZE_>
127 return les_faces.les_sommets();
136template <
typename _SIZE_>
142 for(
int_t i=0; i<nb_som; i++)
143 for(
int j=0; j<nb_som_dim; j++)
144 les_sommets(i,j)=Les_Nums[les_sommets(i,j)];
153template <
typename _SIZE_>
156 return le_dom.valeur();
163template <
typename _SIZE_>
166 return le_dom.valeur();
174template <
typename _SIZE_>
178 int_t nbf1=les_faces.nb_faces();
181 int nbs=std::max(les_faces.nb_som_faces(), a_ajouter.
nb_som_faces());
183 les_faces.les_sommets().resize(nbf1+nbf2, nbs);
184 for(face=0; face<nbf2; face++)
185 for(
int som=0; som<nbs; som++)
186 les_faces.sommet(nbf1+face, som)=a_ajouter.
sommet(face, som);
192 les_faces.voisins().resize(nbf1+nbf2, nb_voisins);
193 for(face=0; face<nbf2; face++)
194 for(
int voisin=0; voisin<nb_voisins; voisin++)
195 les_faces.voisin(nbf1+face, voisin)=a_ajouter.
voisin(face, voisin);
201template <
typename _SIZE_>
204 const MD_Vector& md = les_faces.les_sommets().get_md_vector();
219 x.
resize(size, nb_compo_);
222 Cerr <<
"Call to Frontiere_32_64<int>::trace_elem with a DoubleTab x not located on boundary faces or don't have the same number of components" << finl;
225 for (
int i = 0; i < size; i++)
227 int elem =
faces().voisin(i, 0);
229 elem =
faces().voisin(i, 1);
231 for(
int j = 0; j < nb_compo_; j++)
232 x(i, j) = y(elem, j);
249 x.
resize(size, nb_compo_);
252 Cerr <<
"Call to Frontiere_32_64<int>::trace_elem with a DoubleTab x not located on boundary faces or don't have the same number of components" << finl;
256 for (
int i = 0; i < size; i++)
257 for(
int j=0; j<nb_compo_; j++)
260 for (
int isom = 0; isom < nsomfa; isom++)
261 s += y(som_face(i, isom), j);
274 Cerr <<
"Frontiere_32_64<int>::trace_face(const DoubleVect_t& y, DoubleVect_t& x) const" << finl;
275 Cerr <<
"not coded yet." << finl;
287 for (
int i = 0; i < size; i++)
290 for (
int n = 0; n < N; n++)
291 x.
addr()[N * i + n] = y.
addr()[M * face + n];
298 Cerr<<
que_suis_je()<<
"::trace_som_distant not implemented "<<finl;
305 Cerr<<
que_suis_je()<<
"::trace_elem_distant not implemented "<<finl;
312 Cerr<<
que_suis_je()<<
"::trace_face_distant not implemented "<<finl;
319 Cerr<<
que_suis_je()<<
"::trace_face_distant not implemented "<<finl;
327template <
typename _SIZE_>
334template <
typename _SIZE_>
341template <
typename _SIZE_>
348template <
typename _SIZE_>
355template <
typename _SIZE_>
362template <
typename _SIZE_>
369template <
typename _SIZE_>
376template <
typename _SIZE_>
Empty class used as a base for all the arrays.
Class defining operators and methods for all reading operation in an input flow (file,...
IntTab_t & voisins()
Renvoie le tableau des voisins (des faces).
int_t voisin(int_t, int) const
Renvoie le numero du i-ieme voisin de face.
int_t sommet(int_t, int) const
Renvoie le numero du j-ieme sommet de la i-ieme face.
int nb_som_faces() const
Renvoie le nombre de sommet par face.
virtual void trace_elem_distant(const DoubleTab &, DoubleTab &) const
virtual void trace_face_distant(const DoubleTab &, DoubleTab &) const
IntVect_T< _SIZE_ > IntVect_t
void ajouter_faces(const IntTab_t &)
Ajoute une (ou plusieurs) face(s) a la frontiere, la (les) face(s) est (sont) specifiee(s) par un tab...
void nommer(const Nom &) override
Donne un nom a la frontiere.
virtual void trace_face_local(const DoubleTab &, DoubleTab &) const
Domaine_32_64< _SIZE_ > Domaine_t
const Domaine_t & domaine() const
Renvoie le domaine associe a la frontiere.
int_t num_premiere_face() const
virtual void trace_elem_local(const DoubleTab &, DoubleTab &) const
void typer_faces(const Motcle &)
Type les faces de la frontiere.
void associer_domaine(const Domaine_t &)
Associe la frontiere au domaine dont elle depend.
IntTab_t & les_sommets_des_faces()
Renvoie les sommets des faces de la frontiere.
void renum(const IntVect_t &)
Renumerote les noeuds (sommets) des faces.
IntTab_T< _SIZE_ > IntTab_t
virtual void creer_tableau_faces(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Cree un tableau ayant une "ligne" par face de cette frontiere Voir MD_Vector_tools::creer_tableau_dis...
Faces_32_64< _SIZE_ > Faces_t
virtual void trace_som_distant(const DoubleTab &, DoubleTab &) const
const Faces_t & faces() const
virtual void trace_som_local(const DoubleTab &y, DoubleTab &x) const
void add(const Frontiere_32_64 &)
Ajoute les sommets (et faces) de la frontiere passee en parametre a l'objet (Frontiere_32_64).
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
classe Objet_U Cette classe est la classe de base des Objets de TRUST
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
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 void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ size_array() const
int dimension_int(int d) const
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const