IOSS 2.0
Loading...
Searching...
No Matches
Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology > Class Template Referenceabstract

#include <Iotm_TextMeshAdjacencyGraph.h>

Inheritance diagram for Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >:
[legend]

Classes

struct  CurrentAdjacency
 
struct  FaceConnection
 
struct  FaceConnections
 
struct  StringCaseCompLess
 

Public Types

using IndexType = int64_t
 

Public Member Functions

virtual size_t get_num_elements () const =0
 
virtual int get_element_proc (const size_t elemIndex) const =0
 
virtual bool element_has_any_node_on_proc (const size_t elemIndex, int proc) const =0
 
virtual const std::string & get_element_block_name (const size_t elemIndex) const =0
 
virtual const std::vector< EntityId > & get_element_node_ids (const size_t elemIndex) const =0
 
virtual const Topologyget_element_topology (const size_t elemIndex) const =0
 
virtual EntityId get_element_id (const size_t elemIndex) const =0
 
 SideAdjacencyGraph ()
 
virtual ~SideAdjacencyGraph ()=default
 
void create_graph (int proc=ANY_PROC)
 
void create_graph (const std::vector< std::string > &selectedBlocks, int proc=ANY_PROC)
 
void set_error_handler (ErrorHandler errorHandler)
 
void dump (std::ostream &out=std::cout)
 
void dump (const std::vector< ElementData< EntityId, Topology > > &elemDataVec, std::ostream &out=std::cout)
 
const FaceConnectionsoperator[] (const IndexType elemIndex) const
 
size_t size () const
 
std::unordered_map< size_t, FaceConnections >::const_iterator begin () const
 
std::unordered_map< size_t, FaceConnections >::const_iterator end () const
 

Static Public Attributes

static constexpr int ANY_PROC = -1
 
static constexpr int INVALID_SIDE = -1
 
static constexpr IndexType INVALID_INDEX = -1
 

Protected Types

using OrdinalType = typename Topology::Ordinal
 
using PermutationType = typename Topology::Permutation
 
using Criterion = std::function<bool(const Topology &topo1, const Topology &topo2)>
 

Protected Member Functions

std::set< size_t > get_element_indices_with_common_nodes_on_side (const size_t elemIndex, int side, const std::unordered_map< EntityId, std::set< size_t > > &elementsForNode)
 
std::vector< EntityIdget_side_nodes (const size_t elemIndex, const int side)
 
std::vector< EntityIdget_sorted_side_nodes (const size_t elemIndex, const int side)
 
void internal_fill_sides_for_connected_element (CurrentAdjacency &adjacency, size_t neighborElementIndex)
 
void fill_sides_for_connected_element (CurrentAdjacency &adjacency, size_t neighborElementIndex)
 
bool equivalent_node_permutation (const std::vector< EntityId > &controlNodes, const std::vector< EntityId > &permutedNodes, const std::vector< OrdinalType > &permutationOrdinals)
 
std::pair< bool, PermutationTypeget_permutation (const Topology &topology, const std::vector< EntityId > &controlNodes, const std::vector< EntityId > &permutedNodes, PermutationType numPermutations)
 
std::pair< bool, PermutationTypeget_permutation (const Topology &topology, const std::vector< EntityId > &controlNodes, const std::vector< EntityId > &permutedNodes)
 
std::pair< bool, PermutationTypeget_positive_permutation (const Topology &topology, const std::vector< EntityId > &controlNodes, const std::vector< EntityId > &permutedNodes)
 
bool has_same_polarity (const size_t thisElem, const int thisSide, const size_t thatElem, const int thatSide)
 
bool verify_entry (IndexType elemIndex, int side)
 
std::vector< FaceConnectionget_reciprocity (CurrentAdjacency &adjacency)
 
void break_reciprocal_connections (CurrentAdjacency &adjacency)
 
bool is_shell_shell_connection (const Topology &thisElemTopology, const Topology &thatElemTopology)
 
bool is_shell_shell_connection (const size_t thisElem, const size_t thatElem)
 
