10#include "ioss_export.h"
25#if !defined(NO_PARMETIS_SUPPORT)
29#if !defined(NO_ZOLTAN_SUPPORT)
31#include <zoltan_cpp.h>
35#if defined DC_USE_HOPSCOTCH
37#elif defined DC_USE_ROBIN
154 const std::vector<int> &blockComponentCount)
const;
158 const std::vector<int> &blockComponentCount)
const;
167 const std::vector<BlockDecompositionData> &
m_data;
170 const std::vector<int> &blockComponentCount)
const;
214 return std::binary_search(
nodeGTL.begin(),
nodeGTL.end(), global_index);
221#if defined(DC_USE_VECTOR)
222 return std::binary_search(
223 elemGTL.begin(),
elemGTL.end(), std::pair<INT, INT>{global_index, 0},
224 [](
const std::pair<INT, INT> &lhs,
const std::pair<INT, INT> &val) ->
bool {
225 return lhs.first < val.first;
239 typename std::vector<INT>::const_iterator I =
242 return std::distance(
nodeGTL.begin(), I) + 1;
250#if defined(DC_USE_VECTOR)
251 auto I = lower_bound(
253 [](
const std::pair<INT, INT> &lhs, INT val) ->
bool { return lhs.first < val; });
254 assert(I !=
elemGTL.end() && I->first == (INT)global_index);
256 auto I =
elemGTL.find(global_index);
259 assert(I->first == (INT)global_index);
274#
if !defined(NO_ZOLTAN_SUPPORT)
277 std::vector<BlockDecompositionData> &element_blocks);
285 const std::vector<double> &z);
287#if !defined(NO_ZOLTAN_SUPPORT)
293#if !defined(NO_PARMETIS_SUPPORT)
295 std::vector<BlockDecompositionData> &el_blocks);
298 idx_t *element_dist, idx_t *pointer, idx_t *adjacency,
299 idx_t *elem_partition);
310 entity_proc[j++] = node_map[local_id];
329 template <
typename T>
341 std::copy(file_data, file_data + size, ioss_data);
350 if (comp_count == 1) {
353 export_data[i] = file_data[index];
370 ioss_data[i] = import_data[i];
382 for (
size_t j = 0; j < comp_count; j++) {
383 export_data[comp_count * i + j] = file_data[comp_count * index + j];
390 for (
size_t j = 0; j < comp_count; j++) {
392 file_data[comp_count * index + j];
402 export_count[i] *= comp_count;
403 export_disp[i] *= comp_count;
404 import_count[i] *= comp_count;
405 import_disp[i] *= comp_count;
416 for (
size_t j = 0; j < comp_count; j++) {
417 ioss_data[comp_count * i + j] = import_data[comp_count * i + j];
424 for (
size_t j = 0; j < comp_count; j++) {
425 ioss_data[comp_count * (offset + i) + j] =
432 template <
typename T>
434 size_t comp_count)
const
437 std::vector<T> recv_data;
445 recv_data.resize(size);
447 std::copy(file_data, file_data + size, recv_data.begin());
454 if (comp_count == 1) {
456 for (
size_t i = 0; i < set.
ioss_count(); i++) {
458 ioss_data[i] = file_data[index];
463 for (
size_t i = 0; i < set.
ioss_count(); i++) {
465 ioss_data[i] = recv_data[index];
471 for (
size_t i = 0; i < set.
ioss_count(); i++) {
473 for (
size_t j = 0; j < comp_count; j++) {
474 ioss_data[comp_count * i + j] = file_data[comp_count * index + j];
480 for (
size_t i = 0; i < set.
ioss_count(); i++) {
482 for (
size_t j = 0; j < comp_count; j++) {
483 ioss_data[comp_count * i + j] = recv_data[comp_count * index + j];
490 template <
typename T,
typename U>
492 size_t comp_count)
const
502 auto size = block.
localMap.size() * comp_count;
503 std::copy(file_data, file_data + size, ioss_data);
507 std::vector<U> exports;
508 exports.reserve(comp_count * block.
exportMap.size());
509 std::vector<U> imports(comp_count * block.
importMap.size());
511 if (comp_count == 1) {
513 exports.push_back(file_data[i]);
521 for (
size_t i = 0; i < block.
localMap.size(); i++) {
525 for (
size_t i = 0; i < block.
importMap.size(); i++) {
526 ioss_data[block.
importMap[i]] = imports[i];
531 for (
size_t j = 0; j < comp_count; j++) {
532 exports.push_back(file_data[i * comp_count + j]);
542 export_count[i] *= comp_count;
543 export_disp[i] *= comp_count;
544 import_count[i] *= comp_count;
545 import_disp[i] *= comp_count;
549 Ioss::MY_Alltoallv(exports, export_count, export_disp, imports, import_count, import_disp,
554 for (
size_t i = 0; i < block.
localMap.size(); i++) {
555 for (
size_t j = 0; j < comp_count; j++) {
557 file_data[block.
localMap[i] * comp_count + j];
561 for (
size_t i = 0; i < block.
importMap.size(); i++) {
562 for (
size_t j = 0; j < comp_count; j++) {
563 ioss_data[block.
importMap[i] * comp_count + j] = imports[i * comp_count + j];
569 template <
typename T,
typename U>
571 T *file_data, U *ioss_data,
const std::vector<BlockDecompositionData> &blocks,
572 const std::vector<int64_t> &blockSubsetIndex,
const std::vector<size_t> &fileOffset,
573 const std::vector<int> &blockComponentCount)
const
575 size_t export_size = 0;
576 size_t import_size = 0;
578 for (
size_t bsi = 0; bsi < blockSubsetIndex.size(); bsi++) {
579 int64_t blk_seq = blockSubsetIndex[bsi];
582 size_t comp_count = blockComponentCount[bsi];
583 export_size += blk.
exportMap.size() * comp_count;
584 import_size += blk.
importMap.size() * comp_count;
587 std::vector<U> exports;
588 exports.reserve(export_size);
593 for (
int proc = 0; proc < nProc; proc++) {
594 for (
size_t bsi = 0; bsi < blockSubsetIndex.size(); bsi++) {
595 int64_t blk_seq = blockSubsetIndex[bsi];
597 size_t comp_count = blockComponentCount[bsi];
598 size_t fileDataOffset = fileOffset[bsi];
604 for (
size_t j = 0; j < comp_count; j++) {
605 size_t fileIndex = fileDataOffset + i * comp_count + j;
606 exports.push_back(file_data[fileIndex]);
612 std::vector<int64_t> export_count(nProc, 0);
613 std::vector<int64_t> export_disp(nProc, 0);
614 std::vector<int64_t> import_count(nProc, 0);
615 std::vector<int64_t> import_disp(nProc, 0);
617 for (
size_t bsi = 0; bsi < blockSubsetIndex.size(); bsi++) {
618 int64_t blk_seq = blockSubsetIndex[bsi];
620 size_t comp_count = blockComponentCount[bsi];
624 export_count[proc++] += comp_count * i;
629 import_count[proc++] += comp_count * i;
633 std::copy(export_count.begin(), export_count.end(), export_disp.begin());
634 std::copy(import_count.begin(), import_count.end(), import_disp.begin());
639 std::vector<U> imports(import_size);
640 Ioss::MY_Alltoallv(exports, export_count, export_disp, imports, import_count, import_disp,
645 std::vector<size_t> iossOffset =
647 std::vector<size_t> importOffset =
651 for (
size_t bsi = 0; bsi < blockSubsetIndex.size(); bsi++) {
652 int64_t blk_seq = blockSubsetIndex[bsi];
654 size_t comp_count = blockComponentCount[bsi];
656 for (
size_t i = 0; i < block.
localMap.size(); i++) {
657 for (
size_t j = 0; j < comp_count; j++) {
658 size_t fileIndex = fileOffset[bsi] + block.
localMap[i] * comp_count + j;
659 size_t iossIndex = iossOffset[bsi] + (i + block.
localIossOffset) * comp_count + j;
660 ioss_data[iossIndex] = file_data[fileIndex];
664 for (
size_t i = 0; i < block.
importMap.size(); i++) {
665 for (
size_t j = 0; j < comp_count; j++) {
666 size_t importIndex = importOffset[bsi] + i * comp_count + j;
668 size_t dataOffset = iossOffset[bsi];
669 size_t iossIndex = dataOffset + block.
importMap[i] * comp_count + j;
671 ioss_data[iossIndex] = imports[importIndex];
679 template <
typename T,
typename U>
681 T *file_data, U *ioss_data,
const std::vector<BlockDecompositionData> &blocks,
682 const std::vector<int64_t> &blockSubsetIndex,
const std::vector<size_t> &fileOffset,
683 const std::vector<int> &blockComponentCount)
const
690 auto size = fileOffset[blockSubsetIndex.size()];
691 std::copy(file_data, file_data + size, ioss_data);
694 return batchOffset.
get_ioss_offset(blockSubsetIndex, blockComponentCount);
699 fileOffset, blockComponentCount);
704 template <
typename T>
710 std::vector<T> export_data(
exportNodeMap.size() * comp_count);
711 std::vector<T> import_data(
importNodeMap.size() * comp_count);
713 if (comp_count == 1) {
717 export_data[i] = file_data[index];
736 ioss_data[index] = import_data[i];
743 for (
size_t j = 0; j < comp_count; j++) {
744 export_data[comp_count * i + j] = file_data[comp_count * index + j];
752 for (
size_t j = 0; j < comp_count; j++) {
754 file_data[comp_count * index + j];
764 export_count[i] *= comp_count;
765 export_disp[i] *= comp_count;
766 import_count[i] *= comp_count;
767 import_disp[i] *= comp_count;
779 for (
size_t j = 0; j < comp_count; j++) {
780 ioss_data[comp_count * index + j] = import_data[comp_count * i + j];
899#if defined DC_USE_HOPSCOTCH
901#elif defined DC_USE_ROBIN
903#elif defined DC_USE_VECTOR
#define IOSS_NODISCARD
Definition Ioss_CodeTypes.h:56
MPI_Comm Ioss_MPI_Comm
Definition Ioss_CodeTypes.h:61
Definition Ioss_Decomposition.h:45
IOSS_NODISCARD size_t file_count() const
Definition Ioss_Decomposition.h:53
int attributeCount
Definition Ioss_Decomposition.h:70
IOSS_NODISCARD int64_t id() const
Definition Ioss_Decomposition.h:52
std::string name_
Definition Ioss_Decomposition.h:57
std::string topologyType
Definition Ioss_Decomposition.h:68
IOSS_NODISCARD int zone() const
Definition Ioss_Decomposition.h:50
IOSS_NODISCARD const std::string & name() const
Definition Ioss_Decomposition.h:49
std::vector< int > localMap
Definition Ioss_Decomposition.h:76
IOSS_NODISCARD size_t global_count() const
Definition Ioss_Decomposition.h:55
size_t iossCount
Definition Ioss_Decomposition.h:64
std::vector< int > exportCount
Definition Ioss_Decomposition.h:81
IOSS_NODISCARD size_t ioss_count() const
Definition Ioss_Decomposition.h:54
IOSS_NODISCARD int section() const
Definition Ioss_Decomposition.h:51
size_t localIossOffset
Definition Ioss_Decomposition.h:75
std::vector< int > importIndex
Definition Ioss_Decomposition.h:88
std::vector< int > importMap
Definition Ioss_Decomposition.h:86
int64_t id_
Definition Ioss_Decomposition.h:62
size_t fileSectionOffset
Definition Ioss_Decomposition.h:61
std::vector< int > exportIndex
Definition Ioss_Decomposition.h:82
size_t fileCount
Definition Ioss_Decomposition.h:63
std::vector< int > importCount
Definition Ioss_Decomposition.h:87
size_t zoneNodeOffset
Definition Ioss_Decomposition.h:67
int zone_
Definition Ioss_Decomposition.h:58
int nodesPerEntity
Definition Ioss_Decomposition.h:69
int section_
Definition Ioss_Decomposition.h:59
BlockDecompositionData()=default
size_t globalCount
Definition Ioss_Decomposition.h:65
std::vector< int > exportMap
Definition Ioss_Decomposition.h:80
IOSS_NODISCARD size_t global_elem_count() const
Definition Ioss_Decomposition.h:191
void metis_decompose(idx_t *pointer, idx_t *adjacency, std::vector< BlockDecompositionData > &el_blocks)
Definition Ioss_Decomposition.C:917
std::vector< INT > localElementMap
Definition Ioss_Decomposition.h:867
std::vector< INT > importNodeCount
Definition Ioss_Decomposition.h:888
std::vector< INT > exportElementMap
Definition Ioss_Decomposition.h:874
IOSS_NODISCARD size_t elem_global_to_local(size_t global_index) const
Definition Ioss_Decomposition.h:245
std::string m_method
Definition Ioss_Decomposition.h:790
void build_global_to_local_elem_map()
Definition Ioss_Decomposition.C:1296
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
Definition Ioss_Decomposition.h:680
std::vector< INT > exportNodeMap
Definition Ioss_Decomposition.h:882
std::vector< double > m_centroids
Definition Ioss_Decomposition.h:812
void communicate_element_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition Ioss_Decomposition.h:330
bool m_retainFreeNodes
Definition Ioss_Decomposition.h:806
void guided_decompose()
Definition Ioss_Decomposition.C:727
std::vector< INT > importNodeIndex
Definition Ioss_Decomposition.h:889
std::vector< INT > m_elementDist
Definition Ioss_Decomposition.h:893
std::vector< INT > exportNodeCount
Definition Ioss_Decomposition.h:883
std::vector< int > m_elementToProc
Definition Ioss_Decomposition.h:811
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
Definition Ioss_Decomposition.h:570
std::vector< INT > nodeGTL
Definition Ioss_Decomposition.h:897
Ioss_MPI_Comm m_comm
Definition Ioss_Decomposition.h:786
bool m_showHWM
Definition Ioss_Decomposition.h:809
IOSS_NODISCARD size_t ioss_elem_count() const
Definition Ioss_Decomposition.h:193
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:1028
std::vector< INT > m_nodeCommMap
Definition Ioss_Decomposition.h:817
std::vector< size_t > m_fileBlockIndex
Definition Ioss_Decomposition.h:823
void set_block_omissions(const Ioss::NameList &omissions)
Definition Ioss_Decomposition.C:350
size_t m_elementOffset
Definition Ioss_Decomposition.h:798
std::vector< INT > exportNodeIndex
Definition Ioss_Decomposition.h:884
void simple_node_decompose()
Definition Ioss_Decomposition.C:882
void get_element_block_communication(std::vector< BlockDecompositionData > &el_blocks)
Definition Ioss_Decomposition.C:379
void get_node_entity_proc_data(INT *entity_proc, const Ioss::MapContainer &node_map, bool do_map) const
Definition Ioss_Decomposition.h:302
std::vector< int64_t > m_omittedBlocks
Definition Ioss_Decomposition.h:824
IOSS_NODISCARD size_t ioss_node_count() const
Definition Ioss_Decomposition.h:192
int m_processor
Definition Ioss_Decomposition.h:788
void get_local_element_list(const ZOLTAN_ID_PTR &export_global_ids, size_t export_count)
Definition Ioss_Decomposition.C:1258
int m_commonNodeCount
Definition Ioss_Decomposition.h:795
IOSS_NODISCARD bool i_own_elem(size_t global_index) const
Definition Ioss_Decomposition.h:218
size_t m_nodeOffset
Definition Ioss_Decomposition.h:803
void communicate_node_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition Ioss_Decomposition.h:705
Decomposition(const Ioss::PropertyManager &props, Ioss_MPI_Comm comm)
Definition Ioss_Decomposition.C:283
size_t m_globalElementCount
Definition Ioss_Decomposition.h:796
void simple_decompose()
Definition Ioss_Decomposition.C:862
void decompose_model(Zoltan &zz, std::vector< BlockDecompositionData > &element_blocks)
Definition Ioss_Decomposition.C:461
std::vector< INT > m_nodeDist
Definition Ioss_Decomposition.h:894
size_t m_importPreLocalElemIndex
Definition Ioss_Decomposition.h:799
std::vector< INT > importElementMap
Definition Ioss_Decomposition.h:869
IOSS_NODISCARD size_t node_global_to_local(size_t global_index) const
Definition Ioss_Decomposition.h:232
IOSS_NODISCARD size_t file_elem_offset() const
Definition Ioss_Decomposition.h:200
Decomposition & operator=(Decomposition const &)=default
void generate_entity_distributions(size_t global_node_count, size_t global_element_count)
Definition Ioss_Decomposition.C:365
void communicate_block_data(T *file_data, U *ioss_data, const BlockDecompositionData &block, size_t comp_count) const
Definition Ioss_Decomposition.h:491
void show_progress(std::string_view message) const
Definition Ioss_Decomposition.h:263
Decomposition(Decomposition const &)=default
IOSS_NODISCARD size_t file_node_count() const
Definition Ioss_Decomposition.h:197
std::vector< INT > m_adjacency
Definition Ioss_Decomposition.h:815
IOSS_NODISCARD bool needs_centroids() const
Definition Ioss_Decomposition.h:202
bool m_showProgress
Definition Ioss_Decomposition.h:808
void communicate_set_data(T *file_data, T *ioss_data, const SetDecompositionData &set, size_t comp_count) const
Definition Ioss_Decomposition.h:433
std::vector< INT > importElementCount
Definition Ioss_Decomposition.h:870
IOSS_NODISCARD size_t file_elem_count() const
Definition Ioss_Decomposition.h:198
Ioss::ParallelUtils m_pu
Definition Ioss_Decomposition.h:787
size_t m_importPreLocalNodeIndex
Definition Ioss_Decomposition.h:804
std::vector< INT > exportElementIndex
Definition Ioss_Decomposition.h:878
std::string m_decompExtra
Definition Ioss_Decomposition.h:791
Decomposition(Decomposition &&)=default
std::vector< INT > nodeIndex
Definition Ioss_Decomposition.h:880
size_t m_nodeCount
Definition Ioss_Decomposition.h:802
std::vector< INT > m_pointer
Definition Ioss_Decomposition.h:814
std::vector< INT > localNodeMap
Definition Ioss_Decomposition.h:891
IOSS_NODISCARD bool i_own_node(size_t global_index) const
Definition Ioss_Decomposition.h:211
std::vector< std::pair< INT, INT > > elemGTL
Definition Ioss_Decomposition.h:904
bool m_lineDecomp
Definition Ioss_Decomposition.h:807
std::vector< INT > exportElementCount
Definition Ioss_Decomposition.h:876
void zoltan_decompose(Zoltan &zz)
Definition Ioss_Decomposition.C:1124
std::vector< std::string > m_omittedBlockNames
Definition Ioss_Decomposition.h:825
IOSS_NODISCARD size_t file_node_offset() const
Definition Ioss_Decomposition.h:199
void calculate_element_centroids(const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z)
Definition Ioss_Decomposition.C:560
Decomposition & operator=(Decomposition &&)=default
int m_processorCount
Definition Ioss_Decomposition.h:789
void get_local_node_list()
Definition Ioss_Decomposition.C:1339
size_t m_globalNodeCount
Definition Ioss_Decomposition.h:801
std::vector< float > m_weights
Definition Ioss_Decomposition.h:813
std::vector< INT > importElementIndex
Definition Ioss_Decomposition.h:871
int m_spatialDimension
Definition Ioss_Decomposition.h:794
IOSS_NODISCARD size_t global_node_count() const
Definition Ioss_Decomposition.h:190
std::vector< INT > importNodeMap
Definition Ioss_Decomposition.h:887
void get_shared_node_list()
Definition Ioss_Decomposition.C:1547
size_t m_elementCount
Definition Ioss_Decomposition.h:797
Definition Ioss_Decomposition.h:140
IOSS_NODISCARD std::vector< size_t > get_import_offset(const std::vector< int64_t > &blockSubsetIndex, const std::vector< int > &blockComponentCount) const
Definition Ioss_Decomposition.C:221
IOSS_NODISCARD std::vector< size_t > get_ioss_offset(const std::vector< int64_t > &blockSubsetIndex, const std::vector< int > &blockComponentCount) const
Definition Ioss_Decomposition.C:199
IOSS_NODISCARD size_t get_ioss_element_size(const std::vector< int64_t > &blockSubsetIndex) const
Definition Ioss_Decomposition.C:170
IOSS_NODISCARD std::vector< int > get_connectivity_ioss_component_count(const std::vector< int64_t > &blockSubsetIndex) const
Definition Ioss_Decomposition.C:243
IOSS_NODISCARD std::vector< size_t > get_connectivity_import_offset(const std::vector< int64_t > &blockSubsetIndex) const
Definition Ioss_Decomposition.C:270
const std::vector< BlockDecompositionData > & m_data
Definition Ioss_Decomposition.h:167
IOSS_NODISCARD size_t get_ioss_offset_size(const std::vector< int64_t > &blockSubsetIndex, const std::vector< int > &blockComponentCount) const
Definition Ioss_Decomposition.C:183
IOSS_NODISCARD size_t get_connectivity_ioss_offset_size(const std::vector< int64_t > &blockSubsetIndex) const
Definition Ioss_Decomposition.C:256
IOSS_NODISCARD std::vector< size_t > get_connectivity_ioss_offset(const std::vector< int64_t > &blockSubsetIndex) const
Definition Ioss_Decomposition.C:263
ElementBlockBatchOffset()=delete
ElementBlockBatchOffset(const ElementBlockBatchOffset &)=delete
ElementBlockBatchOffset(ElementBlockBatchOffset &&)=delete
ElementBlockBatchOffset(const std::vector< BlockDecompositionData > &data)
Definition Ioss_Decomposition.h:142
Definition Ioss_ParallelUtils.h:32
static IOSS_NODISCARD Ioss_MPI_Comm comm_null()
Definition Ioss_ParallelUtils.h:45
void progress(std::string_view output) const
Definition Ioss_ParallelUtils.C:570
IOSS_NODISCARD int parallel_size() const
Definition Ioss_ParallelUtils.C:203
void broadcast(T &my_value, int root=0) const
A collection of Ioss::Property objects.
Definition Ioss_PropertyManager.h:36
Definition Ioss_Decomposition.h:92
IOSS_NODISCARD size_t ioss_count() const
Definition Ioss_Decomposition.h:114
IOSS_NODISCARD const std::string & ss_name() const
Definition Ioss_Decomposition.h:106
int distributionFactorValsPerEntity
Definition Ioss_Decomposition.h:131
bool distributionFactorConstant
Definition Ioss_Decomposition.h:136
IOSS_NODISCARD size_t df_count() const
Definition Ioss_Decomposition.h:115
int root_
Definition Ioss_Decomposition.h:127
IOSS_NODISCARD int section() const
Definition Ioss_Decomposition.h:112
std::string ss_name_
Definition Ioss_Decomposition.h:122
SetDecompositionData()=default
IOSS_NODISCARD int zone() const
Definition Ioss_Decomposition.h:111
IOSS_NODISCARD const std::string & name() const
Definition Ioss_Decomposition.h:105
std::vector< size_t > entitylist_map
Definition Ioss_Decomposition.h:118
double distributionFactorValue
Definition Ioss_Decomposition.h:133
size_t fileCount
Definition Ioss_Decomposition.h:126
IOSS_NODISCARD int64_t id() const
Definition Ioss_Decomposition.h:110
~SetDecompositionData()
Definition Ioss_Decomposition.h:98
IOSS_NODISCARD size_t file_count() const
Definition Ioss_Decomposition.h:113
std::vector< bool > hasEntities
Definition Ioss_Decomposition.h:119
size_t distributionFactorCount
Definition Ioss_Decomposition.h:132
size_t parentBlockIndex
Definition Ioss_Decomposition.h:129
int section_
Definition Ioss_Decomposition.h:125
int zone_
Definition Ioss_Decomposition.h:124
SetDecompositionData(SetDecompositionData &&)=default
std::string topologyType
Definition Ioss_Decomposition.h:128
std::string name_
Definition Ioss_Decomposition.h:121
SetDecompositionData(const SetDecompositionData &)=delete
int64_t id_
Definition Ioss_Decomposition.h:123
Ioss_MPI_Comm setComm_
Definition Ioss_Decomposition.h:135
static void generate_index(std::vector< T > &index)
Definition Ioss_Utils.h:183
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40
int MY_Alltoallv(const std::vector< T > &sendbuf, const std::vector< int64_t > &sendcnts, const std::vector< int64_t > &senddisp, std::vector< T > &recvbuf, const std::vector< int64_t > &recvcnts, const std::vector< int64_t > &recvdisp, Ioss_MPI_Comm comm)
Definition Ioss_ParallelUtils.h:231
Ioss::NameList NameList
Definition Ioss_ChangeSetFactory.h:25
IOSS_EXPORT const Ioss::NameList & valid_decomp_methods()
Definition Ioss_Decomposition.C:140
std::vector< int64_t > MapContainer
Definition Ioss_Map.h:29
hopscotch_map< Key, T, Hash, KeyEqual, Allocator, NeighborhoodSize, StoreHash, tsl::hh::prime_growth_policy > hopscotch_pg_map
Definition hopscotch_map.h:721
robin_map< Key, T, Hash, KeyEqual, Allocator, StoreHash, tsl::rh::prime_growth_policy > robin_pg_map
Definition robin_map.h:786