IOSS 2.0
Loading...
Searching...
No Matches
Ioss::Decomposition< INT > Class Template Reference

#include <Ioss_Decomposition.h>

Collaboration diagram for Ioss::Decomposition< INT >:
[legend]

Public Member Functions

 Decomposition (const Ioss::PropertyManager &props, Ioss_MPI_Comm comm)
 
 Decomposition (Decomposition const &)=default
 
 Decomposition (Decomposition &&)=default
 
Decompositionoperator= (Decomposition const &)=default
 
Decompositionoperator= (Decomposition &&)=default
 
IOSS_NODISCARD size_t global_node_count () const
 
IOSS_NODISCARD size_t global_elem_count () const
 
IOSS_NODISCARD size_t ioss_node_count () const
 
IOSS_NODISCARD size_t ioss_elem_count () const
 
IOSS_NODISCARD size_t file_node_count () const
 
IOSS_NODISCARD size_t file_elem_count () const
 
IOSS_NODISCARD size_t file_node_offset () const
 
IOSS_NODISCARD size_t file_elem_offset () const
 
IOSS_NODISCARD bool needs_centroids () const
 
void generate_entity_distributions (size_t global_node_count, size_t global_element_count)
 
IOSS_NODISCARD bool i_own_node (size_t global_index) const
 
IOSS_NODISCARD bool i_own_elem (size_t global_index) const
 
IOSS_NODISCARD size_t node_global_to_local (size_t global_index) const
 
IOSS_NODISCARD size_t elem_global_to_local (size_t global_index) const
 
void show_progress (const std::string &message) const
 
void release_memory ()
 
void decompose_model (Zoltan &zz, std::vector< BlockDecompositionData > &element_blocks)
 
void simple_decompose ()
 
void simple_node_decompose ()
 
void guided_decompose ()
 
void calculate_element_centroids (const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z)
 
void zoltan_decompose (Zoltan &zz)
 
void get_local_element_list (const ZOLTAN_ID_PTR &export_global_ids, size_t export_count)
 
void metis_decompose (idx_t *pointer, idx_t *adjacency, std::vector< BlockDecompositionData > &el_blocks)
 
void internal_metis_decompose (std::vector< BlockDecompositionData > &el_blocks, idx_t *element_dist, idx_t *pointer, idx_t *adjacency, idx_t *elem_partition)
 
void get_node_entity_proc_data (INT *entity_proc, const Ioss::MapContainer &node_map, bool do_map) const
 
void get_element_block_communication (std::vector< BlockDecompositionData > &el_blocks)
 
void build_global_to_local_elem_map ()
 
void get_local_node_list ()
 
void get_shared_node_list ()
 
template<typename T >
void communicate_element_data (T *file_data, T *ioss_data, size_t comp_count) const
 
template<typename T >
void communicate_set_data (T *file_data, T *ioss_data, const SetDecompositionData &set, size_t comp_count) const
 
template<typename T , typename U >
void communicate_block_data (T *file_data, U *ioss_data, const BlockDecompositionData &block, size_t comp_count) const
 
template<typename T , typename U >
IOSS_NODISCARD std::vector< size_t > do_communicate_entity_data (T *file_data, U *ioss_data, const std::vector< BlockDecompositionData > &blocks, const std::vector< int64_t > &blockSubsetIndex, const std::vector< size_t > &fileOffset, const std::vector< int > &blockComponentCount) const
 
template<typename T , typename U >
IOSS_NODISCARD std::vector< size_t > communicate_entity_data (T *file_data, U *ioss_data, const std::vector< BlockDecompositionData > &blocks, const std::vector< int64_t > &blockSubsetIndex, const std::vector< size_t > &fileOffset, const std::vector< int > &blockComponentCount) const
 
template<typename T >
void communicate_node_data (T *file_data, T *ioss_data, size_t comp_count) const
 

Public Attributes

Ioss_MPI_Comm m_comm
 
Ioss::ParallelUtils m_pu
 
int m_processor {}
 
int m_processorCount {}
 