bool is_shell_solid_connection (const Topology &thisElemTopology, const Topology &thatElemTopology)
 
bool is_shell_solid_connection (const size_t thisElem, const size_t thatElem)
 
bool is_solid_shell_connection (const Topology &thisElemTopology, const Topology &thatElemTopology)
 
bool is_solid_shell_connection (const size_t thisElem, const size_t thatElem)
 
bool is_solid_solid_connection (const Topology &thisElemTopology, const Topology &thatElemTopology)
 
bool is_solid_solid_connection (const size_t thisElem, const size_t thatElem)
 
bool has_connection_type_on_side (size_t thisIndex, int thisSide, Criterion criterion)
 
bool has_any_shell_connection_on_side (size_t thisIndex, int thisSide)
 
bool has_shell_shell_connection_on_side (size_t thisIndex, int thisSide)
 
bool has_shell_solid_connection_on_side (size_t thisIndex, int thisSide)
 
bool has_solid_shell_connection_on_side (size_t thisIndex, int thisSide)
 
bool has_solid_solid_connection_on_side (size_t thisIndex, int thisSide)
 
void add_connection (CurrentAdjacency &adjacency, size_t connectedElementIndex, int otherSide)
 
void set_side_connectivity (CurrentAdjacency &adjacency, size_t connectedElementIndex)
 
void enforce_coincident_shell_ownership (IndexType connectedElemIndex1, IndexType connectedElemIndex2)
 
void process_side_connectivity (CurrentAdjacency &adjacency, const std::unordered_map< EntityId, std::set< size_t > > &elementsForNode)
 
void build_side_connectivity_graph (const std::vector< size_t > &elementIndices, const std::unordered_map< EntityId, std::set< size_t > > &elementsForNode)
 
void initialize_side_connectivity_graph (const std::vector< size_t > &elementIndices)
 
std::unordered_map< EntityId, std::set< size_t > > get_elements_for_node_map (const std::vector< size_t > &elementIndices)
 
bool element_is_in_selected_blocks (const size_t elemIndex, const std::vector< std::string > &sortedSelectedBlocks)
 
bool is_selected_element (const size_t elemIndex, const std::vector< std::string > &sortedSelectedBlocks, int proc)
 
std::vector< size_t > get_local_and_aura_elements (const std::vector< std::string > &selectedBlocks, int proc)
 

Protected Attributes

ErrorHandler m_errorHandler
 
std::unordered_map< size_t, FaceConnectionsm_indexGraph
 

Member Typedef Documentation

◆ Criterion

template<typename EntityId , typename Topology >
using Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::Criterion = std::function<bool(const Topology &topo1, const Topology &topo2)>
protected

◆ IndexType

template<typename EntityId , typename Topology >
using Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::IndexType = int64_t

◆ OrdinalType

template<typename EntityId , typename Topology >
using Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::OrdinalType = typename Topology::Ordinal
protected

◆ PermutationType

template<typename EntityId , typename Topology >
using Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::PermutationType = typename Topology::Permutation
protected

Constructor & Destructor Documentation

◆ SideAdjacencyGraph()

◆ ~SideAdjacencyGraph()

template<typename EntityId , typename Topology >
virtual Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::~SideAdjacencyGraph ( )
virtualdefault

Member Function Documentation

◆ add_connection()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::add_connection ( CurrentAdjacency & adjacency,
size_t connectedElementIndex,
int otherSide )
inlineprotected

◆ begin()

template<typename EntityId , typename Topology >
std::unordered_map< size_t, FaceConnections >::const_iterator Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::begin ( ) const
inline

◆ break_reciprocal_connections()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::break_reciprocal_connections ( CurrentAdjacency & adjacency)
inlineprotected

◆ build_side_connectivity_graph()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::build_side_connectivity_graph ( const std::vector< size_t > & elementIndices,
const std::unordered_map< EntityId, std::set< size_t > > & elementsForNode )
inlineprotected

◆ create_graph() [1/2]

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::create_graph ( const std::vector< std::string > & selectedBlocks,
int proc = ANY_PROC )
inline

