FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Geometry::RootMeshNode< RootMesh_ > Class Template Reference

Root mesh node class template. More...

#include <mesh_node.hpp>

Inheritance diagram for FEAT::Geometry::RootMeshNode< RootMesh_ >:
FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >

Public Types

typedef MeshNode< RootMesh_, RootMesh_ > BaseClass
 base class typedef More...
 
typedef BaseClass::MeshAtlasType MeshAtlasType
 mesh atlas type More...
 
typedef BaseClass::MeshChartType MeshChartType
 mesh chart type More...
 
typedef MeshPartNode< RootMeshTypeMeshPartNodeType
 the mesh part node type More...
 
typedef BaseClass::MeshPartType MeshPartType
 mesh part type More...
 
typedef BaseClass::MeshType MeshType
 this mesh type More...
 
typedef RootMesh_ RootMeshType
 the root mesh type, has to be a Mesh More...
 

Public Member Functions

 RootMeshNode (std::unique_ptr< MeshType > mesh, MeshAtlasType *atlas=nullptr)
 Constructor. More...
 
virtual ~RootMeshNode ()
 Virtual destructor. More...
 
void adapt (bool recursive=true)
 Adapts this mesh node. More...
 
bool adapt_by_name (const String &part_name, bool recursive=false)
 Adapts this mesh node. More...
 
void add_halo (int rank, std::unique_ptr< MeshPartType > halo_part)
 Adds a halo mesh part to this mesh node. More...
 
MeshPartNodeTypeadd_mesh_part (const String &part_name, std::unique_ptr< MeshPartType > mesh_part, const String &chart_name="", const MeshChartType *chart=nullptr)
 Adds a new mesh-part child node. More...
 
MeshPartNodeTypeadd_mesh_part_node (const String &part_name, std::unique_ptr< MeshPartNodeType > mesh_part_node, const String &chart_name="", const MeshChartType *chart=nullptr)
 Adds a new mesh-part child node. More...
 
MeshPartTypeadd_patch (int rank, std::unique_ptr< MeshPartType > patch_part)
 Adds a patch mesh part to this mesh node. More...
 
std::size_t bytes () const
 
void clear_halos ()
 Deletes all halo meshparts from this mesh node. More...
 
void clear_patches ()
 Deletes all patch meshparts from this mesh node. More...
 
std::unique_ptr< RootMeshNodeclone_unique () const
 Creates an independent clone of this object and returns a unique pointer to it. More...
 
void create_patch_meshpart (const Adjacency::Graph &elems_at_rank, const int rank)
 Creates a patch meshpart for a child and adds it to the patch map. More...
 
void create_permutation (PermutationStrategy strategy)
 Creates a mesh permutation. More...
 
std::unique_ptr< RootMeshNodeextract_patch (std::vector< Index > &&elements, bool split_meshparts, bool split_halos, bool split_patches)
 Extracts a patch from the root mesh as a new mesh node. More...
 
std::unique_ptr< RootMeshNodeextract_patch (std::vector< int > &comm_ranks, const Adjacency::Graph &elems_at_rank, const int rank)
 Extracts a patch from the root mesh as a new mesh node. More...
 
std::unique_ptr< RootMeshNodeextract_patch (std::vector< int > &comm_ranks, const Partition &partition, const int rank)
 Extracts a patch from a manual partition. More...
 
MeshPartTypefind_mesh_part (const String &part_name)
 Searches this container for a MeshPart. More...
 
const MeshPartTypefind_mesh_part (const String &part_name) const
 
const MeshChartTypefind_mesh_part_chart (const String &part_name) const
 Searches for a chart belonging to a MeshPart by name. More...
 
String find_mesh_part_chart_name (const String &part_name) const
 Searches for a chart name belonging to a MeshPart by name. More...
 
MeshPartNodeTypefind_mesh_part_node (const String &part_name)
 Searches this container for a MeshPartNode. More...
 
const MeshPartNodeTypefind_mesh_part_node (const String &part_name) const
 
const MeshAtlasTypeget_atlas () const
 
const MeshPartTypeget_halo (int rank) const
 Returns a halo meshpart for a given neighbor. More...
 
const std::map< int, std::unique_ptr< MeshPartType > > & get_halo_map () const
 
MeshTypeget_mesh ()
 Returns the mesh of this node. More...
 