std::string m_method {}
 
std::string m_decompExtra {}
 
int m_spatialDimension {3}
 
int m_commonNodeCount {0}
 
size_t m_globalElementCount {0}
 
size_t m_elementCount {0}
 
size_t m_elementOffset {0}
 
size_t m_importPreLocalElemIndex {0}
 
size_t m_globalNodeCount {0}
 
size_t m_nodeCount {0}
 
size_t m_nodeOffset {0}
 
size_t m_importPreLocalNodeIndex {0}
 
bool m_retainFreeNodes {true}
 
bool m_showProgress {false}
 
bool m_showHWM {false}
 
std::vector< INT > m_elementToProc
 
std::vector< double > m_centroids
 
std::vector< INT > m_pointer
 
std::vector< INT > m_adjacency
 
std::vector< INT > m_nodeCommMap
 
std::vector< size_t > m_fileBlockIndex
 

Private Attributes

std::vector< INT > localElementMap
 
std::vector< INT > importElementMap
 
std::vector< INT > importElementCount
 
std::vector< INT > importElementIndex
 
std::vector< INT > exportElementMap
 
std::vector< INT > exportElementCount
 
std::vector< INT > exportElementIndex
 
std::vector< INT > nodeIndex
 
std::vector< INT > exportNodeMap
 
std::vector< INT > exportNodeCount
 
std::vector< INT > exportNodeIndex
 
std::vector< INT > importNodeMap
 
std::vector< INT > importNodeCount
 
std::vector< INT > importNodeIndex
 
std::vector< INT > localNodeMap
 
std::vector< INT > m_elementDist
 
std::vector< INT > m_nodeDist
 
std::vector< INT > nodeGTL
 
std::vector< std::pair< INT, INT > > elemGTL
 

Constructor & Destructor Documentation

◆ Decomposition() [1/3]

template<typename INT >
Ioss::Decomposition< INT >::Decomposition ( const Ioss::PropertyManager & props,
Ioss_MPI_Comm comm )

◆ Decomposition() [2/3]

template<typename INT >
Ioss::Decomposition< INT >::Decomposition ( Decomposition< INT > const & )
default

◆ Decomposition() [3/3]

template<typename INT >
Ioss::Decomposition< INT >::Decomposition ( Decomposition< INT > && )
default

Member Function Documentation

◆ build_global_to_local_elem_map()

template<typename INT >
void Ioss::Decomposition< INT >::build_global_to_local_elem_map ( )

◆ calculate_element_centroids()

template<typename INT >
void Ioss::Decomposition< INT >::calculate_element_centroids ( const std::vector< double > & x,
const std::vector< double > & y,
const std::vector< double > & z )

◆ communicate_block_data()

template<typename INT >
template<typename T , typename U >
void Ioss::Decomposition< INT >::communicate_block_data ( T * file_data,
U * ioss_data,
const BlockDecompositionData & block,
size_t comp_count ) const
inline

◆ communicate_element_data()

template<typename INT >
template<typename T >
void Ioss::Decomposition< INT >::communicate_element_data ( T * file_data,
T * ioss_data,
size_t comp_count ) const
inline

◆ communicate_entity_data()

template<typename INT >
template<typename T , typename U >
IOSS_NODISCARD std::vector< size_t > Ioss::Decomposition< INT >::communicate_entity_data ( T * file_data,
U * ioss_data,
const std::vector< BlockDecompositionData > & blocks,
const std::vector< int64_t > & blockSubsetIndex,
const std::vector< size_t > & fileOffset,
const std::vector< int > & blockComponentCount ) const
inline

◆ communicate_node_data()

template<typename INT >
template<typename T >
void Ioss::Decomposition< INT >::communicate_node_data ( T * file_data,
T * ioss_data,
size_t comp_count ) const
inline

◆ communicate_set_data()

template<typename INT >
template<typename T >
void Ioss::Decomposition< INT >::communicate_set_data ( T * file_data,
T * ioss_data,
const SetDecompositionData & set,
size_t comp_count ) const
inline

◆ decompose_model()

