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

Construction des couches fantômes. Plus de détails...

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

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

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 Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 

Description détaillée

Construction des couches fantômes.

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

Documentation des définitions de type membres

◆ ItemInternalMap

◆ SubDomainItemMap

Documentation des constructeurs et destructeur

◆ GhostLayerBuilder2()

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.

Documentation des fonctions membres

◆ _addGhostLayer()

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

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

◆ _markBoundaryItems()

void Arcane::mesh::GhostLayerBuilder2::_markBoundaryItems ( )
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().

◆ _markBoundaryNodes()

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

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:

  • elle n'a qu'une maille connectée qui appartient à ce sous-domaine.
  • elle est connectée à deux mailles dont une exactement appartient à ce domaine. Une fois les faces frontières trouvées, on considère que les noeuds frontières sont ceux qui appartiennent à une face frontière.

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

◆ _printItem()

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

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

◆ _sendAndReceiveCells()

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

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

◆ _sortBoundaryNodeList()

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

◆ addGhostLayers()

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.

A faire:

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

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 :