const MeshTypeget_mesh () const
 
std::deque< Stringget_mesh_part_names (bool no_internals=false) const
 Returns the names of all mesh parts of this node. More...
 
const MeshPartTypeget_patch (int rank) const
 Returns a patch meshpart for a given child. More...
 
const std::map< int, std::unique_ptr< MeshPartType > > & get_patch_map () const
 
template<typename TemplateSet_ , typename VertexMarker_ >
std::unique_ptr< RootMeshNoderefine_partial_unique (const VertexMarker_ &marker, AdaptMode adapt_mode=AdaptMode::chart) const
 Refines this node and its sub-tree partially. More...
 
std::unique_ptr< RootMeshNoderefine_unique (AdaptMode adapt_mode=AdaptMode::chart) const
 Refines this node and its sub-tree. More...
 
void remove_all_mesh_parts ()
 Removes all mesh parts from this mesh node. More...
 
bool remove_mesh_part (const String &part_name)
 Removes a mesh-part and its corresponding node. More...
 
void rename_halos (const std::map< int, int > &ranks)
 Renames the halo meshparts. More...
 
void rename_mesh_parts (const std::map< String, String > &renames)
 Renames a set of mesh-parts. More...
 
void set_mesh (std::unique_ptr< MeshType > mesh)
 
bool set_mesh_part_chart (const String &part_name, const String &chart_name, const MeshChartType *chart)
 Sets the chart for a particular mesh part. More...
 
void set_permutation (MeshPermutation< typename MeshType::ShapeType > &&mesh_perm)
 Creates a mesh permutation. More...
 

Static Public Member Functions

static std::unique_ptr< RootMeshNodemake_unique (std::unique_ptr< MeshType > mesh, MeshAtlasType *atlas=nullptr)
 Creates a new RootMeshNode on the heap and returns a unique pointer to it. More...
 
static String name ()
 Returns the name of the class. More...
 

Protected Types

typedef MeshPartNodeContainer::const_iterator MeshPartNodeConstIterator
 submesh node const-iterator type More...
 
typedef std::map< String, MeshPartNodeBin > MeshPartNodeContainer
 submesh node bin container type More...
 
typedef MeshPartNodeContainer::iterator MeshPartNodeIterator
 submesh node iterator type More...
 
typedef MeshPartNodeContainer::reverse_iterator MeshPartNodeReverseIterator
 submesh node reverse-iterator type More...
 

Protected Member Functions

void _apply_mesh_perm_to_parts ()
 helper function: applies the mesh permutation to all mesh parts, halos and patches More...
 
void _clone (const RootMeshNode &other)
 
void refine_children (MeshNode &refined_node) const
 Refines all child nodes of this node. More...
 
void refine_mesh_parts (MeshNode &refined_node) const
 Refines all child MeshPart nodes of this node. More...
 

Protected Attributes

MeshAtlasType_atlas
 our atlas pointer More...
 
std::map< int, std::unique_ptr< MeshPartType > > _halos
 a map of our halo mesh-parts More...
 
std::unique_ptr< MeshType_mesh
 a pointer to the mesh of this node More...
 
MeshPartNodeContainer _mesh_part_nodes
 child submesh nodes More...
 
std::map< int, std::unique_ptr< MeshPartType > > _patches
 a map of our patch mesh-parts More...
 

Detailed Description

template<typename RootMesh_>
class FEAT::Geometry::RootMeshNode< RootMesh_ >

Root mesh node class template.

This class template is used for the root node of a mesh tree.

Author
Peter Zajac

Definition at line 746 of file mesh_node.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename RootMesh_ >
typedef MeshNode<RootMesh_, RootMesh_> FEAT::Geometry::RootMeshNode< RootMesh_ >::BaseClass

base class typedef

Definition at line 751 of file mesh_node.hpp.

◆ MeshAtlasType

template<typename RootMesh_ >
typedef BaseClass::MeshAtlasType FEAT::Geometry::RootMeshNode< RootMesh_ >::MeshAtlasType

mesh atlas type

Definition at line 758 of file mesh_node.hpp.

◆ MeshChartType

template<typename RootMesh_ >
typedef BaseClass::MeshChartType FEAT::Geometry::RootMeshNode< RootMesh_ >::MeshChartType

mesh chart type

