Construction of ghost layers. Plus de détails...
Classes | |
| class | BoundaryNodeInfo |
| Structure containing boundary node information. Plus de détails... | |
| class | BoundaryNodeBitonicSortTraits |
| Functor for sorting BoundaryNodeInfo via bitonic sort. 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) | |
| Constructs an instance for the mesh mesh. | |
| void | addGhostLayers () |
| Adds ghost mesh layers. | |
| Fonctions membres publiques hérités de Arcane::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 (ArrayView< Int32 > node_layer) |
| Marks the entities at the edge of the sub-domain. | |
| void | _sendAndReceiveCells (SubDomainItemMap &cells_to_send) |
| void | _sortBoundaryNodeList (Array< BoundaryNodeInfo > &boundary_node_list) |
| Parallel sorting of the list of boundary node information. | |
| void | _addGhostLayer (Integer current_layer, Int32ConstArrayView node_layer) |
| void | _markBoundaryNodes (ArrayView< Int32 > node_layer) |
| Determines the boundary nodes. | |
| void | _markBoundaryNodesFromEdges (ArrayView< Int32 > node_layer) |
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 Arcane::TraceAccessor | |
| void | _setLocalVerboseLevel (Int32 v) |
| Int32 | _localVerboseLevel () const |
Construction of ghost layers.
Définition à la ligne 49 du fichier GhostLayerBuilder2.cc.
| using Arcane::mesh::GhostLayerBuilder2::ItemInternalMap = DynamicMeshKindInfos::ItemInternalMap |
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 ) |
Constructs an instance for the mesh mesh.
Définition à la ligne 95 du fichier GhostLayerBuilder2.cc.
Références Arcane::TraceAccessor::TraceAccessor(), et Arcane::TraceAccessor::traceMng().
|
private |
Définition à la ligne 465 du fichier GhostLayerBuilder2.cc.
Marks the entities at the edge of the sub-domain.
This assumes that the faces have already been marked with the II_Boundary flag and that their owner is correctly positioned (i.e.: the same for all sub-domains).
Définition à la ligne 962 du fichier GhostLayerBuilder2.cc.
Références Arcane::MutableItemBase::addFlags(), Arcane::Face::cell(), Arcane::IParallelMng::commRank(), Arcane::mesh::ItemInternalMap::eachItem(), 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::Face::nbCell(), Arcane::ItemWithNodes::nodes(), et Arcane::Item::owner().
Référencé par addGhostLayers().
Determines the boundary nodes.
This algorithm works even if there are already ghost cells. To determine the boundary nodes, you must first determine the boundary faces. A face is boundary if it falls into one of two cases:
Définition à la ligne 434 du fichier GhostLayerBuilder2.cc.
Références Arcane::MutableItemBase::addFlags(), Arcane::Face::cell(), Arcane::IParallelMng::commRank(), Arcane::mesh::ItemInternalMap::eachItem(), Arcane::Face::edges(), Arcane::ItemFlags::II_Shared, Arcane::ItemFlags::II_SubDomainBoundary, Arcane::Item::mutableItemBase(), Arcane::Face::nbCell(), Arcane::ItemWithNodes::nodes(), et Arcane::Item::owner().
Référencé par addGhostLayers().
|
private |
Définition à la ligne 995 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 117 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 911 du fichier GhostLayerBuilder2.cc.
|
private |
Parallel sorting of the list of boundary node information.
Takes as input a list of boundary nodes and sorts it in parallel ensuring that after sorting the information for the same node is on the same process.
Définition à la ligne 811 du fichier GhostLayerBuilder2.cc.
Références Arcane::Array< DataType >::add(), Arcane::Array< DataType >::addRange(), Arcane::Array< DataType >::clear(), Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::TraceAccessor::info(), Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::keys(), Arcane::IParallelMng::recv(), Arcane::Array< DataType >::resize(), Arcane::AbstractArray< T >::size(), Arcane::ConstArrayView< T >::size(), Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::sort(), Arcane::ConstArrayView< T >::subConstView(), Arcane::TraceAccessor::traceMng(), et Arcane::IParallelMng::waitAllRequests().
| void Arcane::mesh::GhostLayerBuilder2::addGhostLayers | ( | ) |
Adds ghost mesh layers.
This version uses sorting to determine the info
Before calling this function, there should be no ghost meshes: all meshes in the mesh must belong to this sub-domain. (TODO: add test for this).
If multiple ghost mesh layers are requested, we proceed in multiple steps for the same algorithm. First, we send the first layer, then the first and the second, then three layers, and so on. This is probably not optimal in terms of communication but allows processing all cases, especially the case where multiple sub-domains must be crossed to add ghost mesh layers.
: implement the optimizations specified in the comments in this function.
: ensure that we only work with the mesh/node connectivity.
Définition à la ligne 296 du fichier GhostLayerBuilder2.cc.
Références _markBoundaryItems(), _markBoundaryNodes(), ARCANE_FATAL, Arcane::IParallelMng::commRank(), Arcane::mesh::ItemInternalMap::eachItem(), Arcane::ItemBase::flags(), Arcane::ItemFlags::II_Shared, Arcane::TraceAccessor::info(), Arcane::Item::isOwn(), Arcane::IParallelMng::isParallel(), Arcane::Item::itemBase(), Arcane::Item::localId(), Arcane::ItemWithNodes::nodeIds(), Arcane::Item::owner(), et Arcane::TraceAccessor::warning().
|
private |
Définition à la ligne 76 du fichier GhostLayerBuilder2.cc.
|
private |
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.
|
private |
Définition à la ligne 79 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 78 du fichier GhostLayerBuilder2.cc.
|
private |
Définition à la ligne 77 du fichier GhostLayerBuilder2.cc.