template<typename INT >
void Ioss::Decomposition< INT >::decompose_model ( Zoltan & zz,
std::vector< BlockDecompositionData > & element_blocks )

◆ do_communicate_entity_data()

template<typename INT >
template<typename T , typename U >
IOSS_NODISCARD std::vector< size_t > Ioss::Decomposition< INT >::do_communicate_entity_data ( T * file_data,
U * ioss_data,
const std::vector< BlockDecompositionData > & blocks,
const std::vector< int64_t > & blockSubsetIndex,
const std::vector< size_t > & fileOffset,
const std::vector< int > & blockComponentCount ) const
inline

◆ elem_global_to_local()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::elem_global_to_local ( size_t global_index) const
inline

◆ file_elem_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::file_elem_count ( ) const
inline

◆ file_elem_offset()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::file_elem_offset ( ) const
inline

◆ file_node_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::file_node_count ( ) const
inline

◆ file_node_offset()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::file_node_offset ( ) const
inline

◆ generate_entity_distributions()

template<typename INT >
void Ioss::Decomposition< INT >::generate_entity_distributions ( size_t global_node_count,
size_t global_element_count )

◆ get_element_block_communication()

template<typename INT >
void Ioss::Decomposition< INT >::get_element_block_communication ( std::vector< BlockDecompositionData > & el_blocks)

◆ get_local_element_list()

template<typename INT >
void Ioss::Decomposition< INT >::get_local_element_list ( const ZOLTAN_ID_PTR & export_global_ids,
size_t export_count )

◆ get_local_node_list()

template<typename INT >
void Ioss::Decomposition< INT >::get_local_node_list ( )

◆ get_node_entity_proc_data()

template<typename INT >
void Ioss::Decomposition< INT >::get_node_entity_proc_data ( INT * entity_proc,
const Ioss::MapContainer & node_map,
bool do_map ) const
inline

◆ get_shared_node_list()

template<typename INT >
void Ioss::Decomposition< INT >::get_shared_node_list ( )

◆ global_elem_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::global_elem_count ( ) const
inline

◆ global_node_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::global_node_count ( ) const
inline

◆ guided_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::guided_decompose ( )

◆ i_own_elem()

template<typename INT >
IOSS_NODISCARD bool Ioss::Decomposition< INT >::i_own_elem ( size_t global_index) const
inline

◆ i_own_node()

template<typename INT >
IOSS_NODISCARD bool Ioss::Decomposition< INT >::i_own_node ( size_t global_index) const
inline

◆ internal_metis_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::internal_metis_decompose ( std::vector< BlockDecompositionData > & el_blocks,
idx_t * element_dist,
idx_t * pointer,
idx_t * adjacency,
idx_t * elem_partition )

◆ ioss_elem_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::ioss_elem_count ( ) const
inline

◆ ioss_node_count()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::ioss_node_count ( ) const
inline

◆ metis_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::metis_decompose ( idx_t * pointer,
idx_t * adjacency,
std::vector< BlockDecompositionData > & el_blocks )

◆ needs_centroids()

template<typename INT >
IOSS_NODISCARD bool Ioss::Decomposition< INT >::needs_centroids ( ) const
inline

◆ node_global_to_local()

template<typename INT >
IOSS_NODISCARD size_t Ioss::Decomposition< INT >::node_global_to_local ( size_t global_index) const
inline

◆ operator=() [1/2]

template<typename INT >
Decomposition & Ioss::Decomposition< INT >::operator= ( Decomposition< INT > && )
default

◆ operator=() [2/2]

template<typename INT >
Decomposition & Ioss::Decomposition< INT >::operator= ( Decomposition< INT > const & )
default

◆ release_memory()

template<typename INT >
void Ioss::Decomposition< INT >::release_memory ( )

◆ show_progress()

template<typename INT >
void Ioss::Decomposition< INT >::show_progress ( const std::string & message) const
inline

◆ simple_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::simple_decompose ( )

◆ simple_node_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::simple_node_decompose ( )

◆ zoltan_decompose()

