Arcane  4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::mesh::GhostLayerBuilder2

Construction of ghost layers. Plus de détails...

Graphe d'héritage de Arcane::mesh::GhostLayerBuilder2:
Graphe de collaboration de Arcane::mesh::GhostLayerBuilder2:

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.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
virtual ~TraceAccessor ()
 Libère les ressources.
ITraceMngtraceMng () 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

DynamicMeshm_mesh = nullptr
DynamicMeshIncrementalBuilderm_mesh_builder = nullptr
IParallelMngm_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

Description détaillée

Construction of ghost layers.

Définition à la ligne 49 du fichier GhostLayerBuilder2.cc.

Documentation des définitions de type membres

◆ ItemInternalMap

using Arcane::mesh::GhostLayerBuilder2::ItemInternalMap = DynamicMeshKindInfos::ItemInternalMap

Définition à la ligne 58 du fichier GhostLayerBuilder2.cc.

◆ SubDomainItemMap

using Arcane::mesh::GhostLayerBuilder2::SubDomainItemMap = HashTableMapT<Int32, SharedArray<Int32>>

Définition à la ligne 59 du fichier GhostLayerBuilder2.cc.

Documentation des constructeurs et destructeur

◆ GhostLayerBuilder2()

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().

Voici le graphe d'appel pour cette fonction :

Documentation des fonctions membres

◆ _addGhostLayer()

void Arcane::mesh::GhostLayerBuilder2::_addGhostLayer ( Integer current_layer,
Int32ConstArrayView node_layer )
private

Définition à la ligne 465 du fichier GhostLayerBuilder2.cc.

◆ _markBoundaryItems()

void Arcane::mesh::GhostLayerBuilder2::_markBoundaryItems ( ArrayView< Int32 > node_layer)
private

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().

Voici le graphe d'appel pour cette fonction :
Voici le graphe des appelants de cette fonction :

◆ _markBoundaryNodes()

void Arcane::mesh::GhostLayerBuilder2::_markBoundaryNodes ( ArrayView< Int32 > node_layer)
private

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:

  • it has only one connected cell belonging to this subdomain.
  • it is connected to two cells, exactly one of which belongs to this domain. Once the boundary faces are found, we consider that the boundary nodes are those that belong to a boundary face.

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().

Voici le graphe d'appel pour cette fonction :
Voici le graphe des appelants de cette fonction :

◆ _markBoundaryNodesFromEdges()

void Arcane::mesh::GhostLayerBuilder2::_markBoundaryNodesFromEdges ( ArrayView< Int32 > node_layer)
private

Définition à la ligne 995 du fichier GhostLayerBuilder2.cc.

◆ _printItem()

void Arcane::mesh::GhostLayerBuilder2::_printItem ( ItemInternal * ii,
std::ostream & o )
private

Définition à la ligne 117 du fichier GhostLayerBuilder2.cc.

◆ _sendAndReceiveCells()

void Arcane::mesh::GhostLayerBuilder2::_sendAndReceiveCells ( SubDomainItemMap & cells_to_send)
private

Définition à la ligne 911 du fichier GhostLayerBuilder2.cc.

◆ _sortBoundaryNodeList()

void Arcane::mesh::GhostLayerBuilder2::_sortBoundaryNodeList ( Array< BoundaryNodeInfo > & boundary_node_list)
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().

Voici le graphe d'appel pour cette fonction :

◆ addGhostLayers()

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.

A faire

: 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().

Voici le graphe d'appel pour cette fonction :

Documentation des données membres

◆ m_is_allocate

bool Arcane::mesh::GhostLayerBuilder2::m_is_allocate = false
private

Définition à la ligne 76 du fichier GhostLayerBuilder2.cc.

◆ m_is_verbose

bool Arcane::mesh::GhostLayerBuilder2::m_is_verbose = false
private

Définition à la ligne 75 du fichier GhostLayerBuilder2.cc.

◆ m_mesh

DynamicMesh* Arcane::mesh::GhostLayerBuilder2::m_mesh = nullptr
private

Définition à la ligne 72 du fichier GhostLayerBuilder2.cc.

◆ m_mesh_builder

DynamicMeshIncrementalBuilder* Arcane::mesh::GhostLayerBuilder2::m_mesh_builder = nullptr
private

Définition à la ligne 73 du fichier GhostLayerBuilder2.cc.

◆ m_parallel_mng

IParallelMng* Arcane::mesh::GhostLayerBuilder2::m_parallel_mng = nullptr
private

Définition à la ligne 74 du fichier GhostLayerBuilder2.cc.

◆ m_use_only_minimal_cell_uid

bool Arcane::mesh::GhostLayerBuilder2::m_use_only_minimal_cell_uid = true
private

Définition à la ligne 79 du fichier GhostLayerBuilder2.cc.

◆ m_use_optimized_node_layer

bool Arcane::mesh::GhostLayerBuilder2::m_use_optimized_node_layer = true
private

Définition à la ligne 78 du fichier GhostLayerBuilder2.cc.

◆ m_version

Int32 Arcane::mesh::GhostLayerBuilder2::m_version = -1
private

Définition à la ligne 77 du fichier GhostLayerBuilder2.cc.


La documentation de cette classe a été générée à partir du fichier suivant :