Definition at line 760 of file mesh_node.hpp.

◆ MeshPartNodeConstIterator

typedef MeshPartNodeContainer::const_iterator FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::MeshPartNodeConstIterator
protectedinherited

submesh node const-iterator type

Definition at line 176 of file mesh_node.hpp.

◆ MeshPartNodeContainer

typedef std::map<String, MeshPartNodeBin> FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::MeshPartNodeContainer
protectedinherited

submesh node bin container type

Definition at line 172 of file mesh_node.hpp.

◆ MeshPartNodeIterator

typedef MeshPartNodeContainer::iterator FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::MeshPartNodeIterator
protectedinherited

submesh node iterator type

Definition at line 174 of file mesh_node.hpp.

◆ MeshPartNodeReverseIterator

typedef MeshPartNodeContainer::reverse_iterator FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::MeshPartNodeReverseIterator
protectedinherited

submesh node reverse-iterator type

Definition at line 178 of file mesh_node.hpp.

◆ MeshPartNodeType

typedef MeshPartNode<RootMeshType> FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::MeshPartNodeType
inherited

the mesh part node type

Definition at line 127 of file mesh_node.hpp.

◆ MeshPartType

template<typename RootMesh_ >
typedef BaseClass::MeshPartType FEAT::Geometry::RootMeshNode< RootMesh_ >::MeshPartType

mesh part type

Definition at line 756 of file mesh_node.hpp.

◆ MeshType

template<typename RootMesh_ >
typedef BaseClass::MeshType FEAT::Geometry::RootMeshNode< RootMesh_ >::MeshType

this mesh type

Definition at line 754 of file mesh_node.hpp.

◆ RootMeshType

typedef RootMesh_ FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::RootMeshType
inherited

the root mesh type, has to be a Mesh

Definition at line 121 of file mesh_node.hpp.

Constructor & Destructor Documentation

◆ RootMeshNode()

template<typename RootMesh_ >
FEAT::Geometry::RootMeshNode< RootMesh_ >::RootMeshNode ( std::unique_ptr< MeshType mesh,
MeshAtlasType atlas = nullptr 
)
inlineexplicit

Constructor.

Parameters
[in]meshA resident unique pointer to the mesh for this node.
[in]atlasA resident pointer to the atlas for this node.

Definition at line 804 of file mesh_node.hpp.

◆ ~RootMeshNode()

template<typename RootMesh_ >
virtual FEAT::Geometry::RootMeshNode< RootMesh_ >::~RootMeshNode ( )
inlinevirtual

Virtual destructor.

Definition at line 815 of file mesh_node.hpp.

Member Function Documentation

◆ _apply_mesh_perm_to_parts()

◆ _clone()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::_clone ( const RootMeshNode< RootMesh_ > &  other)
inlineprotected

Definition at line 771 of file mesh_node.hpp.

◆ adapt()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::adapt ( bool  recursive = true)
inlineinherited

Adapts this mesh node.

This function loops over all MeshPart nodes and uses their associated charts (if given) to adapt the mesh in this node.

Parameters
[in]recursiveIf set to true, all mesh_part nodes are adapted prior to adapting this node.

Definition at line 481 of file mesh_node.hpp.

◆ adapt_by_name()

bool FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::adapt_by_name ( const String part_name,
bool  recursive = false 
)
inlineinherited

Adapts this mesh node.

This function adapts this node by a specific chart whose name is given.

Parameters
[in]part_nameThe name of the mesh_part node that is to be used for adaption.
[in]recursiveIf set to true, the mesh_part node associated with part_name will be adapted prior to adapting this node.
Returns
true if this node was adapted successfully or false if no node is associated with part_name or if the node did not contain any chart.

Definition at line 523 of file mesh_node.hpp.

◆ add_halo()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::add_halo ( int  rank,
std::unique_ptr< MeshPartType halo_part 
)
inline

Adds a halo mesh part to this mesh node.

Parameters
[in]rankThe rank of the neighbor this halo belongs to.
[in]halo_partA resident unique pointer to the halo mesh part for the neighbor.

Definition at line 874 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_halos, and XASSERTM.

Referenced by FEAT::Control::Domain::VoxelDomainControl< DomainLevel_ >::_deslag_patch_halos(), and FEAT::Control::Domain::PartiDomainControlBase< DomainLevel_ >::_split_basemesh_halos().