◆ create_graph() [2/2]

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::create_graph ( int proc = ANY_PROC)
inline

◆ dump() [1/2]

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::dump ( const std::vector< ElementData< EntityId, Topology > > & elemDataVec,
std::ostream & out = std::cout )
inline

◆ dump() [2/2]

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::dump ( std::ostream & out = std::cout)
inline

◆ element_has_any_node_on_proc()

◆ element_is_in_selected_blocks()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::element_is_in_selected_blocks ( const size_t elemIndex,
const std::vector< std::string > & sortedSelectedBlocks )
inlineprotected

◆ end()

template<typename EntityId , typename Topology >
std::unordered_map< size_t, FaceConnections >::const_iterator Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::end ( ) const
inline

◆ enforce_coincident_shell_ownership()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::enforce_coincident_shell_ownership ( IndexType connectedElemIndex1,
IndexType connectedElemIndex2 )
inlineprotected

◆ equivalent_node_permutation()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::equivalent_node_permutation ( const std::vector< EntityId > & controlNodes,
const std::vector< EntityId > & permutedNodes,
const std::vector< OrdinalType > & permutationOrdinals )
inlineprotected

◆ fill_sides_for_connected_element()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::fill_sides_for_connected_element ( CurrentAdjacency & adjacency,
size_t neighborElementIndex )
inlineprotected

◆ get_element_block_name()

◆ get_element_id()

◆ get_element_indices_with_common_nodes_on_side()

template<typename EntityId , typename Topology >
std::set< size_t > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_element_indices_with_common_nodes_on_side ( const size_t elemIndex,
int side,
const std::unordered_map< EntityId, std::set< size_t > > & elementsForNode )
inlineprotected

◆ get_element_node_ids()

◆ get_element_proc()

◆ get_element_topology()

◆ get_elements_for_node_map()

template<typename EntityId , typename Topology >
std::unordered_map< EntityId, std::set< size_t > > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_elements_for_node_map ( const std::vector< size_t > & elementIndices)
inlineprotected

◆ get_local_and_aura_elements()

template<typename EntityId , typename Topology >
std::vector< size_t > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_local_and_aura_elements ( const std::vector< std::string > & selectedBlocks,
int proc )
inlineprotected

◆ get_num_elements()

◆ get_permutation() [1/2]

template<typename EntityId , typename Topology >
std::pair< bool, PermutationType > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_permutation ( const Topology & topology,
const std::vector< EntityId > & controlNodes,
const std::vector< EntityId > & permutedNodes )
inlineprotected

◆ get_permutation() [2/2]

template<typename EntityId , typename Topology >
std::pair< bool, PermutationType > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_permutation ( const Topology & topology,
const std::vector< EntityId > & controlNodes,
const std::vector< EntityId > & permutedNodes,
PermutationType numPermutations )
inlineprotected

◆ get_positive_permutation()

template<typename EntityId , typename Topology >
std::pair< bool, PermutationType > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_positive_permutation ( const Topology & topology,
const std::vector< EntityId > & controlNodes,
const std::vector< EntityId > & permutedNodes )
inlineprotected

◆ get_reciprocity()

template<typename EntityId , typename Topology >
std::vector< FaceConnection > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_reciprocity ( CurrentAdjacency & adjacency)
inlineprotected

◆ get_side_nodes()

template<typename EntityId , typename Topology >
std::vector< EntityId > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_side_nodes ( const size_t elemIndex,
const int side )
inlineprotected

◆ get_sorted_side_nodes()

template<typename EntityId , typename Topology >
std::vector< EntityId > Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::get_sorted_side_nodes ( const size_t elemIndex,
const int side )
inlineprotected

◆ has_any_shell_connection_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_any_shell_connection_on_side ( size_t thisIndex,
int thisSide )
inlineprotected

◆ has_connection_type_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_connection_type_on_side ( size_t thisIndex,
int thisSide,
Criterion criterion )
inlineprotected

◆ has_same_polarity()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_same_polarity ( const size_t thisElem,
const int thisSide,
const size_t thatElem,
const int thatSide )
inlineprotected

