16#ifndef Scatter_included
17#define Scatter_included
19#include <TRUSTTabs_forward.h>
20#include <Interprete.h>
23#include <Domaine_forward.h>
35 static int Chercher_Correspondance(
const DoubleTab& sommets1,
const DoubleTab& sommets2, ArrOfInt& correspondance,
const double epsilon);
45 const int nb_items_reels,
46 const ArrsOfInt& items_to_send,
47 const JOINT_ITEM type_item);
50 const JOINT_ITEM type_item);
71 template <
typename _SIZE_>
73 template <
typename _SIZE_>
class Domaine_32_64 A Domain is a mesh composed of a set of geometric elements of the same type.
Base class for "interpreter" objects.
: This class is an OWN_PTR but the pointed object is shared among multiple
class Nom: a character string for naming TRUST objects.
static void reordonner_faces_de_joint(Domaine &dom)
Reorders joint faces so that they appear in the same order on each pair of neighboring processors.
static int Chercher_Correspondance(const DoubleTab &sommets1, const DoubleTab &sommets2, ArrOfInt &correspondance, const double epsilon)
Builds the "correspondance" array such that for 0 <= i < sommets2.
static void ajouter_joints(Domaine &domaine, ArrOfInt &pe_voisins)
Adds joints with all PEs in pe_voisins.
static void init_sequential_domain(Domaine_32_64< _SIZE_ > &dom)
Create parallel descriptors for the vertex and element arrays of the domain (necessary because Scatte...
static void construire_espace_virtuel_traduction(const MD_Vector &md_indice, const MD_Vector &md_valeur, IntTab &tableau, const int error_is_fatal=1)
Builds the items_communs + virtual space structure of an array containing indices of geometric items,...
static void calculer_espace_distant_sommets(Domaine &dom)
Based on the remote space of elements, computes the remote space of vertices.
Entree & interpreter(Entree &) override
Reads and completes a parallel domain according to the keywords read in the data set.
static void calculer_espace_distant_aretes(Domaine &domaine, const int nb_aretes_reelles, const IntTab &elem_aretes)
Same as Scatter::calculer_espace_distant_sommets for edges.
static void calculer_espace_distant_elements(Domaine &dom)
Fills the "espace_distant()" array of elements in the joints.
static void calculer_espace_distant(Domaine &domaine, const int nb_items_reels, const ArrsOfInt &items_to_send, const JOINT_ITEM type_item)
Determines the distant items from a list of items to send and lists of common items.
static void construire_correspondance_items_par_coordonnees(Joints &joints, const JOINT_ITEM type_item, const DoubleTab &coord_items, bool allow_resize=false)
Generic method to build geometrical item correspondance between the local and the remote processor ar...
static void construire_structures_paralleles(Domaine &dom)
Builds the parallel structures of the domain (determination of distant elements as a function of join...
static void calculer_nb_items_virtuels(Joints &joints, const JOINT_ITEM type_item)
For a geometric item "type_item", fills the nb_items_virtuels_ field of joints based on the number of...
OBS_PTR(Domaine) le_domaine
void read_domain_no_comm(Entree &fic, bool &read_perio)
Does the exact same thing as the readOn of the class Domaine but without collective communication.
static void calculer_renum_items_communs(Joints &joints, const JOINT_ITEM type_item)
Assumes that each joint[i].joint_item(type_item).items_communs() contains the local indices of common...
static void construire_correspondance_sommets_par_coordonnees(Domaine &dom, bool allow_resize=false)
Builds the joint_item(JOINT_ITEM::SOMMET).items_communs arrays for all joints of the domain dom.
static void construire_md_vector(const Domaine &, int nb_items_reels, const JOINT_ITEM, MD_Vector &)
Builds an MD_Vector_std from the joint information of the domain for the requested item type.
static void check_consistancy_remote_items(Domaine &dom, const ArrOfInt &mergedDomaines)
Merged domains receive joint information from their neighbours to ensure that their common items (ver...
static void corriger_espace_distant_elements_perio(Domaine &dom)
Current periodic algorithms (P1B assembler, OpDivElem P1B) require that for each virtual periodic fac...
Domaine & domaine()
Returns the associated domain.
static void trier_les_joints(Joints &joints)
Sort joints by increasing neighbor proc number.
static void calculer_espace_distant_faces(Domaine &domaine, const int nb_faces_reelles, const IntTab &elem_faces)
Same as Scatter::calculer_espace_distant_sommets for faces.
virtual void lire_domaine(Nom &fil)
Reads the domain from the file named "nomentree", of type LecFicDistribueBin or LecFicDistribue.
static void uninit_sequential_domain(Domaine_32_64< _SIZE_ > &dom)
Method used by interpreters that modify the domain (sequential), destroys the descriptors of vertices...
static void construire_correspondance_aretes_par_coordonnees(Domaine_VF &zvf)
Builds the joint_item(JOINT_ITEM::ARETE).items_communs arrays for all joints of the domain.