11#if defined PARALLEL_AWARE_EXODUS
16#include "ioexnl_export.h"
17#if !defined(NO_PARMETIS_SUPPORT)
22#if !defined(NO_ZOLTAN_SUPPORT)
23#include <zoltan_cpp.h>
34 class IOEXNL_EXPORT DecompositionDataBase
38 DecompositionDataBase(
const DecompositionDataBase &) =
delete;
39 DecompositionDataBase &operator=(
const DecompositionDataBase &) =
delete;
41 virtual ~DecompositionDataBase() =
default;
58 int m_processorCount{0};
60 std::vector<Ioss::BlockDecompositionData> el_blocks;
61 std::vector<Ioss::SetDecompositionData> node_sets;
62 std::vector<Ioss::SetDecompositionData> side_sets;
65 template <
typename INT>
class DecompositionData :
public DecompositionDataBase
69 ~DecompositionData() =
default;
73 IOSS_NODISCARD int spatial_dimension()
const {
return m_decomposition.m_spatialDimension; }
75 IOSS_NODISCARD size_t global_node_count()
const {
return m_decomposition.global_node_count(); }
76 IOSS_NODISCARD size_t global_elem_count()
const {
return m_decomposition.global_elem_count(); }
78 IOSS_NODISCARD size_t ioss_node_count()
const {
return m_decomposition.ioss_node_count(); }
79 IOSS_NODISCARD size_t ioss_elem_count()
const {
return m_decomposition.ioss_elem_count(); }
81 IOSS_NODISCARD size_t decomp_node_offset()
const {
return m_decomposition.file_node_offset(); }
82 IOSS_NODISCARD size_t decomp_node_count()
const {
return m_decomposition.file_node_count(); }
83 IOSS_NODISCARD size_t decomp_elem_offset()
const {
return m_decomposition.file_elem_offset(); }
84 IOSS_NODISCARD size_t decomp_elem_count()
const {
return m_decomposition.file_elem_count(); }
86 void create_implicit_global_map(
const std::vector<int> &owning_proc,
87 std::vector<int64_t> &global_implicit_map,
Ioss::Map &node_map,
88 int64_t *locally_owned_count, int64_t *processor_offset);
91 void simple_decompose(
const std::string &method,
const std::vector<INT> &element_dist)
93 m_decomposition.simple_decompose(method, element_dist);
96 void simple_node_decompose(
const std::string &method,
const std::vector<INT> &node_dist);
99 int handle_sset_df(
int filePtr, ex_entity_id
id,
const Ioss::Field &field, T *ioss_data)
const;
104 return m_decomposition.i_own_node(node);
110 return m_decomposition.i_own_elem(elem);
116 IOSS_NODISCARD size_t node_global_to_local(
size_t global_index)
const
118 return m_decomposition.node_global_to_local(global_index);
121 IOSS_NODISCARD size_t elem_global_to_local(
size_t global_index)
const
123 return m_decomposition.elem_global_to_local(global_index);
126 void build_global_to_local_elem_map()
128 return m_decomposition.build_global_to_local_elem_map();
131 void get_shared_node_list() { m_decomposition.get_shared_node_list(); }
133 void get_local_node_list() { m_decomposition.get_local_node_list(); }
#define IOSS_NODISCARD
Definition Ioss_CodeTypes.h:54
int Ioss_MPI_Comm
Definition Ioss_CodeTypes.h:63
Definition Ioss_Decomposition.h:180
Holds metadata for bulk data associated with a GroupingEntity.
Definition Ioss_Field.h:25
A collection of Ioss::Property objects.
Definition Ioss_PropertyManager.h:36
A namespace for the exodus database format.
Definition Ioexnl_BaseDatabaseIO.C:76
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40