◆ add_mesh_part()

MeshPartNodeType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::add_mesh_part ( const String part_name,
std::unique_ptr< MeshPartType mesh_part,
const String chart_name = "",
const MeshChartType chart = nullptr 
)
inlineinherited

Adds a new mesh-part child node.

Parameters
[in]part_nameThe name of the child node.
[in]mesh_partA resident unique pointer to the mesh_part to be added.
[in]chart_nameThe name of the chart that the mesh-part is to be linked to.
[in]chartA resident pointer to the chart that the subnode is to be associated with. May be nullptr.
Returns
A pointer to the newly created mesh-part node if the insertion was successful, otherwise nullptr.

Definition at line 316 of file mesh_node.hpp.

◆ add_mesh_part_node()

MeshPartNodeType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::add_mesh_part_node ( const String part_name,
std::unique_ptr< MeshPartNodeType mesh_part_node,
const String chart_name = "",
const MeshChartType chart = nullptr 
)
inlineinherited

Adds a new mesh-part child node.

Parameters
[in]part_nameThe name of the child node.
[in]mesh_part_nodeA resident unique pointer to the mesh_part node to be added.
[in]chart_nameThe name of the chart that the mesh-part is to be linked to.
[in]chartA resident pointer to the chart that the subnode is to be associated with. May be nullptr.
Returns
mesh_part_node.get() if the insertion was successful, otherwise nullptr.

Definition at line 281 of file mesh_node.hpp.

◆ add_patch()

template<typename RootMesh_ >
MeshPartType * FEAT::Geometry::RootMeshNode< RootMesh_ >::add_patch ( int  rank,
std::unique_ptr< MeshPartType patch_part 
)
inline

Adds a patch mesh part to this mesh node.

Parameters
[in]rankThe rank of the child this patch belongs to.
[in]patch_partA resident pointer to the patch mesh part for the child.
Returns
A pointer to the inserted patch mesh part.

Definition at line 947 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_patches, and XASSERT.

Referenced by FEAT::Geometry::RootMeshNode< RootMesh_ >::create_patch_meshpart(), and FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch().

◆ bytes()

template<typename RootMesh_ >
std::size_t FEAT::Geometry::RootMeshNode< RootMesh_ >::bytes ( ) const
inline

◆ clear_halos()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::clear_halos ( )
inline

Deletes all halo meshparts from this mesh node.

Definition at line 902 of file mesh_node.hpp.

◆ clear_patches()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::clear_patches ( )
inline

Deletes all patch meshparts from this mesh node.

Definition at line 975 of file mesh_node.hpp.

◆ clone_unique()

template<typename RootMesh_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::clone_unique ( ) const
inline

Creates an independent clone of this object and returns a unique pointer to it.

Returns
A unique pointer to the newly created clone object.

Definition at line 847 of file mesh_node.hpp.

◆ create_patch_meshpart()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::create_patch_meshpart ( const Adjacency::Graph elems_at_rank,
const int  rank 
)
inline

Creates a patch meshpart for a child and adds it to the patch map.

Parameters
[in]elems_at_rankA transient reference to the adjacency graph that describes which elements belong to each child rank.
[in]rankThe child rank for which the patch meshpart is to be created.

