34 #ifndef IOCGNS_DECOMPOSITONDATA_H 35 #define IOCGNS_DECOMPOSITONDATA_H 38 #include <unordered_map> 54 #if !defined(NO_PARMETIS_SUPPORT) 60 #if !defined(NO_ZOLTAN_SUPPORT) 61 #include <zoltan_cpp.h> 85 virtual void decompose_model(
int filePtr, CG_ZoneType_t common_zone_type) = 0;
86 virtual size_t ioss_node_count()
const = 0;
87 virtual size_t ioss_elem_count()
const = 0;
88 virtual int int_size()
const = 0;
90 virtual int spatial_dimension()
const = 0;
91 virtual size_t global_node_count()
const = 0;
92 virtual size_t global_elem_count()
const = 0;
94 virtual size_t decomp_node_offset()
const = 0;
95 virtual size_t decomp_node_count()
const = 0;
96 virtual size_t decomp_elem_offset()
const = 0;
97 virtual size_t decomp_elem_count()
const = 0;
99 virtual std::vector<double> ¢roids() = 0;
101 virtual size_t get_commset_node_size()
const = 0;
103 virtual void get_node_coordinates(
int filePtr,
double *ioss_data,
106 void get_block_connectivity(
int filePtr,
void *
data,
int blk_seq)
const;
108 void get_element_field(
int filePtr,
int solution_index,
int blk_seq,
int field_index,
111 void get_node_field(
int filePtr,
int solution_index,
int field_index,
double *data)
const;
116 template <
typename T>
117 void communicate_element_data(T *file_data, T *ioss_data,
size_t comp_count)
const;
119 template <
typename T>
120 void communicate_node_data(T *file_data, T *ioss_data,
size_t comp_count)
const;
143 void decompose_model(
int filePtr, CG_ZoneType_t common_zone_type);
158 std::vector<double> &
centroids() {
return m_decomposition.m_centroids; }
160 template <
typename T>
163 m_decomposition.communicate_element_data(file_data, ioss_data, comp_count);
167 size_t comp_count)
const 169 m_decomposition.communicate_set_data(file_data, ioss_data,
set, comp_count);
172 template <
typename T>
175 m_decomposition.communicate_node_data(file_data, ioss_data, comp_count);
178 template <
typename U,
typename T>
182 m_decomposition.communicate_block_data(file_data, ioss_data, block, comp_count);
185 void get_block_connectivity(
int filePtr,
INT *
data,
int blk_seq)
const;
187 void get_element_field(
int filePtr,
int solution_index,
int blk_seq,
int field_index,
190 void get_node_field(
int filePtr,
int solution_index,
int field_index,
double *data)
const;
198 void decompose_structured(
int filePtr);
199 void decompose_unstructured(
int filePtr);
201 void get_sideset_data(
int filePtr);
202 void generate_zone_shared_nodes(
int filePtr,
INT min_node,
INT max_node);
207 return m_decomposition.i_own_node(node);
213 return m_decomposition.i_own_elem(elem);
221 return m_decomposition.node_global_to_local(global_index);
226 return m_decomposition.elem_global_to_local(global_index);
231 return m_decomposition.build_global_to_local_elem_map();
236 m_decomposition.get_element_block_communication(m_elementBlocks);
241 void calculate_element_centroids(
int filePtr, std::vector<double> ¢roids);
247 void get_file_node_coordinates(
int filePtr,
int direction,
double *ioss_data)
const;
248 void get_node_coordinates(
int filePtr,
double *ioss_data,
const Ioss::Field &field)
const;
250 double m_loadBalanceThreshold{1.4};
251 std::string m_lineDecomposition{};
void get_local_node_list()
Definition: Iocgns_DecompositionData.h:245
size_t global_node_count() const
Definition: Iocgns_DecompositionData.h:147
std::vector< double > & centroids()
Definition: Iocgns_DecompositionData.h:158
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
Definition: Iocgns_DecompositionData.h:79
std::vector< Iocgns::StructuredZoneData * > m_structuredZones
Definition: Iocgns_DecompositionData.h:128
Definition: Ioss_Decomposition.h:104
A namespace for the CGNS database format.
Definition: Iocgns_DatabaseIO.C:89
int int_size() const
Definition: Iocgns_DecompositionData.h:141
std::vector< ZoneData > m_zones
Definition: Iocgns_DecompositionData.h:125
size_t node_global_to_local(size_t global_index) const
Definition: Iocgns_DecompositionData.h:219
void communicate_node_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Iocgns_DecompositionData.h:173
size_t decomp_node_count() const
Definition: Iocgns_DecompositionData.h:154
void communicate_block_data(U *file_data, T *ioss_data, const Ioss::BlockDecompositionData &block, size_t comp_count) const
Definition: Iocgns_DecompositionData.h:179
void build_global_to_local_elem_map()
Definition: Iocgns_DecompositionData.h:229
size_t decomp_elem_offset() const
Definition: Iocgns_DecompositionData.h:155
std::unordered_map< cgsize_t, cgsize_t > m_zoneSharedMap
Definition: Iocgns_DecompositionData.h:132
Definition: Iocgns_DecompositionData.h:135
size_t m_nodeCount
Definition: Iocgns_DecompositionData.h:75
bool i_own_elem(size_t elem) const
Definition: Iocgns_DecompositionData.h:210
size_t m_elementOffset
Definition: Iocgns_DecompositionData.h:76
std::vector< Ioss::BlockDecompositionData > m_elementBlocks
Definition: Iocgns_DecompositionData.h:126
size_t decomp_node_offset() const
Definition: Iocgns_DecompositionData.h:153
DecompositionDataBase(MPI_Comm comm)
Definition: Iocgns_DecompositionData.h:82
std::vector< int64_t > MapContainer
Definition: Ioss_Map.h:48
~DecompositionData()
Definition: Iocgns_DecompositionData.h:139
size_t m_nodeOffset
Definition: Iocgns_DecompositionData.h:74
void communicate_element_data(T *file_data, T *ioss_data, size_t comp_count) const
Definition: Iocgns_DecompositionData.h:161
size_t ioss_elem_count() const
Definition: Iocgns_DecompositionData.h:151
int INT
Definition: Ioss_StructuredBlock.h:53
size_t elem_global_to_local(size_t global_index) const
Definition: Iocgns_DecompositionData.h:224
Definition: Iocgns_DecompositionData.h:65
int spatial_dimension() const
Definition: Iocgns_DecompositionData.h:145
Ioss::Decomposition< INT > m_decomposition
Definition: Iocgns_DecompositionData.h:254
size_t global_elem_count() const
Definition: Iocgns_DecompositionData.h:148
Definition: Ioss_Decomposition.h:57
std::vector< Ioss::SetDecompositionData > m_sideSets
Definition: Iocgns_DecompositionData.h:127
size_t get_commset_node_size() const
Definition: Iocgns_DecompositionData.h:192
size_t decomp_elem_count() const
Definition: Iocgns_DecompositionData.h:156
void communicate_set_data(INT *file_data, INT *ioss_data, const Ioss::SetDecompositionData &set, size_t comp_count) const
Definition: Iocgns_DecompositionData.h:166
Holds metadata for bulk data associated with a GroupingEntity.
Definition: Ioss_Field.h:47
int MPI_Comm
Definition: Ioss_CodeTypes.h:79
std::string m_name
Definition: Iocgns_DecompositionData.h:73
size_t ioss_node_count() const
Definition: Iocgns_DecompositionData.h:150
bool i_own_node(size_t node) const
Definition: Iocgns_DecompositionData.h:204
void get_shared_node_list()
Definition: Iocgns_DecompositionData.h:243
void get_element_block_communication()
Definition: Iocgns_DecompositionData.h:234
A collection of Ioss::Property objects.
Definition: Ioss_PropertyManager.h:49
Definition: Iocgns_DecompositionData.h:70
std::vector< char > data
Definition: Ioss_Utils.C:78