9#include "ioad_export.h"
44 std::string
get_format()
const override {
return "ADIOS2"; }
49 unsigned entity_field_support()
const override;
50 int int_byte_size_db()
const override;
54 size_t data_size)
const override;
56 size_t data_size)
const override;
58 size_t data_size)
const override;
60 size_t data_size)
const override;
62 size_t data_size)
const override;
64 void *data,
size_t data_size)
const override
69 size_t data_size)
const override
74 size_t data_size)
const override
79 size_t data_size)
const override;
81 size_t data_size)
const override;
83 size_t data_size)
const override;
85 size_t data_size)
const override;
87 size_t data_size)
const override;
89 size_t data_size)
const override;
91 size_t data_size)
const override;
94 void *data,
size_t data_size)
const;
96 void get_data(
void *data,
const std::string &encoded_name,
97 bool use_step_selection =
false)
const;
100 size_t data_size)
const override;
102 size_t data_size)
const override;
104 size_t data_size)
const override;
106 size_t data_size)
const override;
108 size_t data_size)
const override;
110 size_t data_size)
const override;
112 size_t data_size)
const override;
114 size_t data_size)
const override;
116 size_t data_size)
const override;
118 size_t data_size)
const override;
120 size_t data_size)
const override;
122 size_t data_size)
const override;
124 void *data,
size_t data_size)
const override
129 size_t data_size)
const override
134 size_t data_size)
const override
138 template <
typename T>
139 int64_t put_field_internal_t(T entity,
const Ioss::Field &field,
void *data,
140 size_t data_size)
const;
143 void define_global_variables();
146 template <
typename T>
void put_data(
void *data,
const std::string &encoded_name)
const;
147 template <
typename T,
typename =
typename std::enable_if<
148 !std::is_base_of<Ioss::EntitySet, T>::value, T>::type>
150 bool transformed_field)
const;
151 template <
typename T>
152 void define_model_internal(
const Ioss::Field &field,
const std::string &encoded_name,
153 const std::string &entity_type,
const std::string &field_name);
154 template <
typename T>
157 int get_current_state()
const;
163 size_t global_size{0};
170 size_t node_boundaries_size = 0;
171 size_t component_count = 0;
180 template <
typename T>
BlockInfoType get_block_infos(
const adios2::Variable<T> &var)
const;
182 template <
typename T>
FieldInfoType get_variable_infos(
const std::string &var_name)
const;
183 using GlobalMapType = std::map<std::string, std::pair<std::string, std::string>>;
187 template <
typename T>
188 std::string get_property_value(
const FieldsMapType &properties_map,
189 const std::string &entity_type,
const std::string &entity_name,
190 const std::string &property_name)
const;
192 template <
typename T>
194 const std::string &entity_type,
195 const std::string &entity_name,
196 const std::string &var_name)
const;
198 const std::string &entity_type,
199 const std::string &entity_name,
200 const std::string &var_name)
const;
202 template <
typename T>
204 typename std::enable_if<std::is_base_of<Ioss::EntityBlock, T>::value>::type;
205 template <
typename T>
207 typename std::enable_if<!std::is_base_of<Ioss::EntityBlock, T>::value>::type;
209 template <
typename T,
typename = IsIossEntityBlock<T>>
210 void define_entity_meta_variables(
const std::string &encoded_name);
212 template <
typename T,
typename = IsNotIossEntityBlock<T>,
typename =
void>
213 void define_entity_meta_variables(
const std::string &encoded_name);
215 void define_field_meta_variables(
const std::string &);
219 void put_meta_variables(
const std::string &encoded_name,
const Ioss::Field &field,
220 const std::string &entity_type,
const std::string &field_name)
const;
221 void write_meta_data();
223 template <
typename T>
225 const std::string &var_name);
227 std::string name =
"");
230 const std::string &encoded_name);
232 template <
typename T> int64_t write_meta_data_container(
const T &entity_blocks);
233 std::pair<int64_t, int64_t>
236 template <
typename T>
238 std::string get_optional_string_variable(
const std::string &field_name,
239 const std::string &string_variable)
const;
243 std::vector<std::string> &block_membership)
const override;
245 const std::string &encoded_entity_name);
247 void read_meta_data_nl()
override;
248 void read_communication_metadata();
250 void check_processor_info();
254 bool begin_state_nl(
int state,
double time)
override;
255 bool end_state_nl(
int state,
double time)
override;
259 int spatialDimension{0};
260 int64_t edgeCount{0};
261 int64_t faceCount{0};
int Ioss_MPI_Comm
Definition Ioss_CodeTypes.h:63
Definition AdiosWrapper.h:19
Definition Ioad_DatabaseIO.h:39
int64_t put_field_internal(const Ioss::Blob *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:133
std::string get_format() const override
Definition Ioad_DatabaseIO.h:44
T get_attribute(const std::string &attribute_name)
int64_t get_field_internal(const Ioss::Assembly *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:68
double previous_time_streaming
Definition Ioad_DatabaseIO.h:264
AdiosWrapper adios_wrapper
Definition Ioad_DatabaseIO.h:257
int64_t put_field_internal(const Ioss::StructuredBlock *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:123
bool is_streaming
Definition Ioad_DatabaseIO.h:263
std::map< std::string, EntityMapType > FieldsMapType
Definition Ioad_DatabaseIO.h:185
void put_var_type(const Ioss::Field &field, const std::string &encoded_name, bool transformed_field) const
unsigned long number_proc
Definition Ioad_DatabaseIO.h:262
typename std::enable_if< std::is_base_of< Ioss::EntityBlock, T >::value >::type IsIossEntityBlock
Definition Ioad_DatabaseIO.h:203
std::map< std::string, GlobalMapType > EntityMapType
Definition Ioad_DatabaseIO.h:184
std::map< std::string, std::pair< std::string, std::string > > GlobalMapType
Definition Ioad_DatabaseIO.h:183
int64_t get_field_internal(const Ioss::StructuredBlock *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:63
int64_t get_field_internal(const Ioss::Blob *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:73
typename std::enable_if<!std::is_base_of< Ioss::EntityBlock, T >::value >::type IsNotIossEntityBlock
Definition Ioad_DatabaseIO.h:206
unsigned long rank
Definition Ioad_DatabaseIO.h:256
int64_t put_field_internal(const Ioss::Assembly *sb, const Ioss::Field &field, void *data, size_t data_size) const override
Definition Ioad_DatabaseIO.h:128
A homogeneous collection of other GroupingEntities.
Definition Ioss_Assembly.h:31
A homogeneous collection of other GroupingEntities.
Definition Ioss_Blob.h:31
Definition Ioss_CommSet.h:27
Definition Ioss_CoordinateFrame.h:19
An input or output Database.
Definition Ioss_DatabaseIO.h:63
A collection of element edges with the same topology.
Definition Ioss_EdgeBlock.h:29
A collection of element edges.
Definition Ioss_EdgeSet.h:30
A collection of elements having the same topology.
Definition Ioss_ElementBlock.h:29
A collection of elements.
Definition Ioss_ElementSet.h:30
A collection of element faces with the same topology.
Definition Ioss_FaceBlock.h:29
A collection of element faces.
Definition Ioss_FaceSet.h:30
Holds metadata for bulk data associated with a GroupingEntity.
Definition Ioss_Field.h:25
BasicType
The basic data type held in the field.
Definition Ioss_Field.h:29
RoleType
Definition Ioss_Field.h:69
Base class for all 'grouping' entities. The following derived classes are typical:
Definition Ioss_GroupingEntity.h:67
A collection of all nodes in the region.
Definition Ioss_NodeBlock.h:33
A collection of nodes.
Definition Ioss_NodeSet.h:29
A collection of Ioss::Property objects.
Definition Ioss_PropertyManager.h:36
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:90
A collection of element sides having the same topology.
Definition Ioss_SideBlock.h:37
A collection of element sides.
Definition Ioss_SideSet.h:29
A structured zone – i,j,k.
Definition Ioss_StructuredBlock.h:104
A namespace for the adios database format.
Definition AdiosWrapper.C:11
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40
State
Access states for a database.
Definition Ioss_State.h:15
DatabaseUsage
Specifies how an Ioss::DatabaseIO object will be used.
Definition Ioss_DBUsage.h:13
std::vector< SideBlock * > SideBlockContainer
Definition Ioss_SideSet.h:24
std::vector< CoordinateFrame > CoordinateFrameContainer
Definition Ioex_Utils.h:46
Definition Ioad_DatabaseIO.h:160
adios2::Dims Count
Definition Ioad_DatabaseIO.h:162
std::vector< size_t > steps
Definition Ioad_DatabaseIO.h:161
Definition Ioad_DatabaseIO.h:167
std::vector< size_t > steps
Definition Ioad_DatabaseIO.h:169
Ioss::Field::RoleType role
Definition Ioad_DatabaseIO.h:173
std::string variable_type
Definition Ioad_DatabaseIO.h:174
std::string parent_topology
Definition Ioad_DatabaseIO.h:177
Ioss::Field::BasicType basic_type
Definition Ioad_DatabaseIO.h:175
std::string topology
Definition Ioad_DatabaseIO.h:176