Construction des couches fantômes. Plus de détails...
Classes | |
class | BoundaryNodeBitonicSortTraits |
Fonctor pour trier les BoundaryNodeInfo via le tri bitonic. Plus de détails... | |
class | BoundaryNodeInfo |
Structure contenant les informations des noeuds frontières. Plus de détails... | |
class | BoundaryNodeToSendInfo |
Types publics | |
using | ItemInternalMap = DynamicMeshKindInfos::ItemInternalMap |
using | SubDomainItemMap = HashTableMapT< Int32, SharedArray< Int32 > > |
Fonctions membres publiques | |
GhostLayerBuilder2 (DynamicMeshIncrementalBuilder *mesh_builder, bool is_allocate, Int32 version) | |
Construit une instance pour le maillage mesh. | |
void | addGhostLayers () |
Ajoute les couches de mailles fantomes. | |
Fonctions membres publiques hérités de Arccore::TraceAccessor | |
TraceAccessor (ITraceMng *m) | |
Construit un accesseur via le gestionnaire de trace m. | |
TraceAccessor (const TraceAccessor &rhs) | |
Constructeur par recopie. | |
TraceAccessor & | operator= (const TraceAccessor &rhs) |
Opérateur de recopie. | |
virtual | ~TraceAccessor () |
Libère les ressources. | |
ITraceMng * | traceMng () const |
Gestionnaire de trace. | |
TraceMessage | info () const |
Flot pour un message d'information. | |
TraceMessage | pinfo () const |
Flot pour un message d'information en parallèle. | |
TraceMessage | info (char category) const |
Flot pour un message d'information d'une catégorie donnée. | |
TraceMessage | pinfo (char category) const |
Flot pour un message d'information parallèle d'une catégorie donnée. | |
TraceMessage | info (bool v) const |
Flot pour un message d'information. | |
TraceMessage | warning () const |
Flot pour un message d'avertissement. | |
TraceMessage | pwarning () const |
TraceMessage | error () const |
Flot pour un message d'erreur. | |
TraceMessage | perror () const |
TraceMessage | log () const |
Flot pour un message de log. | |
TraceMessage | plog () const |
Flot pour un message de log. | |
TraceMessage | logdate () const |
Flot pour un message de log précédé de la date. | |
TraceMessage | fatal () const |
Flot pour un message d'erreur fatale. | |
TraceMessage | pfatal () const |
Flot pour un message d'erreur fatale en parallèle. | |
TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
Flot pour un message de debug. | |
Trace::eDebugLevel | configDbgLevel () const |
Niveau debug du fichier de configuration. | |
TraceMessage | info (Int32 verbose_level) const |
Flot pour un message d'information d'un niveau donné | |
TraceMessage | linfo () const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
TraceMessage | linfo (Int32 relative_level) const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
void | fatalMessage (const StandaloneTraceMessage &o) const |
Fonctions membres privées | |
void | _printItem (ItemInternal *ii, std::ostream &o) |
void | _markBoundaryItems () |
Marque les entitées au bord du sous-domaine. | |
void | _sendAndReceiveCells (SubDomainItemMap &cells_to_send) |
void | _sortBoundaryNodeList (Array< BoundaryNodeInfo > &boundary_node_list) |
Trie parallèle de la liste des infos sur les noeuds frontières. | |
void | _addGhostLayer (Integer current_layer, Int32ConstArrayView node_layer) |
void | _markBoundaryNodes (ArrayView< Int32 > node_layer) |
Détermine les noeuds frontières. | |
Attributs privés | |
DynamicMesh * | m_mesh = nullptr |
DynamicMeshIncrementalBuilder * | m_mesh_builder = nullptr |
IParallelMng * | m_parallel_mng = nullptr |
bool | m_is_verbose = false |
bool | m_is_allocate = false |
Int32 | m_version = -1 |
bool | m_use_optimized_node_layer = true |
bool | m_use_only_minimal_cell_uid = true |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Construction des couches fantômes.
Définition à la ligne 49 du fichier GhostLayerBuilder2.cc.
Définition à la ligne 58 du fichier GhostLayerBuilder2.cc.
using Arcane::mesh::GhostLayerBuilder2::SubDomainItemMap = HashTableMapT<Int32,SharedArray<Int32> > |
Définition à la ligne 59 du fichier GhostLayerBuilder2.cc.
Arcane::mesh::GhostLayerBuilder2::GhostLayerBuilder2 | ( | DynamicMeshIncrementalBuilder * | mesh_builder, |
bool | is_allocate, | ||
Int32 | version | ||
) |
Construit une instance pour le maillage mesh.
Définition à la ligne 94 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 456 du fichier GhostLayerBuilder2.cc.
|
private |
Marque les entitées au bord du sous-domaine.
Cela suppose que les faces aient déja été marquées avec le flag II_Boundary et que leur propriétaire soit correctement positionné (i.e: le même pour tous les sous-domaines).
Définition à la ligne 954 du fichier GhostLayerBuilder2.cc.
Références Arcane::IParallelMng::commRank(), Arcane::Face::edges(), Arcane::ItemBase::flags(), Arcane::ItemFlags::II_Boundary, Arcane::ItemFlags::II_Shared, Arcane::ItemFlags::II_SubDomainBoundary, Arcane::Item::itemBase(), Arcane::Item::mutableItemBase(), Arcane::ItemWithNodes::nodes(), et Arcane::mesh::DynamicMesh::parallelMng().
Référencé par addGhostLayers().
Détermine les noeuds frontières.
Cet algorithme fonctionne même s'il y a déjà des mailles fantômes. Pour déterminer les noeuds frontières il faut déjà déterminer les faces frontières. Une face est frontière si elle est dans l'un des deux cas:
Définition à la ligne 426 du fichier GhostLayerBuilder2.cc.
Références Arcane::MutableItemBase::addFlags(), Arcane::Face::cell(), Arcane::IParallelMng::commRank(), Arcane::Face::edges(), Arcane::ItemFlags::II_Shared, Arcane::ItemFlags::II_SubDomainBoundary, Arcane::Item::mutableItemBase(), Arcane::Face::nbCell(), Arcane::ItemWithNodes::nodes(), Arcane::Item::owner(), et Arcane::mesh::DynamicMesh::parallelMng().
Référencé par addGhostLayers().
|
private |
Définition à la ligne 116 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 903 du fichier GhostLayerBuilder2.cc.
|
private |
Trie parallèle de la liste des infos sur les noeuds frontières.
Récupère en entrée une liste de noeuds frontières et la trie en parallèle en s'assurant qu'après le tri les infos d'un même noeud sont sur le même proc.
Définition à la ligne 803 du fichier GhostLayerBuilder2.cc.
Références Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arccore::TraceAccessor::info(), Arcane::IParallelMng::recv(), Arccore::TraceAccessor::traceMng(), et Arcane::IParallelMng::waitAllRequests().
void Arcane::mesh::GhostLayerBuilder2::addGhostLayers | ( | ) |
Ajoute les couches de mailles fantomes.
Cette version utilise un tri pour déterminer les infos
Avant appel à cette fonction, il ne faut plus qu'il y ait de mailles fantômes: toutes les mailles du maillages doivent appartenir à ce sous-domaine. (TODO: ajouter test pour cela).
Si on demande plusieurs couches de mailles fantômes, on procède en plusieurs étapes pour le même algo. D'abord on envoie la première couche, puis la première et la seconde, puis trois couches et ainsi de suite. Cela n'est probablement pas optimum en terme de communication mais permet de traiter tous les cas, notamment le cas ou il faut traverser plusieurs sous-domaines pour ajouter des couches de mailles fantômes.
: faire les optimisations spécifiées dans les commentaires dans cette fonction.
: faire en sorte qu'on ne travaille que avec la connectivité maille/noeud.
Définition à la ligne 294 du fichier GhostLayerBuilder2.cc.
Références _markBoundaryItems(), _markBoundaryNodes(), Arcane::mesh::DynamicMesh::cellFamily(), Arcane::IParallelMng::commRank(), Arcane::ItemBase::flags(), Arcane::mesh::DynamicMesh::ghostLayerMng(), Arcane::ItemFlags::II_Shared, Arccore::TraceAccessor::info(), Arcane::Item::isOwn(), Arcane::IParallelMng::isParallel(), Arcane::Item::itemBase(), Arcane::Item::localId(), Arcane::IItemFamily::maxLocalId(), Arcane::IGhostLayerMng::nbGhostLayer(), Arcane::mesh::DynamicMesh::nodeFamily(), Arcane::ItemWithNodes::nodeIds(), Arcane::Item::owner(), et Arccore::TraceAccessor::warning().
Définition à la ligne 76 du fichier GhostLayerBuilder2.cc.
Définition à la ligne 75 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 72 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 73 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 74 du fichier GhostLayerBuilder2.cc.
Définition à la ligne 79 du fichier GhostLayerBuilder2.cc.
Définition à la ligne 78 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 77 du fichier GhostLayerBuilder2.cc.