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);
213 #
if !defined(NO_ZOLTAN_SUPPORT)
216 std::vector<BlockDecompositionData> &element_blocks);
223 const std::vector<double> &z);
225 #if !defined(NO_ZOLTAN_SUPPORT) 231 #if !defined(NO_PARMETIS_SUPPORT) 233 std::vector<BlockDecompositionData> &el_blocks);
236 idx_t *element_dist, idx_t *pointer, idx_t *adjacency,
237 idx_t *elem_partition);
247 template <
typename T>
250 template <
typename T>
252 size_t comp_count)
const;
254 template <
typename T,
typename U>
256 size_t comp_count)
const;
258 template <
typename T>
bool distributionFactorConstant
Definition: Ioss_Decomposition.h:144
std::vector< INT > m_pointer
Definition: Ioss_Decomposition.h:283
std::vector< INT > exportNodeCount
Definition: Ioss_Decomposition.h:347
size_t file_count() const
Definition: Ioss_Decomposition.h:122
int distributionFactorValsPerEntity
Definition: Ioss_Decomposition.h:139
std::vector< INT > importElementIndex
Definition: Ioss_Decomposition.h:338
std::vector< INT > exportNodeIndex
Definition: Ioss_Decomposition.h:348
int m_processor
Definition: Ioss_Decomposition.h:262
int64_t id_
Definition: Ioss_Decomposition.h:75
void show_progress(const std::string &message) const
Definition: Ioss_Decomposition.h:202
void calculate_element_centroids(const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z)
Definition: Ioss_Decomposition.C:383
int attributeCount
Definition: Ioss_Decomposition.h:83
size_t fileSectionOffset
Definition: Ioss_Decomposition.h:74
The main namespace for the Ioss library.
Definition: Ioad_DatabaseIO.C:66
size_t file_node_offset() const
Definition: Ioss_Decomposition.h:158
std::vector< INT > nodeGTL
Definition: Ioss_Decomposition.h:361
SetDecompositionData()=default
int section() const
Definition: Ioss_Decomposition.h:64
void communicate_set_data(T *file_data, T *ioss_data, const SetDecompositionData &set, size_t comp_count) const
Definition: Ioss_Decomposition.C:1453
std::string topologyType
Definition: Ioss_Decomposition.h:81
std::vector< INT > nodeIndex
Definition: Ioss_Decomposition.h:344
void simple_node_decompose()
Definition: Ioss_Decomposition.C:570
std::vector< INT > m_adjacency
Definition: Ioss_Decomposition.h:284
void metis_decompose(idx_t *pointer, idx_t *adjacency, std::vector< BlockDecompositionData > &el_blocks)
Definition: Ioss_Decomposition.C:605
bool m_showHWM
Definition: Ioss_Decomposition.h:280
int nodesPerEntity
Definition: Ioss_Decomposition.h:82
size_t m_globalElementCount
Definition: Ioss_Decomposition.h:268
size_t m_nodeCount
Definition: Ioss_Decomposition.h:274
Definition: Ioss_Decomposition.h:104
std::vector< INT > localNodeMap
Definition: Ioss_Decomposition.h:355
size_t ioss_elem_count() const
Definition: Ioss_Decomposition.h:155
std::vector< INT > importNodeIndex
Definition: Ioss_Decomposition.h:353
size_t file_count() const
Definition: Ioss_Decomposition.h:66
BlockDecompositionData()=default
std::string name_
Definition: Ioss_Decomposition.h:130
void get_element_block_communication(std::vector< BlockDecompositionData > &el_blocks)
Definition: Ioss_Decomposition.C:222
~SetDecompositionData()
Definition: Ioss_Decomposition.h:111
std::vector< INT > m_nodeDist
Definition: Ioss_Decomposition.h:358
size_t distributionFactorCount
Definition: Ioss_Decomposition.h:140
int m_processorCount
Definition: Ioss_Decomposition.h:263
size_t file_node_count() const
Definition: Ioss_Decomposition.h:156
void get_shared_node_list()
Definition: Ioss_Decomposition.C:1205
std::vector< INT > importElementCount
Definition: Ioss_Decomposition.h:337
void generate_entity_distributions(size_t globalNodeCount, size_t globalElementCount)
Definition: Ioss_Decomposition.C:208
void communicate_element_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Ioss_Decomposition.C:1347
std::vector< INT > exportElementMap
Definition: Ioss_Decomposition.h:340
size_t m_importPreLocalNodeIndex
Definition: Ioss_Decomposition.h:276
int zone_
Definition: Ioss_Decomposition.h:71
std::vector< INT > importNodeMap
Definition: Ioss_Decomposition.h:351
MPI_Comm m_comm
Definition: Ioss_Decomposition.h:261
std::vector< INT > exportElementCount
Definition: Ioss_Decomposition.h:341
double distributionFactorValue
Definition: Ioss_Decomposition.h:141
Definition: Ioss_ParallelUtils.h:49
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:717
std::string m_method
Definition: Ioss_Decomposition.h:264
bool i_own_node(size_t global_index) const
Definition: Ioss_Decomposition.h:166
int64_t id() const
Definition: Ioss_Decomposition.h:65
void simple_decompose()
Definition: Ioss_Decomposition.C:550
int root_
Definition: Ioss_Decomposition.h:135
size_t localIossOffset
Definition: Ioss_Decomposition.h:88
std::vector< int > importCount
Definition: Ioss_Decomposition.h:100
void zoltan_decompose(Zoltan &zz)
Definition: Ioss_Decomposition.C:804
std::string topologyType
Definition: Ioss_Decomposition.h:136
size_t ioss_count() const
Definition: Ioss_Decomposition.h:67
std::vector< size_t > entitylist_map
Definition: Ioss_Decomposition.h:127
std::vector< int > exportIndex
Definition: Ioss_Decomposition.h:95
int64_t id_
Definition: Ioss_Decomposition.h:131
size_t global_elem_count() const
Definition: Ioss_Decomposition.h:153
size_t global_count() const
Definition: Ioss_Decomposition.h:68
int zone() const
Definition: Ioss_Decomposition.h:120
size_t file_elem_offset() const
Definition: Ioss_Decomposition.h:159
MPI_Comm setComm_
Definition: Ioss_Decomposition.h:143
size_t fileCount
Definition: Ioss_Decomposition.h:134
std::vector< int64_t > MapContainer
Definition: Ioss_Map.h:48
std::vector< int > localMap
Definition: Ioss_Decomposition.h:89
int section() const
Definition: Ioss_Decomposition.h:121
size_t parentBlockIndex
Definition: Ioss_Decomposition.h:137
const std::string & name() const
Definition: Ioss_Decomposition.h:118
const std::string & name() const
Definition: Ioss_Decomposition.h:62
void communicate_block_data(T *file_data, U *ioss_data, const BlockDecompositionData &block, size_t comp_count) const
Definition: Ioss_Decomposition.C:1543
size_t ioss_node_count() const
Definition: Ioss_Decomposition.h:154
size_t node_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:179
std::vector< int > exportCount
Definition: Ioss_Decomposition.h:94
void decompose_model(Zoltan &zz, std::vector< BlockDecompositionData > &element_blocks)
Definition: Ioss_Decomposition.C:306
int m_spatialDimension
Definition: Ioss_Decomposition.h:267
int INT
Definition: Ioss_StructuredBlock.h:53
void progress(const std::string &output) const
Definition: Ioss_ParallelUtils.C:513
size_t ioss_count() const
Definition: Ioss_Decomposition.h:123
bool needs_centroids() const
Definition: Ioss_Decomposition.C:196
std::vector< size_t > m_fileBlockIndex
Definition: Ioss_Decomposition.h:292
std::string name_
Definition: Ioss_Decomposition.h:70
std::vector< bool > hasEntities
Definition: Ioss_Decomposition.h:128
size_t m_elementOffset
Definition: Ioss_Decomposition.h:270
size_t m_elementCount
Definition: Ioss_Decomposition.h:269
size_t fileCount
Definition: Ioss_Decomposition.h:76
bool i_own_elem(size_t global_index) const
Definition: Ioss_Decomposition.h:173
size_t iossCount
Definition: Ioss_Decomposition.h:77
int section_
Definition: Ioss_Decomposition.h:72
int section_
Definition: Ioss_Decomposition.h:133
int zone() const
Definition: Ioss_Decomposition.h:63
Definition: Ioss_Decomposition.h:57
size_t m_nodeOffset
Definition: Ioss_Decomposition.h:275
void communicate_node_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Ioss_Decomposition.C:1654
std::vector< INT > m_elementDist
Definition: Ioss_Decomposition.h:357
size_t file_elem_count() const
Definition: Ioss_Decomposition.h:157
size_t m_globalNodeCount
Definition: Ioss_Decomposition.h:273
std::vector< INT > exportElementIndex
Definition: Ioss_Decomposition.h:342
void get_node_entity_proc_data(INT *entity_proc, const Ioss::MapContainer &node_map, bool do_map) const
Definition: Ioss_Decomposition.C:1617
std::vector< int > importMap
Definition: Ioss_Decomposition.h:99
int MPI_Comm
Definition: Ioss_CodeTypes.h:88
Decomposition(const Ioss::PropertyManager &props, MPI_Comm comm)
Definition: Ioss_Decomposition.C:179
std::vector< INT > importElementMap
Definition: Ioss_Decomposition.h:336
std::vector< INT > m_nodeCommMap
Definition: Ioss_Decomposition.h:286
size_t global_node_count() const
Definition: Ioss_Decomposition.h:152
std::vector< INT > exportNodeMap
Definition: Ioss_Decomposition.h:346
std::vector< int > exportMap
Definition: Ioss_Decomposition.h:93
int zone_
Definition: Ioss_Decomposition.h:132
void build_global_to_local_elem_map()
Definition: Ioss_Decomposition.C:974
size_t elem_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:192
int64_t id() const
Definition: Ioss_Decomposition.h:119
bool m_retainFreeNodes
Definition: Ioss_Decomposition.h:278
A collection of Ioss::Property objects.
Definition: Ioss_PropertyManager.h:49
std::vector< INT > localElementMap
Definition: Ioss_Decomposition.h:334
size_t globalCount
Definition: Ioss_Decomposition.h:78
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:936
std::vector< double > m_centroids
Definition: Ioss_Decomposition.h:282
size_t m_importPreLocalElemIndex
Definition: Ioss_Decomposition.h:271
std::vector< int > importIndex
Definition: Ioss_Decomposition.h:101
std::vector< INT > importNodeCount
Definition: Ioss_Decomposition.h:352
size_t df_count() const
Definition: Ioss_Decomposition.h:124
bool m_showProgress
Definition: Ioss_Decomposition.h:279
std::map< INT, INT > elemGTL
Definition: Ioss_Decomposition.h:362
void get_local_node_list()
Definition: Ioss_Decomposition.C:998