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_; }
115 size_t df_count()
const {
return distributionFactorCount; }
128 size_t parentBlockIndex{0};
130 int distributionFactorValsPerEntity{-1};
131 size_t distributionFactorCount{0};
132 double distributionFactorValue{
134 bool distributionFactorConstant{
false};
145 size_t ioss_elem_count()
const {
return localElementMap.size() + importElementMap.size(); }
151 bool needs_centroids()
const;
153 void generate_entity_distributions(
size_t globalNodeCount,
size_t globalElementCount);
159 return std::binary_search(nodeGTL.begin(), nodeGTL.end(), global_index);
166 return elemGTL.count(global_index) != 0;
176 typename std::vector<INT>::const_iterator I =
177 lower_bound(nodeGTL.begin(), nodeGTL.end(), global_index);
178 assert(I != nodeGTL.end());
179 return std::distance(nodeGTL.begin(), I) + 1;
187 typename std::map<INT, INT>::const_iterator I = elemGTL.find(global_index);
188 assert(I != elemGTL.end());
194 if (m_showProgress) {
202 void decompose_model(
203 #
if !defined(NO_ZOLTAN_SUPPORT)
206 std::vector<BlockDecompositionData> &element_blocks);
208 void simple_decompose();
210 void simple_node_decompose();
212 void calculate_element_centroids(
const std::vector<double> &x,
const std::vector<double> &y,
213 const std::vector<double> &z);
215 #if !defined(NO_ZOLTAN_SUPPORT) 216 void zoltan_decompose(Zoltan &zz);
218 void get_local_element_list(
const ZOLTAN_ID_PTR &export_global_ids,
size_t export_count);
221 #if !defined(NO_PARMETIS_SUPPORT) 222 void metis_decompose(idx_t *pointer, idx_t *adjacency,
223 std::vector<BlockDecompositionData> &el_blocks);
225 void internal_metis_decompose(std::vector<BlockDecompositionData> &el_blocks,
226 idx_t *element_dist, idx_t *pointer, idx_t *adjacency,
227 idx_t *elem_partition);
233 void get_element_block_communication(std::vector<BlockDecompositionData> &el_blocks);
234 void build_global_to_local_elem_map();
235 void get_local_node_list();
236 void get_shared_node_list();
237 template <
typename T>
238 void communicate_element_data(T *file_data, T *ioss_data,
size_t comp_count)
const;
240 template <
typename T>
242 size_t comp_count)
const;
244 template <
typename T,
typename U>
246 size_t comp_count)
const;
248 template <
typename T>
249 void communicate_node_data(T *file_data, T *ioss_data,
size_t comp_count)
const;
253 int m_processorCount{};
257 int m_spatialDimension{3};
258 size_t m_globalElementCount{0};
259 size_t m_elementCount{0};
260 size_t m_elementOffset{0};
261 size_t m_importPreLocalElemIndex{0};
263 size_t m_globalNodeCount{0};
264 size_t m_nodeCount{0};
265 size_t m_nodeOffset{0};
266 size_t m_importPreLocalNodeIndex{0};
268 bool m_retainFreeNodes{
true};
269 bool m_showProgress{
false};
270 bool m_showHWM{
false};
std::vector< INT > m_pointer
Definition: Ioss_Decomposition.h:273
std::vector< INT > exportNodeCount
Definition: Ioss_Decomposition.h:337
size_t file_count() const
Definition: Ioss_Decomposition.h:113
std::vector< INT > importElementIndex
Definition: Ioss_Decomposition.h:328
std::vector< INT > exportNodeIndex
Definition: Ioss_Decomposition.h:338
int64_t id_
Definition: Ioss_Decomposition.h:75
void show_progress(const std::string &message) const
Definition: Ioss_Decomposition.h:192
int attributeCount
Definition: Ioss_Decomposition.h:83
size_t fileSectionOffset
Definition: Ioss_Decomposition.h:74
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
size_t file_node_offset() const
Definition: Ioss_Decomposition.h:148
std::vector< INT > nodeGTL
Definition: Ioss_Decomposition.h:351
int section() const
Definition: Ioss_Decomposition.h:64
std::string topologyType
Definition: Ioss_Decomposition.h:81
std::vector< INT > nodeIndex
Definition: Ioss_Decomposition.h:334
std::vector< INT > m_adjacency
Definition: Ioss_Decomposition.h:274
int nodesPerEntity
Definition: Ioss_Decomposition.h:82
Definition: Ioss_Decomposition.h:104
std::vector< INT > localNodeMap
Definition: Ioss_Decomposition.h:345
size_t ioss_elem_count() const
Definition: Ioss_Decomposition.h:145
std::vector< INT > importNodeIndex
Definition: Ioss_Decomposition.h:343
size_t file_count() const
Definition: Ioss_Decomposition.h:66
BlockDecompositionData()=default
std::vector< INT > m_nodeDist
Definition: Ioss_Decomposition.h:348
size_t file_node_count() const
Definition: Ioss_Decomposition.h:146
std::vector< INT > importElementCount
Definition: Ioss_Decomposition.h:327
std::vector< INT > exportElementMap
Definition: Ioss_Decomposition.h:330
int zone_
Definition: Ioss_Decomposition.h:71
std::vector< INT > importNodeMap
Definition: Ioss_Decomposition.h:341
MPI_Comm m_comm
Definition: Ioss_Decomposition.h:251
std::vector< INT > exportElementCount
Definition: Ioss_Decomposition.h:331
Definition: Ioss_ParallelUtils.h:45
std::string m_method
Definition: Ioss_Decomposition.h:254
bool i_own_node(size_t global_index) const
Definition: Ioss_Decomposition.h:156
int64_t id() const
Definition: Ioss_Decomposition.h:65
size_t localIossOffset
Definition: Ioss_Decomposition.h:88
std::vector< int > importCount
Definition: Ioss_Decomposition.h:100
size_t ioss_count() const
Definition: Ioss_Decomposition.h:67
std::vector< size_t > entitylist_map
Definition: Ioss_Decomposition.h:118
std::vector< int > exportIndex
Definition: Ioss_Decomposition.h:95
size_t global_elem_count() const
Definition: Ioss_Decomposition.h:143
size_t global_count() const
Definition: Ioss_Decomposition.h:68
int zone() const
Definition: Ioss_Decomposition.h:111
size_t file_elem_offset() const
Definition: Ioss_Decomposition.h:149
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:112
const std::string & name() const
Definition: Ioss_Decomposition.h:109
const std::string & name() const
Definition: Ioss_Decomposition.h:62
size_t ioss_node_count() const
Definition: Ioss_Decomposition.h:144
size_t node_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:169
std::vector< int > exportCount
Definition: Ioss_Decomposition.h:94
int INT
Definition: Ioss_StructuredBlock.h:53
Definition: Iocgns_DecompositionData.h:65
void progress(const std::string &output) const
Definition: Ioss_ParallelUtils.C:512
size_t ioss_count() const
Definition: Ioss_Decomposition.h:114
std::vector< size_t > m_fileBlockIndex
Definition: Ioss_Decomposition.h:282
std::string name_
Definition: Ioss_Decomposition.h:70
std::vector< bool > hasEntities
Definition: Ioss_Decomposition.h:119
size_t fileCount
Definition: Ioss_Decomposition.h:76
bool i_own_elem(size_t global_index) const
Definition: Ioss_Decomposition.h:163
size_t iossCount
Definition: Ioss_Decomposition.h:77
int section_
Definition: Ioss_Decomposition.h:72
int zone() const
Definition: Ioss_Decomposition.h:63
Definition: Ioss_Decomposition.h:57
std::vector< INT > m_elementDist
Definition: Ioss_Decomposition.h:347
size_t file_elem_count() const
Definition: Ioss_Decomposition.h:147
std::vector< INT > exportElementIndex
Definition: Ioss_Decomposition.h:332
std::vector< int > importMap
Definition: Ioss_Decomposition.h:99
int MPI_Comm
Definition: Ioss_CodeTypes.h:79
std::vector< INT > importElementMap
Definition: Ioss_Decomposition.h:326
std::vector< INT > m_nodeCommMap
Definition: Ioss_Decomposition.h:276
size_t global_node_count() const
Definition: Ioss_Decomposition.h:142
std::vector< INT > exportNodeMap
Definition: Ioss_Decomposition.h:336
std::vector< int > exportMap
Definition: Ioss_Decomposition.h:93
size_t elem_global_to_local(size_t global_index) const
Definition: Ioss_Decomposition.h:182
int64_t id() const
Definition: Ioss_Decomposition.h:110
A collection of Ioss::Property objects.
Definition: Ioss_PropertyManager.h:49
std::vector< INT > localElementMap
Definition: Ioss_Decomposition.h:324
size_t globalCount
Definition: Ioss_Decomposition.h:78
size_t zoneNodeOffset
Definition: Ioss_Decomposition.h:80
std::vector< double > m_centroids
Definition: Ioss_Decomposition.h:272
std::vector< int > importIndex
Definition: Ioss_Decomposition.h:101
std::vector< INT > importNodeCount
Definition: Ioss_Decomposition.h:342
size_t df_count() const
Definition: Ioss_Decomposition.h:115
std::map< INT, INT > elemGTL
Definition: Ioss_Decomposition.h:352