Go to the documentation of this file.
34 #ifndef IOSS_DECOMPOSITON_H
35 #define IOSS_DECOMPOSITON_H
47 #if !defined(NO_PARMETIS_SUPPORT)
51 #if !defined(NO_ZOLTAN_SUPPORT)
53 #include <zoltan_cpp.h>
65 int64_t
id()
const {
return id_; }
147 template <
typename INT>
class Decomposition
169 return std::binary_search(
nodeGTL.begin(),
nodeGTL.end(), global_index);
176 return elemGTL.count(global_index) != 0;
186 typename std::vector<INT>::const_iterator I =
189 return std::distance(
nodeGTL.begin(), I) + 1;
197 typename std::map<INT, INT>::const_iterator I =
elemGTL.find(global_index);
211 #
if !defined(NO_ZOLTAN_SUPPORT)
214 std::vector<BlockDecompositionData> &element_blocks);
221 const std::vector<double> &z);
223 #if !defined(NO_ZOLTAN_SUPPORT)
229 #if !defined(NO_PARMETIS_SUPPORT)
231 std::vector<BlockDecompositionData> &el_blocks);
234 idx_t *element_dist, idx_t *pointer, idx_t *adjacency,
235 idx_t *elem_partition);
245 template <
typename T>
248 template <
typename T>
250 size_t comp_count)
const;
252 template <
typename T,
typename U>
254 size_t comp_count)
const;
256 template <
typename T>
void metis_decompose(idx_t *pointer, idx_t *adjacency, std::vector< BlockDecompositionData > &el_blocks)
Definition: Ioss_Decomposition.C:621
const std::string & name() const
Definition: Ioss_Decomposition.h:118
std::string topologyType
Definition: Ioss_Decomposition.h:81
std::vector< size_t > entitylist_map
Definition: Ioss_Decomposition.h:127
std::vector< int > exportIndex
Definition: Ioss_Decomposition.h:95
int zone() const
Definition: Ioss_Decomposition.h:120
size_t ioss_elem_count() const
Definition: Ioss_Decomposition.h:155
std::vector< INT > m_nodeDist
Definition: Ioss_Decomposition.h:356
int64_t id() const
Definition: Ioss_Decomposition.h:65
std::vector< INT > exportElementCount
Definition: Ioss_Decomposition.h:339
MPI_Comm setComm_
Definition: Ioss_Decomposition.h:143
void simple_decompose()
Definition: Ioss_Decomposition.C:566
size_t fileCount
Definition: Ioss_Decomposition.h:134
const std::string & name() const
Definition: Ioss_Decomposition.h:62
std::vector< int > exportMap
Definition: Ioss_Decomposition.h:93
size_t fileCount
Definition: Ioss_Decomposition.h:76
size_t m_importPreLocalElemIndex
Definition: Ioss_Decomposition.h:269
size_t ioss_count() const
Definition: Ioss_Decomposition.h:123
int section() const
Definition: Ioss_Decomposition.h:121
bool m_showProgress
Definition: Ioss_Decomposition.h:277
size_t elem_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:192
size_t file_node_count() const
Definition: Ioss_Decomposition.h:156
size_t parentBlockIndex
Definition: Ioss_Decomposition.h:137
MPI_Comm m_comm
Definition: Ioss_Decomposition.h:259
int section_
Definition: Ioss_Decomposition.h:133
size_t m_elementOffset
Definition: Ioss_Decomposition.h:268
std::string name_
Definition: Ioss_Decomposition.h:70
std::vector< int > localMap
Definition: Ioss_Decomposition.h:89
std::vector< int > importIndex
Definition: Ioss_Decomposition.h:101
std::vector< INT > nodeGTL
Definition: Ioss_Decomposition.h:359
std::vector< int > exportCount
Definition: Ioss_Decomposition.h:94
std::vector< INT > importNodeCount
Definition: Ioss_Decomposition.h:350
size_t m_nodeOffset
Definition: Ioss_Decomposition.h:273
size_t file_elem_offset() const
Definition: Ioss_Decomposition.h:159
int attributeCount
Definition: Ioss_Decomposition.h:83
The main namespace for the Ioss library.
Definition: Ioad_DatabaseIO.C:66
std::vector< INT > nodeIndex
Definition: Ioss_Decomposition.h:342
void simple_node_decompose()
Definition: Ioss_Decomposition.C:586
bool i_own_node(size_t global_index) const
Definition: Ioss_Decomposition.h:166
size_t m_globalElementCount
Definition: Ioss_Decomposition.h:266
bool i_own_elem(size_t global_index) const
Definition: Ioss_Decomposition.h:173
std::vector< INT > localNodeMap
Definition: Ioss_Decomposition.h:353
std::vector< INT > importNodeIndex
Definition: Ioss_Decomposition.h:351
std::vector< bool > hasEntities
Definition: Ioss_Decomposition.h:128
Decomposition(const Ioss::PropertyManager &props, MPI_Comm comm)
Definition: Ioss_Decomposition.C:187
std::vector< INT > exportNodeMap
Definition: Ioss_Decomposition.h:344
int zone_
Definition: Ioss_Decomposition.h:132
bool m_showHWM
Definition: Ioss_Decomposition.h:278
int m_processor
Definition: Ioss_Decomposition.h:260
size_t iossCount
Definition: Ioss_Decomposition.h:77
size_t node_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:179
size_t file_elem_count() const
Definition: Ioss_Decomposition.h:157
int INT
Definition: Ioss_StructuredBlock.h:53
int nodesPerEntity
Definition: Ioss_Decomposition.h:82
A collection of Ioss::Property objects.
Definition: Ioss_PropertyManager.h:49
void get_element_block_communication(std::vector< BlockDecompositionData > &el_blocks)
Definition: Ioss_Decomposition.C:230
std::vector< int > importMap
Definition: Ioss_Decomposition.h:99
size_t df_count() const
Definition: Ioss_Decomposition.h:124
void communicate_set_data(T *file_data, T *ioss_data, const SetDecompositionData &set, size_t comp_count) const
Definition: Ioss_Decomposition.C:1469
void generate_entity_distributions(size_t globalNodeCount, size_t globalElementCount)
Definition: Ioss_Decomposition.C:216
Definition: Ioss_Decomposition.h:57
void communicate_block_data(T *file_data, U *ioss_data, const BlockDecompositionData &block, size_t comp_count) const
Definition: Ioss_Decomposition.C:1559
int64_t id() const
Definition: Ioss_Decomposition.h:119
size_t file_count() const
Definition: Ioss_Decomposition.h:66
size_t globalCount
Definition: Ioss_Decomposition.h:78
int distributionFactorValsPerEntity
Definition: Ioss_Decomposition.h:139
int64_t id_
Definition: Ioss_Decomposition.h:75
std::string m_method
Definition: Ioss_Decomposition.h:262
std::vector< INT > exportNodeIndex
Definition: Ioss_Decomposition.h:346
bool needs_centroids() const
Definition: Ioss_Decomposition.C:204
size_t file_count() const
Definition: Ioss_Decomposition.h:122
size_t global_count() const
Definition: Ioss_Decomposition.h:68
std::vector< INT > m_pointer
Definition: Ioss_Decomposition.h:281
bool distributionFactorConstant
Definition: Ioss_Decomposition.h:144
int section() const
Definition: Ioss_Decomposition.h:64
Definition: Ioss_Decomposition.h:104
std::vector< INT > m_adjacency
Definition: Ioss_Decomposition.h:282
void show_progress(const std::string &message) const
Definition: Ioss_Decomposition.h:202
size_t m_elementCount
Definition: Ioss_Decomposition.h:267
bool m_retainFreeNodes
Definition: Ioss_Decomposition.h:276
size_t file_node_offset() const
Definition: Ioss_Decomposition.h:158
SetDecompositionData()=default
std::string name_
Definition: Ioss_Decomposition.h:130
size_t global_elem_count() const
Definition: Ioss_Decomposition.h:153
void get_node_entity_proc_data(INT *entity_proc, const Ioss::MapContainer &node_map, bool do_map) const
Definition: Ioss_Decomposition.C:1633
std::vector< double > m_centroids
Definition: Ioss_Decomposition.h:280
~SetDecompositionData()
Definition: Ioss_Decomposition.h:111
void build_global_to_local_elem_map()
Definition: Ioss_Decomposition.C:990
size_t distributionFactorCount
Definition: Ioss_Decomposition.h:140
int m_processorCount
Definition: Ioss_Decomposition.h:261
std::vector< INT > m_nodeCommMap
Definition: Ioss_Decomposition.h:284
void get_shared_node_list()
Definition: Ioss_Decomposition.C:1221
void decompose_model(Zoltan &zz, std::vector< BlockDecompositionData > &element_blocks)
Definition: Ioss_Decomposition.C:314
size_t fileSectionOffset
Definition: Ioss_Decomposition.h:74
size_t ioss_count() const
Definition: Ioss_Decomposition.h:67
void communicate_element_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Ioss_Decomposition.C:1363
std::vector< INT > importElementIndex
Definition: Ioss_Decomposition.h:336
std::vector< INT > exportElementMap
Definition: Ioss_Decomposition.h:338
size_t localIossOffset
Definition: Ioss_Decomposition.h:88
Definition: Ioss_ParallelUtils.h:49
int section_
Definition: Ioss_Decomposition.h:72
void calculate_element_centroids(const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z)
Definition: Ioss_Decomposition.C:399
std::vector< INT > localElementMap
Definition: Ioss_Decomposition.h:332
int zone_
Definition: Ioss_Decomposition.h:71
int m_spatialDimension
Definition: Ioss_Decomposition.h:265
size_t zoneNodeOffset
Definition: Ioss_Decomposition.h:80
void get_local_element_list(const ZOLTAN_ID_PTR &export_global_ids, size_t export_count)
Definition: Ioss_Decomposition.C:952
std::vector< INT > importElementCount
Definition: Ioss_Decomposition.h:335
std::vector< int > importCount
Definition: Ioss_Decomposition.h:100
int zone() const
Definition: Ioss_Decomposition.h:63
size_t m_importPreLocalNodeIndex
Definition: Ioss_Decomposition.h:274
size_t ioss_node_count() const
Definition: Ioss_Decomposition.h:154
std::map< INT, INT > elemGTL
Definition: Ioss_Decomposition.h:360
std::vector< INT > importNodeMap
Definition: Ioss_Decomposition.h:349
double distributionFactorValue
Definition: Ioss_Decomposition.h:141
void get_local_node_list()
Definition: Ioss_Decomposition.C:1014
std::vector< int64_t > MapContainer
Definition: Ioss_Map.h:48
void zoltan_decompose(Zoltan &zz)
Definition: Ioss_Decomposition.C:820
size_t m_nodeCount
Definition: Ioss_Decomposition.h:272
int MPI_Comm
Definition: Ioss_CodeTypes.h:96
std::vector< INT > exportNodeCount
Definition: Ioss_Decomposition.h:345
void internal_metis_decompose(std::vector< BlockDecompositionData > &el_blocks, idx_t *element_dist, idx_t *pointer, idx_t *adjacency, idx_t *elem_partition)
Definition: Ioss_Decomposition.C:733
void communicate_node_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Ioss_Decomposition.C:1670
std::vector< INT > m_elementDist
Definition: Ioss_Decomposition.h:355
size_t m_globalNodeCount
Definition: Ioss_Decomposition.h:271
std::vector< INT > exportElementIndex
Definition: Ioss_Decomposition.h:340
int root_
Definition: Ioss_Decomposition.h:135
int64_t id_
Definition: Ioss_Decomposition.h:131
size_t global_node_count() const
Definition: Ioss_Decomposition.h:152
std::string topologyType
Definition: Ioss_Decomposition.h:136
std::vector< size_t > m_fileBlockIndex
Definition: Ioss_Decomposition.h:290
void progress(const std::string &output) const
Definition: Ioss_ParallelUtils.C:522
BlockDecompositionData()=default
std::vector< INT > importElementMap
Definition: Ioss_Decomposition.h:334