Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::mesh::FaceUniqueIdBuilder Class Reference

Construction of ghost layers. More...

#include <arcane/mesh/FaceUniqueIdBuilder.h>

Inheritance diagram for Arcane::mesh::FaceUniqueIdBuilder:
Collaboration diagram for Arcane::mesh::FaceUniqueIdBuilder:

Public Types

using BoundaryInfosMap = HashTableMapT<Int32, SharedArray<Int64>>
using BoundaryInfosMapEnumerator = HashTableMapEnumeratorT<Int32, SharedArray<Int64>>

Public Member Functions

 FaceUniqueIdBuilder (DynamicMeshIncrementalBuilder *mesh_builder)
 Constructs an instance for the mesh.
void computeFacesUniqueIds ()
Public Member Functions inherited from Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Constructs an accessor via the trace manager m.
 TraceAccessor (const TraceAccessor &rhs)
 Copy constructor.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Copy assignment operator.
virtual ~TraceAccessor ()
 Frees resources.
ITraceMngtraceMng () const
 Trace manager.
TraceMessage info () const
 Flow for an information message.
TraceMessage pinfo () const
 Flow for a parallel information message.
TraceMessage info (char category) const
 Flow for an information message of a given category.
TraceMessage pinfo (char category) const
 Flow for a parallel information message of a given category.
TraceMessage info (bool v) const
 Flow for an information message.
TraceMessage warning () const
 Flow for a warning message.
TraceMessage pwarning () const
TraceMessage error () const
 Flow for an error message.
TraceMessage perror () const
TraceMessage log () const
 Flow for a log message.
TraceMessage plog () const
 Flow for a log message.
TraceMessage logdate () const
 Flow for a log message preceded by the date.
TraceMessage fatal () const
 Flow for a fatal error message.
TraceMessage pfatal () const
 Flow for a parallel fatal error message.
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flow for a debug message.
Trace::eDebugLevel configDbgLevel () const
 Debug level of the configuration file.
TraceMessage info (Int32 verbose_level) const
 Flow for an information message of a given level.
TraceMessage linfo () const
 Flow for an information message with the local information level of this instance.
TraceMessage linfo (Int32 relative_level) const
 Flow for an information message with the local information level of this instance.
void fatalMessage (const StandaloneTraceMessage &o) const

Private Member Functions

void _computeFacesUniqueIdsSequential ()
 Calculates the unique IDs for each face sequentially.
void _computeFacesUniqueIdsParallelV1 ()
 Calculates the unique numbers for each face in parallel.
void _computeFacesUniqueIdsParallelV2 ()
 Calculates the unique IDs for each face in parallel V2.
void _exchangeData (IParallelExchanger *exchanger, BoundaryInfosMap &boundary_infos_to_send)
void _checkNoDuplicate ()
 Checks that there are no duplicate uniqueIds.

Private Attributes

DynamicMeshm_mesh = nullptr
DynamicMeshIncrementalBuilderm_mesh_builder = nullptr

Additional Inherited Members

Protected Member Functions inherited from Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
Int32 _localVerboseLevel () const

Detailed Description

Construction of ghost layers.

Definition at line 37 of file FaceUniqueIdBuilder.h.

Member Typedef Documentation

◆ BoundaryInfosMap

using Arcane::mesh::FaceUniqueIdBuilder::BoundaryInfosMap = HashTableMapT<Int32, SharedArray<Int64>>

Definition at line 42 of file FaceUniqueIdBuilder.h.

◆ BoundaryInfosMapEnumerator

using Arcane::mesh::FaceUniqueIdBuilder::BoundaryInfosMapEnumerator = HashTableMapEnumeratorT<Int32, SharedArray<Int64>>

Definition at line 43 of file FaceUniqueIdBuilder.h.

Constructor & Destructor Documentation

◆ FaceUniqueIdBuilder()

Arcane::mesh::FaceUniqueIdBuilder::FaceUniqueIdBuilder ( DynamicMeshIncrementalBuilder * mesh_builder)
explicit

Constructs an instance for the mesh.

Definition at line 55 of file FaceUniqueIdBuilder.cc.

References Arcane::TraceAccessor::TraceAccessor(), and Arcane::TraceAccessor::traceMng().

Here is the call graph for this function:

Member Function Documentation

◆ _checkNoDuplicate()

void Arcane::mesh::FaceUniqueIdBuilder::_checkNoDuplicate ( )
private

Checks that there are no duplicate uniqueIds.

Definition at line 140 of file FaceUniqueIdBuilder.cc.

References ARCANE_FATAL, Arcane::mesh::ItemInternalMap::eachItem(), Arcane::TraceAccessor::info(), Arcane::TraceAccessor::pwarning(), and Arcane::Item::uniqueId().

Here is the call graph for this function:

◆ _computeFacesUniqueIdsParallelV1()

void Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV1 ( )
private

Calculates the unique numbers for each face in parallel.