template<typename INT >
void Ioss::Decomposition< INT >::zoltan_decompose ( Zoltan & zz)

Member Data Documentation

◆ elemGTL

template<typename INT >
std::vector<std::pair<INT, INT> > Ioss::Decomposition< INT >::elemGTL
private

◆ exportElementCount

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportElementCount
private

◆ exportElementIndex

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportElementIndex
private

◆ exportElementMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportElementMap
private

◆ exportNodeCount

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportNodeCount
private

◆ exportNodeIndex

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportNodeIndex
private

◆ exportNodeMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::exportNodeMap
private

◆ importElementCount

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importElementCount
private

◆ importElementIndex

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importElementIndex
private

◆ importElementMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importElementMap
private

◆ importNodeCount

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importNodeCount
private

◆ importNodeIndex

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importNodeIndex
private

◆ importNodeMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::importNodeMap
private

◆ localElementMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::localElementMap
private

◆ localNodeMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::localNodeMap
private

◆ m_adjacency

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_adjacency

◆ m_centroids

template<typename INT >
std::vector<double> Ioss::Decomposition< INT >::m_centroids

◆ m_comm

template<typename INT >
Ioss_MPI_Comm Ioss::Decomposition< INT >::m_comm

◆ m_commonNodeCount

template<typename INT >
int Ioss::Decomposition< INT >::m_commonNodeCount {0}

◆ m_decompExtra

template<typename INT >
std::string Ioss::Decomposition< INT >::m_decompExtra {}

◆ m_elementCount

template<typename INT >
size_t Ioss::Decomposition< INT >::m_elementCount {0}

◆ m_elementDist

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_elementDist
private

◆ m_elementOffset

template<typename INT >
size_t Ioss::Decomposition< INT >::m_elementOffset {0}

◆ m_elementToProc

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_elementToProc

◆ m_fileBlockIndex

template<typename INT >
std::vector<size_t> Ioss::Decomposition< INT >::m_fileBlockIndex

◆ m_globalElementCount

template<typename INT >
size_t Ioss::Decomposition< INT >::m_globalElementCount {0}

◆ m_globalNodeCount

template<typename INT >
size_t Ioss::Decomposition< INT >::m_globalNodeCount {0}

◆ m_importPreLocalElemIndex

template<typename INT >
size_t Ioss::Decomposition< INT >::m_importPreLocalElemIndex {0}

◆ m_importPreLocalNodeIndex

template<typename INT >
size_t Ioss::Decomposition< INT >::m_importPreLocalNodeIndex {0}

◆ m_method

template<typename INT >
std::string Ioss::Decomposition< INT >::m_method {}

◆ m_nodeCommMap

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_nodeCommMap

◆ m_nodeCount

template<typename INT >
size_t Ioss::Decomposition< INT >::m_nodeCount {0}

◆ m_nodeDist

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_nodeDist
private

◆ m_nodeOffset

template<typename INT >
size_t Ioss::Decomposition< INT >::m_nodeOffset {0}

◆ m_pointer

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::m_pointer

◆ m_processor

template<typename INT >
int Ioss::Decomposition< INT >::m_processor {}

◆ m_processorCount

template<typename INT >
int Ioss::Decomposition< INT >::m_processorCount {}

◆ m_pu

template<typename INT >
Ioss::ParallelUtils Ioss::Decomposition< INT >::m_pu

◆ m_retainFreeNodes

template<typename INT >
bool Ioss::Decomposition< INT >::m_retainFreeNodes {true}

◆ m_showHWM

template<typename INT >
bool Ioss::Decomposition< INT >::m_showHWM {false}

◆ m_showProgress

template<typename INT >
bool Ioss::Decomposition< INT >::m_showProgress {false}

◆ m_spatialDimension

template<typename INT >
int Ioss::Decomposition< INT >::m_spatialDimension {3}

◆ nodeGTL

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::nodeGTL
private

◆ nodeIndex

template<typename INT >
std::vector<INT> Ioss::Decomposition< INT >::nodeIndex
private

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