Definition at line 1485 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::add_patch(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh(), and FEAT::Geometry::Factory< MeshPart< MeshType_ > >::make_unique().

◆ create_permutation()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::create_permutation ( PermutationStrategy  strategy)
inline

Creates a mesh permutation.

This function creates a permutation based on one of the standards permutation strategies and also permutes the mesh parts, halos and patches stored in this mesh node.

See also
ConformalMesh::create_permutation()
Note
If you want to use a custom permutation other than one of the standard permutation strategies then use set_permutation() instead.

Definition at line 1511 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_apply_mesh_perm_to_parts(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh, and XASSERTM.

◆ extract_patch() [1/3]

template<typename RootMesh_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch ( std::vector< Index > &&  elements,
bool  split_meshparts,
bool  split_halos,
bool  split_patches 
)
inline

Extracts a patch from the root mesh as a new mesh node.

Parameters
[in]elementsA vector containing the indices of the patch elements.
[in]split_meshpartsSpecifies whether the mesh-parts of the mesh node are to be extracted. If false, then the returned mesh node will not contain any mesh parts.
[in]split_halosSpecifies whether the halos of the mesh node are to be extracted. If false, then the returned mesh node will not contain any halos.
[in]split_patchesSpecifies whether the patch mesh-parts of the mesh node are to be extracted. If false, then the returned mesh node will not contain any patch mesh parts.
Returns
A unique pointer to the new mesh node representing the extracted patch.

Definition at line 1151 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::add_patch(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart_name(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_node(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh_part_names(), FEAT::Geometry::Factory< MeshPart< MeshType_ > >::make_unique(), FEAT::Geometry::RootMeshNode< RootMesh_ >::make_unique(), and XASSERTM.

Referenced by FEAT::Control::Domain::VoxelDomainControl< DomainLevel_ >::_deslag_mesh_node(), and FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch().

◆ extract_patch() [2/3]

template<typename RootMesh_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch ( std::vector< int > &  comm_ranks,
const Adjacency::Graph elems_at_rank,
const int  rank 
)
inline

Extracts a patch from the root mesh as a new mesh node.

This function also computes the communication neighbor ranks.

Parameters
[out]comm_ranksA transient reference to the communication neighbor ranks vector for this process.
[in]elems_at_rankA transient reference to the elements-at-rank graph representing the partitioning from which the patch is to be extracted.
[in]rankThe rank of the patch to be created.
Returns
A unique pointer to the new mesh node representing the extracted patch.

Definition at line 1296 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::add_patch(), FEAT::Geometry::PatchMeshPartFactory< MeshType_ >::empty(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart_name(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_node(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh_part_names(), FEAT::Adjacency::Graph::image_begin(), FEAT::Adjacency::Graph::image_end(), FEAT::Adjacency::injectify, FEAT::Geometry::Factory< MeshPart< MeshType_ > >::make_unique(), FEAT::Geometry::RootMeshNode< RootMesh_ >::make_unique(), FEAT::stringify(), FEAT::Adjacency::transpose, XABORTM, and XASSERTM.

◆ extract_patch() [3/3]

template<typename RootMesh_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch ( std::vector< int > &  comm_ranks,
const Partition partition,
const int  rank 
)
inline

Extracts a patch from a manual partition.

This function also computes the communication ranks.

Parameters
[out]comm_ranksA transient reference to the communication ranks vector for this rank.
[in]partitionA transient reference to the partition from which the patch is to be extracted.
[in]rankThe rank of the patch to be created.
Returns
A unique pointer to the new mesh node representing the extracted patch.

Definition at line 1468 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch(), and FEAT::Geometry::Partition::get_patches().

◆ find_mesh_part() [1/2]

MeshPartType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part ( const String part_name)
inlineinherited

Searches this container for a MeshPart.

Parameters
[in]part_nameThe name of the node associated with the mesh_part to be found.
Returns
A pointer to the mesh_part associated with part_name or nullptr if no such node was found.

Definition at line 398 of file mesh_node.hpp.

◆ find_mesh_part() [2/2]

const MeshPartType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part ( const String part_name) const
inlineinherited

Searches this container for a MeshPart.

Parameters
[in]part_nameThe name of the node associated with the mesh_part to be found.
Returns
A pointer to the mesh_part associated with part_name or nullptr if no such node was found.

Definition at line 405 of file mesh_node.hpp.

◆ find_mesh_part_chart()

const MeshChartType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart ( const String part_name) const
inlineinherited

Searches for a chart belonging to a MeshPart by name.

Parameters
[in]part_nameThe name of the node associated with the chart to be found.
Returns
A pointer to the chart associated with part_name of nullptr if no such node was found or if the corresponding node did not have a chart.

Definition at line 421 of file mesh_node.hpp.

◆ find_mesh_part_chart_name()

String FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_chart_name ( const String part_name) const
inlineinherited

Searches for a chart name belonging to a MeshPart by name.

Parameters
[in]part_nameThe name of the node associated with the chart to be found.
Returns
The name of the chart associated with part_name or an empty string is no such node was found.

Definition at line 437 of file mesh_node.hpp.

◆ find_mesh_part_node() [1/2]

MeshPartNodeType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_node ( const String part_name)
inlineinherited

Searches this container for a MeshPartNode.

Parameters
[in]part_nameThe name of the node to be found.
Returns
A pointer to the mesh_part node associated with part_name or nullptr if no such node was found.

Definition at line 376 of file mesh_node.hpp.

◆ find_mesh_part_node() [2/2]

const MeshPartNodeType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::find_mesh_part_node ( const String part_name) const
inlineinherited

Searches this container for a MeshPartNode.

Parameters
[in]part_nameThe name of the node to be found.
Returns
A pointer to the mesh_part node associated with part_name or nullptr if no such node was found.

Definition at line 383 of file mesh_node.hpp.

◆ get_atlas()

◆ get_halo()

template<typename RootMesh_ >
const MeshPartType * FEAT::Geometry::RootMeshNode< RootMesh_ >::get_halo ( int  rank) const
inline

Returns a halo meshpart for a given neighbor.

Parameters
[in]rankThe rank of the neighbor for which the halo is to be returned.
Returns
A pointer to the halo mesh part for the neighbor or nullptr, if no halo for this neighbor rank exists.

Definition at line 889 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_halos.

◆ get_halo_map()

◆ get_mesh() [1/2]

MeshType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh ( )
inlineinherited

Returns the mesh of this node.

Returns
A pointer to the mesh contained in this node.

Definition at line 225 of file mesh_node.hpp.

◆ get_mesh() [2/2]

const MeshType * FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh ( ) const
inlineinherited

Returns the mesh of this node.

Returns
A pointer to the mesh contained in this node.

Definition at line 231 of file mesh_node.hpp.

◆ get_mesh_part_names()

std::deque< String > FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::get_mesh_part_names ( bool  no_internals = false) const
inlineinherited

Returns the names of all mesh parts of this node.

Parameters
[in]no_internalsSpecifies whether to skip all internal mesh-parts whose names begin with an underscore.
Returns
A deque of all mesh-part names in this node.

Definition at line 251 of file mesh_node.hpp.

◆ get_patch()

◆ get_patch_map()

template<typename RootMesh_ >
const std::map< int, std::unique_ptr< MeshPartType > > & FEAT::Geometry::RootMeshNode< RootMesh_ >::get_patch_map ( ) const
inline
Returns
A reference to the internal child-patch map.

Definition at line 969 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_patches.

◆ make_unique()

template<typename RootMesh_ >
static std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::make_unique ( std::unique_ptr< MeshType mesh,
MeshAtlasType atlas = nullptr 
)
inlinestatic

Creates a new RootMeshNode on the heap and returns a unique pointer to it.

Parameters
[in]meshA resident unique pointer to the mesh for the newly created node.
[in]atlasA resident pointer to the atlas for the newly created node.
Returns
A unique pointer to the new RootMeshNode object.

Definition at line 837 of file mesh_node.hpp.

Referenced by FEAT::Geometry::RootMeshNode< RootMesh_ >::extract_patch(), FEAT::Geometry::MeshFileReader::parse(), FEAT::Geometry::RootMeshNode< RootMesh_ >::refine_partial_unique(), and FEAT::Geometry::RootMeshNode< RootMesh_ >::refine_unique().

◆ name()

template<typename RootMesh_ >
static String FEAT::Geometry::RootMeshNode< RootMesh_ >::name ( )
inlinestatic

Returns the name of the class.

Returns
The name of the class as a String.

Definition at line 1546 of file mesh_node.hpp.

◆ refine_children()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::refine_children ( MeshNode< RootMesh_, RootMesh_ > &  refined_node) const
inlineprotectedinherited

Refines all child nodes of this node.

Parameters
[in,out]refined_nodeA reference to the node generated by refining this node.

Definition at line 565 of file mesh_node.hpp.

◆ refine_mesh_parts()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::refine_mesh_parts ( MeshNode< RootMesh_, RootMesh_ > &  refined_node) const
inlineprotectedinherited

Refines all child MeshPart nodes of this node.

Parameters
[in,out]refined_nodeA reference to the node generated by refining this node.

Definition at line 577 of file mesh_node.hpp.

◆ refine_partial_unique()

template<typename RootMesh_ >
template<typename TemplateSet_ , typename VertexMarker_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::refine_partial_unique ( const VertexMarker_ &  marker,
AdaptMode  adapt_mode = AdaptMode::chart 
) const
inline

Refines this node and its sub-tree partially.

Parameters
[in]adapt_modeMode for adaption, defaults to chart.
Returns
A unique pointer to a newly created RootMeshNode containing the refined mesh tree.

Definition at line 1050 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_halos, FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh, FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh_part_nodes, FEAT::Geometry::RootMeshNode< RootMesh_ >::_patches, and FEAT::Geometry::RootMeshNode< RootMesh_ >::make_unique().

◆ refine_unique()

template<typename RootMesh_ >
std::unique_ptr< RootMeshNode > FEAT::Geometry::RootMeshNode< RootMesh_ >::refine_unique ( AdaptMode  adapt_mode = AdaptMode::chart) const
inline

Refines this node and its sub-tree.

Parameters
[in]adapt_modeMode for adaption, defaults to chart.
Returns
A unique pointer to a newly created RootMeshNode containing the refined mesh tree.

Definition at line 989 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_halos, FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh, FEAT::Geometry::RootMeshNode< RootMesh_ >::_patches, FEAT::Geometry::RootMeshNode< RootMesh_ >::make_unique(), and FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::refine_children().

◆ remove_all_mesh_parts()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::remove_all_mesh_parts ( )
inlineinherited

Removes all mesh parts from this mesh node.

Definition at line 339 of file mesh_node.hpp.

◆ remove_mesh_part()

bool FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::remove_mesh_part ( const String part_name)
inlineinherited

Removes a mesh-part and its corresponding node.

Parameters
[in]part_nameThe name of the child node to be removed
Returns
true, if a mesh-part with the corresponding name was removed, otherwise false.

Definition at line 333 of file mesh_node.hpp.

◆ rename_halos()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::rename_halos ( const std::map< int, int > &  ranks)
inline

Renames the halo meshparts.

This function can be used to rename the halo meshparts when the rank ordering in the communicator has changed.

Parameters
[in]ranksAn map of oldrank-newrank pairs.

Definition at line 916 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_halos.

◆ rename_mesh_parts()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::rename_mesh_parts ( const std::map< String, String > &  renames)
inlineinherited

Renames a set of mesh-parts.

Parameters
[in]renamesA transient map of oldname-newname pairs.

Definition at line 449 of file mesh_node.hpp.

◆ set_mesh()

void FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::set_mesh ( std::unique_ptr< MeshType mesh)
inlineinherited

Definition at line 236 of file mesh_node.hpp.

◆ set_mesh_part_chart()

bool FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::set_mesh_part_chart ( const String part_name,
const String chart_name,
const MeshChartType chart 
)
inlineinherited

Sets the chart for a particular mesh part.

Parameters
[in]part_nameThe name of the mesh part that the chart is to be assigned to.
[in]chartA resident pointer to the chart that is to be assigned. May also be nullptr.
Returns
true if the chart was assigned successfully or false if no mesh part with the specified name was found.

Definition at line 357 of file mesh_node.hpp.

◆ set_permutation()

template<typename RootMesh_ >
void FEAT::Geometry::RootMeshNode< RootMesh_ >::set_permutation ( MeshPermutation< typename MeshType::ShapeType > &&  mesh_perm)
inline

Creates a mesh permutation.

This function creates a permutation based on one of the standards permutation strategies and also permutes the mesh parts, halos and patches stored in this mesh node.

See also
ConformalMesh::set_permutation()

Definition at line 1530 of file mesh_node.hpp.

References FEAT::Geometry::RootMeshNode< RootMesh_ >::_apply_mesh_perm_to_parts(), FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh, and XASSERTM.

Member Data Documentation

◆ _atlas

template<typename RootMesh_ >
MeshAtlasType* FEAT::Geometry::RootMeshNode< RootMesh_ >::_atlas
protected

our atlas pointer

Definition at line 764 of file mesh_node.hpp.

Referenced by FEAT::Geometry::RootMeshNode< RootMesh_ >::get_atlas().

◆ _halos

◆ _mesh

std::unique_ptr<MeshType> FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh
protectedinherited

a pointer to the mesh of this node

Definition at line 182 of file mesh_node.hpp.

◆ _mesh_part_nodes

MeshPartNodeContainer FEAT::Geometry::MeshNode< RootMesh_, RootMesh_ >::_mesh_part_nodes
protectedinherited

child submesh nodes

Definition at line 184 of file mesh_node.hpp.

◆ _patches


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