14#include "arcane/mesh/ItemConnectivitySynchronizer.h"
15#include "arcane/mesh/IItemConnectivityGhostPolicy.h"
31: m_connectivity(connectivity)
33, m_parallel_mng(m_connectivity->targetFamily()->mesh()->parallelMng())
34, m_added_ghost(m_parallel_mng->commSize())
54 m_data_to_send.clear();
56 m_data_to_send.resize(m_parallel_mng->
commSize());
58 for (Integer i = 0; i <
ranks.size(); ++i){
59 Integer rank =
ranks[i];
94 buffer->
setMode(ISerializer::ModeReserve);
112void ItemConnectivitySynchronizer::
151void ItemConnectivitySynchronizer::
155 Int32UniqueArray non_null_shared_items, non_null_shared_items_connected_items;
156 non_null_shared_items.
reserve(shared_items.size());
157 non_null_shared_items_connected_items.reserve(shared_items_connected_items.size());
159 for (
auto item : shared_items) {
160 if (item != NULL_ITEM_LOCAL_ID) {
161 non_null_shared_items.add(shared_items[i]);
162 non_null_shared_items_connected_items.add(shared_items_connected_items[i]);
166 shared_items.copy(non_null_shared_items);
167 shared_items_connected_items.copy(non_null_shared_items_connected_items);
170 ItemVectorView shared_items_view = m_connectivity->
targetFamily()->view(shared_items);
171 for (Integer i = 0; i < shared_items_view.size(); ++i)
172 shared_items_uids[i] = shared_items_view[i].uniqueId().asInt64();
173 std::set<Int64>& added_ghost = m_added_ghost[rank];
177 for (Integer i = shared_items_uids.size()-1; i >=0 ; --i ){
178 if (!added_ghost.insert(shared_items_uids[i]).second){
181 shared_items_connected_items.remove(i);
189void ItemConnectivitySynchronizer::
193 std::set<Int64> shared_uids_set;
194 for (Integer i = shared_item_uids.size()-1; i >= 0 ; --i){
195 if (! shared_uids_set.insert(shared_item_uids[i]).second){
197 shared_item_uids.remove(i);
198 shared_item_owners.remove(i);
206ISubDomain* ItemConnectivitySynchronizer::
209 return m_connectivity->
targetFamily()->mesh()->subDomain();
Tableau d'items de types quelconques.
virtual Int32ConstArrayView sharedItems(const Integer rank, const String &family_name)=0
donne les local_ids des items de la famille family_name partagés pour la connectivité avec le process...
virtual Int32ConstArrayView communicatingRanks()=0
Rangs des sous-domaines avec lesquels on communique.
virtual Int32ConstArrayView sharedItemsConnectedItems(const Integer rank, const String &family_name)=0
donne les local_ids des items de la famille family_name connectés avec les sharedItems(rank).
virtual void updateConnectivity(Int32ConstArrayView ghost_items, Int64ConstArrayView ghost_items_connected_items)=0
mets à jour la connectivité en connectant les items fantômes ajoutés..
Interface pour gérer une connectivité.
virtual IItemFamily * targetFamily() const =0
Famille cible.
virtual IItemFamily * sourceFamily() const =0
Famille source.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
void computeExtraItemsToSend()
Interface IExtraGhostItemsBuilder.
ItemConnectivitySynchronizer(IItemConnectivity *connectivity, IItemConnectivityGhostPolicy *ghost_policy)
void serializeGhostItems(ISerializer *buffer, Int32ConstArrayView ghost_item_lids)
Interface IExtraGhostItemsAdder : add extra ghost in TargetFamily.
void synchronize()
Interface IConnectivitySynchronizer.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
void remove(Int64 index)
Supprime l'entité ayant l'indice index.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
virtual void allocateBuffer()=0
Alloue la mémoire du sérialiseur.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
virtual void reserveSpan(eDataType dt, Int64 n)=0
Réserve de la mémoire pour n valeurs de dt.
virtual void putSpan(Span< const Real > values)
Ajoute le tableau values.
virtual void getSpan(Span< Real > values)
Récupère le tableau values.
virtual Int64 getInt64()=0
Récupère une taille.
virtual void reserve(eDataType dt, Int64 n)=0
Réserve de la mémoire pour n objets de type dt.
virtual void setMode(eMode new_mode)=0
Positionne le fonctionnement actuel.
virtual void putInt64(Int64 value)=0
Ajoute l'entier value.
Vecteur 1D de données avec sémantique par référence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
SharedArray< Int64 > Int64SharedArray
Tableau dynamique à une dimension d'entiers 64 bits.
SharedArray< Int32 > Int32SharedArray
Tableau dynamique à une dimension d'entiers 32 bits.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
SharedArray< Integer > IntegerSharedArray
Tableau dynamique à une dimension d'entiers.
@ DT_Int64
Donnée de type entier 64 bits.