In addition to numbering, it determines the owning sub-domain of each face, considering that a face belongs to the same sub-domain as the cell behind it (or to the current sub-domain for a boundary cell).

Todo
optimize the algorithm so as not to have to create an array sized to the total number of cells in the mesh (by proceeding in several steps)
Todo
find a more optimal algorithm for searching for the owner of each face to balance communications.

Definition at line 215 of file FaceUniqueIdBuilder.cc.

References Arcane::Array< T >::add(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::add(), Arcane::MutableItemBase::addFlags(), Arcane::IParallelMng::allGatherVariable(), ARCANE_FATAL, Arcane::Face::cell(), Arcane::Array< T >::clear(), Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::Array< T >::data(), Arcane::TraceAccessor::debug(), Arcane::mesh::ItemInternalMap::eachItem(), Arcane::TraceAccessor::error(), Arcane::Cell::faces(), Arcane::TraceAccessor::fatal(), Arcane::Array< T >::fill(), Arcane::mesh::ItemTools::findFaceInNode2(), Arcane::ItemBase::flags(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::hasKey(), Arcane::mesh::ItemInternalMap::hasKey(), Arcane::ItemFlags::II_HasBackCell, Arcane::ItemFlags::II_Shared, Arcane::ItemFlags::II_SubDomainBoundary, Arcane::TraceAccessor::info(), Arcane::Face::isSubDomainBoundary(), Arcane::Item::itemBase(), Arcane::Item::localId(), Arcane::String::localstr(), Arcane::Item::mutableItemBase(), Arcane::ItemTypeInfo::nbLocalNode(), Arcane::ItemWithNodes::nodes(), Arcane::Item::null(), Arcane::Item::owner(), Arcane::IParallelMng::reduce(), Arcane::MessagePassing::ReduceMax, Arcane::MessagePassing::ReduceSum, Arcane::Array< T >::reserve(), Arcane::AbstractArray< T >::size(), Arcane::mesh::ItemInternalMap::tryFind(), Arcane::Item::type(), Arcane::ItemTypeMng::typeFromId(), and Arcane::Item::uniqueId().

Here is the call graph for this function:

◆ _computeFacesUniqueIdsParallelV2()

void Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV2 ( )
private

Calculates the unique IDs for each face in parallel V2.

Note
This version is used for testing but has never been put into service and is now replaced by ...

Definition at line 683 of file FaceUniqueIdBuilder.cc.

References _exchangeData(), Arcane::Array< T >::add(), ARCANE_FATAL, Arcane::Face::backCell(), Arcane::IParallelMng::barrier(), Arcane::Array< T >::clear(), Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::ParallelMngUtils::createExchangerRef(), Arcane::TraceAccessor::debug(), Arcane::mesh::ItemInternalMap::eachItem(), Arcane::Array< T >::fill(), Arcane::ITraceMng::flush(), Arcane::Face::frontCell(), Arcane::RefImpl< InstanceType, RefClassType, ImplTagId >::get(), Arcane::ISerializer::getInt64(), Arcane::ISerializer::getSpan(), Arcane::TraceAccessor::info(), Arcane::Item::localId(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::lookupAdd(), Arcane::math::max(), Arcane::IItemFamily::maxLocalId(), Arcane::ISerializer::ModeGet, Arcane::Face::nbCell(), Arcane::ItemTypeInfo::nbLocalNode(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::node(), Arcane::ItemWithNodes::nodes(), Arcane::Item::null(), Arcane::ItemBase::null(), Arcane::IParallelMng::reduce(), Arcane::MessagePassing::ReduceMax, Arcane::Array< T >::reserve(), Arcane::Array< T >::resize(), Arcane::MessagePassing::ISerializeMessage::serializer(), Arcane::ISerializer::setMode(), Arcane::MutableItemBase::setOwner(), Arcane::TraceAccessor::traceMng(), Arcane::mesh::ItemInternalMap::tryFind(), Arcane::Item::type(), Arcane::ItemTypeMng::typeFromId(), and Arcane::Item::uniqueId().

Here is the call graph for this function:

◆ _computeFacesUniqueIdsSequential()

void Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsSequential ( )
private

Calculates the unique IDs for each face sequentially.

See also
computeFacesUniqueIds()

Definition at line 919 of file FaceUniqueIdBuilder.cc.

References Arcane::mesh::ItemInternalMap::eachItem(), Arcane::Cell::faces(), Arcane::TraceAccessor::info(), and Arcane::Item::uniqueId().

Here is the call graph for this function:

◆ _exchangeData()

◆ computeFacesUniqueIds()

void Arcane::mesh::FaceUniqueIdBuilder::computeFacesUniqueIds ( )

Definition at line 66 of file FaceUniqueIdBuilder.cc.

Member Data Documentation

◆ m_mesh

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

Definition at line 56 of file FaceUniqueIdBuilder.h.

◆ m_mesh_builder

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

Definition at line 57 of file FaceUniqueIdBuilder.h.


The documentation for this class was generated from the following files: