IOSS 2.0
Loading...
Searching...
No Matches
Ioex::DatabaseIO Class Reference

#include <Ioex_DatabaseIO.h>

Inheritance diagram for Ioex::DatabaseIO:
[legend]
Collaboration diagram for Ioex::DatabaseIO:
[legend]

Public Member Functions

 DatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, Ioss_MPI_Comm communicator, const Ioss::PropertyManager &props)
 
IOSS_NODISCARD int get_file_pointer () const override
 
- Public Member Functions inherited from Ioex::BaseDatabaseIO
 BaseDatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, Ioss_MPI_Comm communicator, const Ioss::PropertyManager &props)
 
 ~BaseDatabaseIO () override
 
IOSS_NODISCARD std::string get_format () const override
 
IOSS_NODISCARD unsigned entity_field_support () const override
 
IOSS_NODISCARD std::string get_internal_change_set_name () const override
 
bool supports_group () const
 Checks if a database type supports groups.
 
bool open_group (const std::string &group_name)
 If a database type supports groups and if the database contains groups, open the specified group.
 
bool create_subgroup (const std::string &group_name)
 If a database type supports groups, create the specified group as a child of the current group.
 
bool open_root_group ()
 If a database type supports groups, and if the database contains groups, open the root group for the current group.
 
int num_child_group () const
 If a database type supports groups, and if the database contains groups, return the number of child groups for the current group.
 
bool open_child_group (int child_index)
 If a database type supports groups, open the child group of the current group at the specified [zero-based] index.
 
Ioss::NameList groups_describe (bool return_full_names=false) const
 If a database type supports groups, return a list of group names.
 
- Public Member Functions inherited from Ioss::DatabaseIO
 DatabaseIO ()=delete
 
 DatabaseIO (const DatabaseIO &)=delete
 
 DatabaseIO (DatabaseIO &&)=delete
 
DatabaseIOoperator= (const DatabaseIO &)=delete
 
DatabaseIOoperator= (DatabaseIO &&)=delete
 
virtual ~DatabaseIO ()
 