◆ has_shell_shell_connection_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_shell_shell_connection_on_side ( size_t thisIndex,
int thisSide )
inlineprotected

◆ has_shell_solid_connection_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_shell_solid_connection_on_side ( size_t thisIndex,
int thisSide )
inlineprotected

◆ has_solid_shell_connection_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_solid_shell_connection_on_side ( size_t thisIndex,
int thisSide )
inlineprotected

◆ has_solid_solid_connection_on_side()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::has_solid_solid_connection_on_side ( size_t thisIndex,
int thisSide )
inlineprotected

◆ initialize_side_connectivity_graph()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::initialize_side_connectivity_graph ( const std::vector< size_t > & elementIndices)
inlineprotected

◆ internal_fill_sides_for_connected_element()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::internal_fill_sides_for_connected_element ( CurrentAdjacency & adjacency,
size_t neighborElementIndex )
inlineprotected

◆ is_selected_element()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_selected_element ( const size_t elemIndex,
const std::vector< std::string > & sortedSelectedBlocks,
int proc )
inlineprotected

◆ is_shell_shell_connection() [1/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_shell_shell_connection ( const size_t thisElem,
const size_t thatElem )
inlineprotected

◆ is_shell_shell_connection() [2/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_shell_shell_connection ( const Topology & thisElemTopology,
const Topology & thatElemTopology )
inlineprotected

◆ is_shell_solid_connection() [1/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_shell_solid_connection ( const size_t thisElem,
const size_t thatElem )
inlineprotected

◆ is_shell_solid_connection() [2/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_shell_solid_connection ( const Topology & thisElemTopology,
const Topology & thatElemTopology )
inlineprotected

◆ is_solid_shell_connection() [1/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_solid_shell_connection ( const size_t thisElem,
const size_t thatElem )
inlineprotected

◆ is_solid_shell_connection() [2/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_solid_shell_connection ( const Topology & thisElemTopology,
const Topology & thatElemTopology )
inlineprotected

◆ is_solid_solid_connection() [1/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_solid_solid_connection ( const size_t thisElem,
const size_t thatElem )
inlineprotected

◆ is_solid_solid_connection() [2/2]

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::is_solid_solid_connection ( const Topology & thisElemTopology,
const Topology & thatElemTopology )
inlineprotected

◆ operator[]()

template<typename EntityId , typename Topology >
const FaceConnections & Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::operator[] ( const IndexType elemIndex) const
inline

◆ process_side_connectivity()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::process_side_connectivity ( CurrentAdjacency & adjacency,
const std::unordered_map< EntityId, std::set< size_t > > & elementsForNode )
inlineprotected

◆ set_error_handler()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::set_error_handler ( ErrorHandler errorHandler)
inline

◆ set_side_connectivity()

template<typename EntityId , typename Topology >
void Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::set_side_connectivity ( CurrentAdjacency & adjacency,
size_t connectedElementIndex )
inlineprotected

◆ size()

template<typename EntityId , typename Topology >
size_t Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::size ( ) const
inline

◆ verify_entry()

template<typename EntityId , typename Topology >
bool Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::verify_entry ( IndexType elemIndex,
int side )
inlineprotected

Member Data Documentation

◆ ANY_PROC

template<typename EntityId , typename Topology >
constexpr int Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::ANY_PROC = -1
staticconstexpr

◆ INVALID_INDEX

template<typename EntityId , typename Topology >
constexpr IndexType Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::INVALID_INDEX = -1
staticconstexpr

◆ INVALID_SIDE

template<typename EntityId , typename Topology >
constexpr int Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::INVALID_SIDE = -1
staticconstexpr

◆ m_errorHandler

template<typename EntityId , typename Topology >
ErrorHandler Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::m_errorHandler
protected

◆ m_indexGraph

template<typename EntityId , typename Topology >
std::unordered_map<size_t, FaceConnections> Iotm::text_mesh::SideAdjacencyGraph< EntityId, Topology >::m_indexGraph
protected

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