IOSS_NODISCARD bool ok (bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const
 Check to see if database state is OK.
 
IOSS_NODISCARD bool using_parallel_io () const
 
IOSS_NODISCARD int64_t node_global_to_local (int64_t global, bool must_exist) const
 Get the local (process-specific) node number corresponding to a global node number.
 
IOSS_NODISCARD int64_t element_global_to_local (int64_t global) const
 
virtual IOSS_NODISCARD bool node_major () const
 
void release_memory ()
 
virtual void finalize_database () const
 
void set_pfs_name (const std::string &name) const
 
IOSS_NODISCARD std::string get_pfs_name () const
 
void set_dw_name (const std::string &name) const
 this will be the name in BB namespace
 
IOSS_NODISCARD std::string get_dw_name () const
 
IOSS_NODISCARD std::string get_dw_path () const
 We call this ONLY after we assure that using_dw() is TRUE.
 
void check_set_dw () const
 
IOSS_NODISCARD bool using_dw () const
 
IOSS_NODISCARD std::string get_filename () const
 Get the file name associated with the database.
 
IOSS_NODISCARD const std::string & decoded_filename () const
 Get a file-per-processor filename associated with the database.
 
IOSS_NODISCARD bool is_input () const
 Determine whether the database is an input database.
 
IOSS_NODISCARD Ioss::DatabaseUsage usage () const
 Get the Ioss::DatabaseUsage type of the database.
 
virtual IOSS_NODISCARD bool needs_shared_node_information () const
 Determine whether the database needs information about process ownership of nodes.
 
IOSS_NODISCARD Ioss::IfDatabaseExistsBehavior open_create_behavior () const
 
void set_region (Region *region)
 
void open_dw (const std::string &filename) const
 If we are planning to use BB(aka Burst Buffer) service, we will call simple C API provided by Cray DataWarp module.
 
void close_dw () const
 Function which invokes stageout from BB to Disk, prior to completion of final close.
 
void openDatabase () const
 
void closeDatabase () const
 
void flush_database () const
 
void reset_database ()
 
bool open_internal_change_set (const std::string &set_name)
 If a database type supports internal change sets and if the database contains internal change sets, open the specified set.
 
bool create_internal_change_set (const std::string &set_name)
 If a database type supports internal change sets, create the specified set.
 
int num_internal_change_set ()
 If a database type supports internal change sets, and if the database contains internal change sets, return the number of change sets.
 
bool open_internal_change_set (int set_index)
 If a database type supports internal change sets, open the change set specified [zero-based] index.
 
Ioss::NameList internal_change_set_describe (bool return_full_names=false)
 If a database type supports internal change sets, return a list of set names.
 
bool supports_internal_change_set ()
 Checks if a database type supports internal change sets.
 
bool begin (Ioss::State state)
 Set the database to the given State.
 
bool end (Ioss::State state)
 Return the database to STATE_CLOSED.
 
bool begin_state (int state, double time)
 
bool end_state (int state, double time)
 
void read_meta_data ()
 
void get_step_times ()
 
std::vector< double > get_db_step_times ()
 Return the list of timesteps in the database contingent on certain controlling properties.
 
virtual IOSS_NODISCARD bool internal_edges_available () const
 
virtual IOSS_NODISCARD bool internal_faces_available () const
 
IOSS_NODISCARD const Ioss::NameListget_information_records () const
 Get all information records (informative strings) for the database.
 
void add_information_records (const Ioss::NameList &info)
 Add multiple information records (informative strings) to the database.
 
void add_information_record (const std::string &info)
 Add an information record (an informative string) to the database.
 
IOSS_NODISCARD const Ioss::NameListget_qa_records () const
 Get all QA records, each of which consists of 4 strings, from the database.
 
void add_qa_record (const std::string &code, const std::string &code_qa, const std::string &date, const std::string &time)
 Add a QA record, which consists of 4 strings, to the database.
 
IOSS_NODISCARD bool get_logging () const
 
void set_logging (bool on_off)
 
IOSS_NODISCARD bool get_nan_detection () const
 
void set_nan_detection (bool on_off)
 
template<typename T >
int64_t get_field (const T *reg, const Field &field, void *data, size_t data_size) const
 
template<typename T >
int64_t put_field (const T *reg, const Field &field, void *data, size_t data_size) const
 
template<typename T >
int64_t get_zc_field (const T *reg, const Field &field, void **data, size_t *data_size) const
 
IOSS_NODISCARD bool is_parallel_consistent () const
 
void set_parallel_consistency (bool on_off)
 
IOSS_NODISCARD bool get_use_generic_canonical_name () const
 
void set_use_generic_canonical_name (bool yes_no)
 
IOSS_NODISCARD bool ignore_database_names () const
 
void ignore_database_names (bool yes_no)
 
IOSS_NODISCARD bool get_ignore_realn_fields () const
 
void set_ignore_realn_fields (bool yes_no)
 
IOSS_NODISCARD std::string get_component_name (const Ioss::Field &field, Ioss::Field::InOut in_out, int component) const
 
IOSS_NODISCARD char get_field_separator () const
 
IOSS_NODISCARD bool get_field_recognition () const
 
IOSS_NODISCARD bool get_field_strip_trailing_ () const
 
void set_field_separator (char separator)
 Set the character used to separate a field suffix from the field basename when recognizing vector, tensor fields.
 
void set_field_recognition (bool yes_no)
 
void set_field_strip_trailing_ (bool yes_no)
 
IOSS_NODISCARD DuplicateFieldBehavior get_duplicate_field_behavior () const
 
void set_lower_case_variable_names (bool true_false) const
 
void set_surface_split_type (Ioss::SurfaceSplitType split_type)
 
IOSS_NODISCARD Ioss::SurfaceSplitType get_surface_split_type () const
 
void set_block_omissions (const Ioss::NameList &omissions, const Ioss::NameList &inclusions={})
 
void set_assembly_omissions (const Ioss::NameList &omissions, const Ioss::NameList &inclusions={})
 
void get_block_adjacencies (const Ioss::ElementBlock *eb, Ioss::NameList &block_adjacency) const
 
void compute_block_membership (Ioss::SideBlock *efblock, Ioss::NameList &block_membership) const
 
IOSS_NODISCARD AxisAlignedBoundingBox get_bounding_box (const Ioss::NodeBlock *nb) const
 
IOSS_NODISCARD AxisAlignedBoundingBox get_bounding_box (const Ioss::ElementBlock *eb) const
 
IOSS_NODISCARD AxisAlignedBoundingBox get_bounding_box (const Ioss::StructuredBlock *sb) const
 
IOSS_NODISCARD int int_byte_size_api () const
 Returns 4 or 8.
 
IOSS_NODISCARD Ioss::DataSize int_byte_size_data_size () const
 
IOSS_NODISCARD Regionget_region () const
 
void set_cycle_count (int count) const
 
IOSS_NODISCARD int get_cycle_count () const
 
void set_overlay_count (int count) const
 
IOSS_NODISCARD int get_overlay_count () const
 
void set_file_per_state (bool yes_no) const
 
IOSS_NODISCARD bool get_file_per_state () const
 
void set_time_scale_factor (double factor)
 
IOSS_NODISCARD const Ioss::ParallelUtilsutil () const
 
IOSS_NODISCARD const Ioss::PropertyManagerget_property_manager () const
 
IOSS_NODISCARD int parallel_rank () const
 Get the processor that this mesh database is on.
 
IOSS_NODISCARD int parallel_size () const
 
IOSS_NODISCARD bool is_parallel () const
 
void progress (const std::string &output) const
 
virtual std::vector< size_t > get_entity_field_data (const std::string &field_name, const std::vector< Ioss::ElementBlock * > &elem_blocks, void *data, size_t data_size) const
 
template<>
void create_group (EntityType type, const std::string &, const Ioss::NameList &group_spec, const SideSet *)
 

Private Member Functions

void get_step_times_nl () override
 
std::vector< double > get_db_step_times_nl () override
 
std::vector< double > internal_get_step_times_nl (bool setRegionTimeSteps)
 
bool open_input_file (bool write_message, std::string *error_msg, int *bad_count, bool abort_if_error) const override
 
bool handle_output_file (bool write_message, std::string *error_msg, int *bad_count, bool overwrite, bool abort_if_error) const override
 
IOSS_NODISCARD bool check_valid_file_ptr (bool write_message, std::string *error_msg, int *bad_count, bool abort_if_error) const
 
int64_t get_field_internal (const Ioss::Region *reg, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::Blob *blob, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::Assembly *assem, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::NodeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::EdgeBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::FaceBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::ElementBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::StructuredBlock *, const Ioss::Field &, void *, size_t) const override
 
int64_t get_field_internal (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::NodeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::EdgeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::FaceSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::ElementSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::SideSet *ss, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::CommSet *cs, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::Region *reg, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::Blob *blob, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::Assembly *assem, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::NodeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::EdgeBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::FaceBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::ElementBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::NodeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::EdgeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::FaceSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::ElementSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::SideSet *ss, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::CommSet *cs, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::StructuredBlock *, const Ioss::Field &, void *, size_t) const override
 
int64_t put_Xset_field_internal (const Ioss::EntitySet *ns, const Ioss::Field &field, void *data, size_t data_size) const
 
int64_t get_Xset_field_internal (const Ioss::EntitySet *ns, const Ioss::Field &field, void *data, size_t data_size) const
 
int64_t read_nodal_coordinates ()
 
void read_elements (const Ioss::ElementBlock &block)
 
void compute_node_status () const
 
void read_meta_data_nl () override
 
void read_communication_metadata ()
 
int64_t read_transient_field (const Ioex::VariableNameMap &variables, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const
 
int64_t read_attribute_field (const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const
 
int64_t write_attribute_field (const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const
 
int64_t read_ss_transient_field (const Ioss::Field &field, int64_t id, void *variables, std::vector< int > &is_valid_side) const
 
void write_nodal_transient_field (const Ioss::Field &field, const Ioss::NodeBlock *ge, int64_t count, void *variables) const
 
void write_entity_transient_field (const Ioss::Field &field, const Ioss::GroupingEntity *ge, int64_t count, void *variables) const
 
void write_meta_data (Ioss::IfDatabaseExistsBehavior behavior) override
 
void gather_communication_metadata (Ioex::CommunicationMetaData *meta)
 
void read_region ()
 
void get_edgeblocks ()
 
void get_faceblocks ()
 
void get_elemblocks ()
 
void get_blocks (ex_entity_type entity_type, int rank_offset, const std::string &basename)
 
void get_sidesets ()
 
template<typename T >
void get_sets (ex_entity_type type, int64_t count, const std::string &base, const T *)
 
void get_nodesets ()
 
void get_edgesets ()
 
void get_facesets ()
 
void get_elemsets ()
 
void get_commsets ()
 
IOSS_NODISCARD const Ioss::Mapget_map (ex_entity_type type) const
 
IOSS_NODISCARD const Ioss::Mapget_map (Ioss::Map &entity_map, int64_t entity_count, ex_entity_type entity_type, ex_inquiry inquiry_type) const
 
int64_t handle_node_ids (void *ids, int64_t num_to_get) const
 
int64_t handle_element_ids (const Ioss::ElementBlock *eb, void *ids, size_t num_to_get) const
 
int64_t handle_face_ids (const Ioss::FaceBlock *eb, void *ids, size_t num_to_get) const
 
int64_t handle_edge_ids (const Ioss::EdgeBlock *eb, void *ids, size_t num_to_get) const
 
int64_t get_side_connectivity (const Ioss::SideBlock *sd_blk, int64_t id, int64_t my_side_count, void *fconnect, bool map_ids) const
 
template<typename INT >
int64_t get_side_connectivity_internal (const Ioss::SideBlock *sd_blk, int64_t id, int64_t side_count, INT *fconnect, bool map_ids) const
 
int64_t get_side_distributions (const Ioss::SideBlock *sd_blk, int64_t id, int64_t my_side_count, double *dist_fact, size_t data_size) const
 
int64_t get_side_field (const Ioss::SideBlock *sd_blk, const Ioss::Field &field, void *data, size_t data_size) const
 
int64_t put_side_field (const Ioss::SideBlock *sd_blk, const Ioss::Field &field, void *data, size_t data_size) const
 true if application code is controlling the processor id.
 

Private Attributes

bool isSerialParallel {false}
 

Additional Inherited Members

- Protected Member Functions inherited from Ioex::BaseDatabaseIO
IOSS_NODISCARD bool ok_nl (bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const override
 
void release_memory_nl () override
 
bool supports_internal_change_set_nl () override
 
bool open_internal_change_set_nl (const std::string &set_name) override
 
bool open_internal_change_set_nl (int index) override
 
bool create_internal_change_set_nl (const std::string &set_name) override
 
int num_internal_change_set_nl () override
 
Ioss::NameList internal_change_set_describe_nl (bool return_full_names) override
 
bool open_root_group_nl () const
 
bool open_group_nl (const std::string &group_name) const
 
bool open_child_group_nl (int index) const
 
bool create_subgroup_nl (const std::string &group_name)
 
bool begin_nl (Ioss::State state) override
 
bool end_nl (Ioss::State state) override
 
void open_state_file (int state)
 
bool begin_state_nl (int state, double time) override
 
bool end_state_nl (int state, double time) override
 
IOSS_NODISCARD int maximum_symbol_length () const override
 Get the length of the longest name in the database file.
 
void set_maximum_symbol_length (int requested_symbol_size) override
 
size_t handle_block_ids (const Ioss::EntityBlock *eb, ex_entity_type map_type, Ioss::Map &entity_map, void *ids, size_t num_to_get, size_t offset) const
 
void compute_block_membership_nl (Ioss::SideBlock *efblock, Ioss::NameList &block_membership) const override
 
IOSS_NODISCARD int int_byte_size_db () const override
 
void set_int_byte_size_api (Ioss::DataSize size) const override
 Returns 4 or 8.
 
void write_results_metadata (bool gather_data, Ioss::IfDatabaseExistsBehavior behavior)
 
void openDatabase_nl () const override
 
void closeDatabase_nl () const override
 
virtual int free_file_pointer () const
 
void finalize_file_open () const
 
IOSS_NODISCARD int get_current_state () const
 
void put_qa ()
 
void put_info ()
 
template<typename T >
void internal_gather_results_metadata (ex_entity_type type, std::vector< T * > entities)
 
void generate_sideset_truth_table ()
 
void output_results_names (ex_entity_type type, VariableNameMap &variables, bool reduction) const
 
int gather_names (VariableNameMap &variables, const Ioss::GroupingEntity *ge, int index, bool reduction)
 
void get_nodeblocks ()
 
void get_assemblies ()
 
void get_blobs ()
 
void update_block_omissions_from_assemblies ()
 
void add_attribute_fields (Ioss::GroupingEntity *block, int attribute_count, const std::string &type)
 
void common_write_metadata (Ioss::IfDatabaseExistsBehavior behavior)
 
void output_other_metadata ()
 
void output_field_metadata ()
 
int64_t internal_add_results_fields (ex_entity_type type, Ioss::GroupingEntity *entity, int64_t position, int64_t block_count, Ioss::IntVector &truth_table, Ioex::VariableNameMap &variables)
 
int64_t add_results_fields (Ioss::GroupingEntity *entity, int64_t position=0)
 
int64_t add_reduction_results_fields (Ioss::GroupingEntity *entity)
 
void add_mesh_reduction_fields (int64_t id, Ioss::GroupingEntity *entity)
 
std::vector< Ioss::Fieldget_fields_via_field_metadata (Ioss::GroupingEntity *entity, ex_entity_type type, Ioss::NameList &names)
 
void add_region_fields ()
 
void store_reduction_field (const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *variables) const
 
void get_reduction_field (const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *variables) const
 
void write_reduction_fields () const
 
void read_reduction_fields () const
 
IOSS_NODISCARD int get_database_step (int global_step) const
 
void flush_database_nl () const override
 
void finalize_write (int state, double sim_time)
 
- Protected Member Functions inherited from Ioss::DatabaseIO
 DatabaseIO (Region *region, std::string filename, Ioss::DatabaseUsage db_usage, Ioss_MPI_Comm communicator, const Ioss::PropertyManager &props)
 
void set_common_side_topology () const
 
template<typename T >
void create_groups (const std::string &property_name, EntityType type, const std::string &type_name, const T *set_type)
 
template<typename T >
void create_group (EntityType type, const std::string &type_name, const Ioss::NameList &group_spec, const T *set_type)
 
void handle_groups ()
 
void check_side_topology () const
 
virtual void reset_database_nl ()
 
- Protected Attributes inherited from Ioex::BaseDatabaseIO
int m_exodusFilePtr {-1}
 
int m_exodusBasePtr {-1}
 
std::string m_groupName
 
EntityIdSet ids_
 
int exodusMode {EX_CLOBBER}
 
int dbRealWordSize {8}
 
int maximumNameLength {32}
 
int spatialDimension {0}
 
int64_t edgeCount {0}
 
int64_t faceCount {0}
 
std::map< ex_entity_type, int > m_groupCount
 
Ioss::Int64Vector nodeCmapIds
 
Ioss::Int64Vector nodeCmapNodeCnts
 
Ioss::Int64Vector elemCmapIds
 
Ioss::Int64Vector elemCmapElemCnts
 
int64_t commsetNodeCount {0}
 
int64_t commsetElemCount {0}
 
std::map< ex_entity_type, Ioss::IntVectorm_truthTable
 
std::map< ex_entity_type, VariableNameMapm_variables
 
std::map< ex_entity_type, VariableNameMapm_reductionVariables
 
std::map< ex_entity_type, std::map< int64_t, ValueContainer > > m_reductionValues
 
std::vector< unsigned char > nodeConnectivityStatus
 
std::map< std::string, Ioss::Int64VectoractiveNodeSetNodesIndex
 
time_t timeLastFlush {0}
 
int flushInterval {-1}
 
int m_timestepCount {0}
 
bool fileExists {false}
 
bool minimizeOpenFiles {false}
 
bool blockAdjacenciesCalculated {false}
 
bool nodeConnectivityStatusCalculated
 
- Protected Attributes inherited from Ioss::DatabaseIO
Ioss::PropertyManager properties
 
ElementTopologycommonSideTopology {nullptr}
 
std::string originalDBFilename {}
 
std::string DBFilename {}
 
std::string decodedFilename {}
 
std::string bbName {}
 
std::string pfsName {}
 
std::string dwPath {}
 
Ioss::State dbState {STATE_INVALID}
 
int myProcessor {0}
 number of processor this database is for
 
int64_t nodeCount {0}
 
int64_t elementCount {0}
 
TopoContainer sideTopology {}
 Used to speed up faceblock/edgeblock calculations.
 
int cycleCount {0}
 
int overlayCount {0}
 
double timeScaleFactor {1.0}
 
Ioss::SurfaceSplitType splitType {SPLIT_BY_TOPOLOGIES}
 
Ioss::DatabaseUsage dbUsage {}
 
Ioss::DataSize dbIntSizeAPI {USE_INT32_API}
 
bool filePerState {false}
 
bool usingDataWarp {false}
 
bool isParallel {false}
 true if running in parallel
 
bool lowerCaseVariableNames {true}
 
bool usingParallelIO {false}
 
Ioss::NameList blockOmissions {}
 
Ioss::NameList blockInclusions {}
 
Ioss::NameList assemblyOmissions {}
 
Ioss::NameList assemblyInclusions {}
 
Ioss::NameList informationRecords {}
 
Ioss::NameList qaRecords {}
 
Ioss::Map nodeMap {"node", DBFilename, myProcessor}
 
Ioss::Map edgeMap {"edge", DBFilename, myProcessor}
 
Ioss::Map faceMap {"face", DBFilename, myProcessor}
 
Ioss::Map elemMap {"element", DBFilename, myProcessor}
 
std::vector< std::vector< bool > > blockAdjacency
 

Constructor & Destructor Documentation

◆ DatabaseIO()

Ioex::DatabaseIO::DatabaseIO ( Ioss::Region * region,
const std::string & filename,
Ioss::DatabaseUsage db_usage,
Ioss_MPI_Comm communicator,
const Ioss::PropertyManager & props )

Member Function Documentation

◆ check_valid_file_ptr()

bool Ioex::DatabaseIO::check_valid_file_ptr ( bool write_message,
std::string * error_msg,
int * bad_count,
bool abort_if_error ) const
private

◆ compute_node_status()

void Ioex::DatabaseIO::compute_node_status ( ) const
private
Todo
Get working for parallel...

◆ gather_communication_metadata()

void Ioex::DatabaseIO::gather_communication_metadata ( Ioex::CommunicationMetaData * meta)
private

◆ get_blocks()

void Ioex::DatabaseIO::get_blocks ( ex_entity_type entity_type,
int rank_offset,
const std::string & basename )
private

◆ get_commsets()

void Ioex::DatabaseIO::get_commsets ( )
private

◆ get_db_step_times_nl()

std::vector< double > Ioex::DatabaseIO::get_db_step_times_nl ( )
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ get_edgeblocks()

void Ioex::DatabaseIO::get_edgeblocks ( )
private

◆ get_edgesets()

void Ioex::DatabaseIO::get_edgesets ( )
private

◆ get_elemblocks()

void Ioex::DatabaseIO::get_elemblocks ( )
private

◆ get_elemsets()

void Ioex::DatabaseIO::get_elemsets ( )
private

◆ get_faceblocks()

void Ioex::DatabaseIO::get_faceblocks ( )
private

◆ get_facesets()

void Ioex::DatabaseIO::get_facesets ( )
private

◆ get_field_internal() [1/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::Assembly * assem,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [2/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::Blob * blob,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [3/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::CommSet * cs,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [4/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::EdgeBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [5/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::EdgeSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [6/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::ElementBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [7/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::ElementSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [8/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::FaceBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [9/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::FaceSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [10/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::NodeBlock * nb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [11/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::NodeSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [12/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::Region * reg,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [13/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::SideBlock * fb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [14/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::SideSet * ss,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_field_internal() [15/15]

int64_t Ioex::DatabaseIO::get_field_internal ( const Ioss::StructuredBlock * ,
const Ioss::Field & ,
void * ,
size_t  ) const
inlineoverrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ get_file_pointer()

int Ioex::DatabaseIO::get_file_pointer ( ) const
overridevirtual

For the database types that support it, return an integer handle through which a client can directly access the underlying file. Please use sparingly and with discretion. Basically, a kluge

Implements Ioex::BaseDatabaseIO.

◆ get_map() [1/2]

const Ioss::Map & Ioex::DatabaseIO::get_map ( ex_entity_type type) const
private

◆ get_map() [2/2]

const Ioss::Map & Ioex::DatabaseIO::get_map ( Ioss::Map & entity_map,
int64_t entity_count,
ex_entity_type entity_type,
ex_inquiry inquiry_type ) const
private

◆ get_nodesets()

void Ioex::DatabaseIO::get_nodesets ( )
private

◆ get_sets()

template<typename T >
void Ioex::DatabaseIO::get_sets ( ex_entity_type type,
int64_t count,
const std::string & base,
const T *  )
private

◆ get_side_connectivity()

int64_t Ioex::DatabaseIO::get_side_connectivity ( const Ioss::SideBlock * sd_blk,
int64_t id,
int64_t my_side_count,
void * fconnect,
bool map_ids ) const
private

◆ get_side_connectivity_internal()

template<typename INT >
int64_t Ioex::DatabaseIO::get_side_connectivity_internal ( const Ioss::SideBlock * sd_blk,
int64_t id,
int64_t side_count,
INT * fconnect,
bool map_ids ) const
private

◆ get_side_distributions()

int64_t Ioex::DatabaseIO::get_side_distributions ( const Ioss::SideBlock * sd_blk,
int64_t id,
int64_t my_side_count,
double * dist_fact,
size_t data_size ) const
private

◆ get_side_field()

int64_t Ioex::DatabaseIO::get_side_field ( const Ioss::SideBlock * sd_blk,
const Ioss::Field & field,
void * data,
size_t data_size ) const
private

◆ get_sidesets()

void Ioex::DatabaseIO::get_sidesets ( )
private

◆ get_step_times_nl()

void Ioex::DatabaseIO::get_step_times_nl ( )
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ get_Xset_field_internal()

int64_t Ioex::DatabaseIO::get_Xset_field_internal ( const Ioss::EntitySet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
private

◆ handle_edge_ids()

int64_t Ioex::DatabaseIO::handle_edge_ids ( const Ioss::EdgeBlock * eb,
void * ids,
size_t num_to_get ) const
private

◆ handle_element_ids()

int64_t Ioex::DatabaseIO::handle_element_ids ( const Ioss::ElementBlock * eb,
void * ids,
size_t num_to_get ) const
private

◆ handle_face_ids()

int64_t Ioex::DatabaseIO::handle_face_ids ( const Ioss::FaceBlock * eb,
void * ids,
size_t num_to_get ) const
private

◆ handle_node_ids()

int64_t Ioex::DatabaseIO::handle_node_ids ( void * ids,
int64_t num_to_get ) const
private

There are two modes we need to support in this routine:

  1. Initial definition of node map (local->global) and nodeMap.reverse (global->local).
  2. Redefinition of node map via 'reordering' of the original map when the nodes on this processor are the same, but their order is changed (or count because of ghosting)

So, there will be two maps the 'nodeMap.map' map is a 'direct lookup' map which maps current local position to global id and the 'nodeMap.reverse' is an associative lookup which maps the global id to 'original local'. There is also a 'nodeMap.reorder' which is direct lookup and maps current local position to original local.

The ids coming in are the global ids; their position is the "local id-1" (That is, data[0] contains the global id of local node 1 in this node block).

int local_position = nodeMap.reverse[NodeMap[i+1]] (the nodeMap.map and nodeMap.reverse are 1-based)

To determine which map to update on a call to this function, we use the following heuristics: – If the database state is 'STATE_MODEL:', then update the 'nodeMap.reverse' and 'nodeMap.map'

– If the database state is not STATE_MODEL, then leave the 'nodeMap.reverse' and 'nodeMap.map' alone since they correspond to the information already written to the database. [May want to add a STATE_REDEFINE_MODEL]

– In both cases, update the nodeMap.reorder

NOTE: The mapping is done on TRANSIENT fields only; MODEL fields should be in the original order...

◆ handle_output_file()

bool Ioex::DatabaseIO::handle_output_file ( bool write_message,
std::string * error_msg,
int * bad_count,
bool overwrite,
bool abort_if_error ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ internal_get_step_times_nl()

std::vector< double > Ioex::DatabaseIO::internal_get_step_times_nl ( bool setRegionTimeSteps)
private

◆ open_input_file()

bool Ioex::DatabaseIO::open_input_file ( bool write_message,
std::string * error_msg,
int * bad_count,
bool abort_if_error ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [1/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::Assembly * assem,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [2/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::Blob * blob,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [3/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::CommSet * cs,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [4/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::EdgeBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [5/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::EdgeSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [6/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::ElementBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [7/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::ElementSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [8/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::FaceBlock * eb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [9/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::FaceSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [10/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::NodeBlock * nb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [11/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::NodeSet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [12/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::Region * reg,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [13/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::SideBlock * fb,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [14/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::SideSet * ss,
const Ioss::Field & field,
void * data,
size_t data_size ) const
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_field_internal() [15/15]

int64_t Ioex::DatabaseIO::put_field_internal ( const Ioss::StructuredBlock * ,
const Ioss::Field & ,
void * ,
size_t  ) const
inlineoverrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ put_side_field()

int64_t Ioex::DatabaseIO::put_side_field ( const Ioss::SideBlock * sd_blk,
const Ioss::Field & field,
void * data,
size_t data_size ) const
private

true if application code is controlling the processor id.

◆ put_Xset_field_internal()

int64_t Ioex::DatabaseIO::put_Xset_field_internal ( const Ioss::EntitySet * ns,
const Ioss::Field & field,
void * data,
size_t data_size ) const
private

◆ read_attribute_field()

int64_t Ioex::DatabaseIO::read_attribute_field ( const Ioss::Field & field,
const Ioss::GroupingEntity * ge,
void * data ) const
private

◆ read_communication_metadata()

void Ioex::DatabaseIO::read_communication_metadata ( )
private

◆ read_elements()

void Ioex::DatabaseIO::read_elements ( const Ioss::ElementBlock & block)
private

◆ read_meta_data_nl()

void Ioex::DatabaseIO::read_meta_data_nl ( )
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ read_nodal_coordinates()

int64_t Ioex::DatabaseIO::read_nodal_coordinates ( )
private

◆ read_region()

void Ioex::DatabaseIO::read_region ( )
private

◆ read_ss_transient_field()

int64_t Ioex::DatabaseIO::read_ss_transient_field ( const Ioss::Field & field,
int64_t id,
void * variables,
std::vector< int > & is_valid_side ) const
private

◆ read_transient_field()

int64_t Ioex::DatabaseIO::read_transient_field ( const Ioex::VariableNameMap & variables,
const Ioss::Field & field,
const Ioss::GroupingEntity * ge,
void * data ) const
private

◆ write_attribute_field()

int64_t Ioex::DatabaseIO::write_attribute_field ( const Ioss::Field & field,
const Ioss::GroupingEntity * ge,
void * data ) const
private

◆ write_entity_transient_field()

void Ioex::DatabaseIO::write_entity_transient_field ( const Ioss::Field & field,
const Ioss::GroupingEntity * ge,
int64_t count,
void * variables ) const
private

◆ write_meta_data()

void Ioex::DatabaseIO::write_meta_data ( Ioss::IfDatabaseExistsBehavior behavior)
overrideprivatevirtual

Implements Ioex::BaseDatabaseIO.

◆ write_nodal_transient_field()

void Ioex::DatabaseIO::write_nodal_transient_field ( const Ioss::Field & field,
const Ioss::NodeBlock * ge,
int64_t count,
void * variables ) const
private

Member Data Documentation

◆ isSerialParallel

bool Ioex::DatabaseIO::isSerialParallel {false}
mutableprivate

The documentation for this class was generated from the following files: