IOSS 2.0
Loading...
Searching...
No Matches
Ioss::DatabaseIO Class Referenceabstract

An input or output Database. More...

#include <Ioss_DatabaseIO.h>

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

Public Member Functions

 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.
 
virtual IOSS_NODISCARD unsigned entity_field_support () const =0
 
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.
 
virtual IOSS_NODISCARD int get_file_pointer () const
 
IOSS_NODISCARD const std::string & decoded_filename () const
 Get a file-per-processor filename associated with the database.
 
virtual IOSS_NODISCARD std::string get_format () const =0
 
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
 
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 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 ()
 
virtual IOSS_NODISCARD bool internal_edges_available () const
 
virtual IOSS_NODISCARD bool internal_faces_available () const
 
IOSS_NODISCARD const std::vector< std::string > & get_information_records () const
 Get all information records (informative strings) for the database.
 
void add_information_records (const std::vector< std::string > &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 std::vector< std::string > & get_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)
 
virtual IOSS_NODISCARD int maximum_symbol_length () const
 Get the length of the longest name in the database file.
 
virtual void set_maximum_symbol_length (int)
 
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 std::vector< std::string > &omissions, const std::vector< std::string > &inclusions={})
 
void set_assembly_omissions (const std::vector< std::string > &omissions, const std::vector< std::string > &inclusions={})
 
void get_block_adjacencies (const Ioss::ElementBlock *eb, std::vector< std::string > &block_adjacency) const
 
void compute_block_membership (Ioss::SideBlock *efblock, std::vector< std::string > &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
 
virtual IOSS_NODISCARD int int_byte_size_db () const =0
 
IOSS_NODISCARD int int_byte_size_api () const
 Returns 4 or 8.
 
virtual void set_int_byte_size_api (Ioss::DataSize size) const
 Returns 4 or 8.
 
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 std::vector< std::string > &group_spec, const SideSet *)
 

Protected Member Functions

 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 std::vector< std::string > &group_spec, const T *set_type)
 
void handle_groups ()
 
void check_side_topology () const
 
virtual void openDatabase_nl () const
 
virtual void closeDatabase_nl () const
 
virtual void flush_database_nl () const
 

Protected Attributes

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}
 
std::vector< std::string > blockOmissions {}
 
std::vector< std::string > blockInclusions {}
 
std::vector< std::string > assemblyOmissions {}
 
std::vector< std::string > assemblyInclusions {}
 
std::vector< std::string > informationRecords {}
 
std::vector< std::string > 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
 

Private Member Functions

virtual bool ok_nl (bool, std::string *, int *bad_count) const
 
virtual int64_t node_global_to_local_nl (int64_t global, bool must_exist) const
 
virtual int64_t element_global_to_local_nl (int64_t global) const
 
virtual void release_memory_nl ()
 
virtual bool open_group_nl (const std::string &)
 
virtual bool create_subgroup_nl (const std::string &)
 
virtual bool begin_nl (Ioss::State state)=0
 
virtual bool end_nl (Ioss::State state)=0
 
virtual void read_meta_data_nl ()=0
 
virtual void get_step_times_nl ()
 
virtual bool begin_state_nl (int state, double time)
 
virtual bool end_state_nl (int state, double time)
 
void get_block_adjacencies_nl (const Ioss::ElementBlock *eb, std::vector< std::string > &block_adjacency) const
 
virtual void compute_block_membership_nl (Ioss::SideBlock *, std::vector< std::string > &) const
 
void compute_block_adjacencies () const
 
bool verify_field_data (const GroupingEntity *ge, const Field &field, Ioss::Field::InOut in_out, void *data) const
 
void verify_and_log (const GroupingEntity *ge, const Field &field, int in_out) const
 
virtual int64_t get_field_internal (const Region *reg, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const NodeBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const EdgeBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const FaceBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const ElementBlock *eb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const SideBlock *fb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const NodeSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const EdgeSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const FaceSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const ElementSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const SideSet *fs, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const CommSet *cs, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const Assembly *as, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const Blob *bl, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_field_internal (const StructuredBlock *sb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const Region *reg, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const NodeBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const EdgeBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const FaceBlock *nb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const ElementBlock *eb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const SideBlock *fb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const NodeSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const EdgeSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const FaceSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const ElementSet *ns, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const SideSet *fs, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const CommSet *cs, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const Assembly *as, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const Blob *bl, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t put_field_internal (const StructuredBlock *sb, const Field &field, void *data, size_t data_size) const =0
 
virtual int64_t get_zc_field_internal (const Region *reg, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const NodeBlock *nb, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const EdgeBlock *nb, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const FaceBlock *nb, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const ElementBlock *eb, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const SideBlock *fb, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const NodeSet *ns, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const EdgeSet *ns, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const FaceSet *ns, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const ElementSet *ns, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const SideSet *fs, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const CommSet *cs, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const Assembly *as, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const Blob *bl, const Field &field, void **data, size_t *data_size) const
 
virtual int64_t get_zc_field_internal (const StructuredBlock *sb, const Field &field, void **data, size_t *data_size) const
 
template<typename T >
std::vector< size_t > get_entity_field_data_internal (const std::string &field_name, const std::vector< T * > &entity_container, void *data, size_t data_size) const
 

Private Attributes

std::map< std::string, AxisAlignedBoundingBoxelementBlockBoundingBoxes
 
Ioss::ParallelUtils util_
 
Regionregion_ {nullptr}
 
char fieldSeparator {'_'}
 
DuplicateFieldBehavior duplicateFieldBehavior {DuplicateFieldBehavior::UNSET_}
 
bool fieldSeparatorSpecified {false}
 
bool enableFieldRecognition {true}
 
bool fieldStripTrailing_ {false}
 
bool isInput {true}
 
bool isParallelConsistent
 
bool singleProcOnly {false}
 
bool doLogging {false}
 
bool doNanDetection {false}
 
bool useGenericCanonicalName
 
bool ignoreDatabaseNames {false}
 
bool blockAdjacenciesCalculated {false}
 
bool m_timeStateInOut {false}
 
bool m_enableTracing {false}
 
bool m_ignoreRealnFields {false}
 
std::chrono::time_point< std::chrono::steady_clock > m_stateStart
 

Friends

class SerializeIO
 

Detailed Description

An input or output Database.

Constructor & Destructor Documentation

◆ DatabaseIO() [1/4]

Ioss::DatabaseIO::DatabaseIO ( )
delete

◆ DatabaseIO() [2/4]

Ioss::DatabaseIO::DatabaseIO ( const DatabaseIO & )
delete

◆ DatabaseIO() [3/4]

Ioss::DatabaseIO::DatabaseIO ( DatabaseIO && )
delete

◆ ~DatabaseIO()

◆ DatabaseIO() [4/4]

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

Member Function Documentation

◆ add_information_record()

void Ioss::DatabaseIO::add_information_record ( const std::string & info)

Add an information record (an informative string) to the database.

Parameters
[in]infoThe string to add.

◆ add_information_records()

void Ioss::DatabaseIO::add_information_records ( const std::vector< std::string > & info)

Add multiple information records (informative strings) to the database.

Parameters
[in]infoThe strings to add.

◆ add_qa_record()

void Ioss::DatabaseIO::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.

The 4 function parameters correspond to the 4 QA record strings.

Parameters
[in]codeA descriptive code name, such as the application that modified the database.
[in]code_qaA descriptive string, such as the version of the application that modified the database.
[in]dateA relevant date, such as the date the database was modified.
[in]timeA relevant time, such as the time the database was modified.

◆ begin()

bool Ioss::DatabaseIO::begin ( Ioss::State state)
inline

Set the database to the given State.

All transitions must begin from the 'STATE_CLOSED' state or be to the 'STATE_CLOSED' state (There are no nested begin/end pairs at this time.)

The database state is automatically set when Region::begin_mode is called for its associated region, so it may not be necessary to call this method directly.

Parameters
[in]stateThe new State to which the database should be set.
Returns
True if successful.

◆ begin_nl()

◆ begin_state()

bool Ioss::DatabaseIO::begin_state ( int state,
double time )

◆ begin_state_nl()

◆ check_set_dw()

void Ioss::DatabaseIO::check_set_dw ( ) const

Determine whether Cray Datawarp module is loaded and we have BB capacity allocated for this job ( i.e: DW_JOB_STRIPED is set) && IOSS property to use DATAWARP is set to Y/YES (i.e environmental variable ENABLE_DATAWARP) . If we are using DW then set some pathnames for writing directly to BB instead of PFS(i.e Lustre)

Check whether user wants to use Cray DataWarp. It will be enabled if: the DW_JOB_STRIPED or DW_JOB_PRIVATE environment variable is set by the queuing system during runtime and the IOSS property ENABLE_DATAWARP set to YES.

We currently only want output files to be directed to BB.

◆ check_side_topology()

void Ioss::DatabaseIO::check_side_topology ( ) const
protected

Check the topology of all face/element pairs in the model and fill the "TopoContainer faceTopology" variable with the unique pairs. This information is used for the faceblock/facesets and edgeblock/edgesets. If the 'topo_dimension' is 2, then face/element pairs are generated; if 'topo_dimension' is 1, then edge/element pairs are generated.

◆ close_dw()

void Ioss::DatabaseIO::close_dw ( ) const

Function which invokes stageout from BB to Disk, prior to completion of final close.

This function gets called inside closeDatabase_nl(), which checks if Cray Datawarp (DW) is in use, if so, we want to call a stageout before actual close of this file.

◆ closeDatabase()

void Ioss::DatabaseIO::closeDatabase ( ) const
inline

◆ closeDatabase_nl()

void Ioss::DatabaseIO::closeDatabase_nl ( ) const
protectedvirtual

◆ compute_block_adjacencies()

void Ioss::DatabaseIO::compute_block_adjacencies ( ) const
private

◆ compute_block_membership()

void Ioss::DatabaseIO::compute_block_membership ( Ioss::SideBlock * efblock,
std::vector< std::string > & block_membership ) const
inline

◆ compute_block_membership_nl()

virtual void Ioss::DatabaseIO::compute_block_membership_nl ( Ioss::SideBlock * ,
std::vector< std::string > &  ) const
inlineprivatevirtual

◆ create_group() [1/2]

template<>
void Ioss::DatabaseIO::create_group ( EntityType type,
const std::string & ,
const std::vector< std::string > & group_spec,
const SideSet *  )

◆ create_group() [2/2]

template<typename T >
void Ioss::DatabaseIO::create_group ( EntityType type,
const std::string & type_name,
const std::vector< std::string > & group_spec,
const T * set_type )
protected

◆ create_groups()

template<typename T >
void Ioss::DatabaseIO::create_groups ( const std::string & property_name,
EntityType type,
const std::string & type_name,
const T * set_type )
protected

◆ create_subgroup()

bool Ioss::DatabaseIO::create_subgroup ( const std::string & group_name)
inline

If a database type supports groups, create the specified group as a child of the current group.

The name of the group must not contain a '/' character. If the command is successful, then the group will be the active group for all subsequent writes to the database.

Parameters
[in]group_nameThe name of the subgroup to create.
Returns
True if successful.

◆ create_subgroup_nl()

virtual bool Ioss::DatabaseIO::create_subgroup_nl ( const std::string & )
inlineprivatevirtual

◆ decoded_filename()

const std::string & Ioss::DatabaseIO::decoded_filename ( ) const

Get a file-per-processor filename associated with the database.

Returns
The file-per-processor name for a file on this processor.

◆ element_global_to_local()

IOSS_NODISCARD int64_t Ioss::DatabaseIO::element_global_to_local ( int64_t global) const
inline

◆ element_global_to_local_nl()

virtual int64_t Ioss::DatabaseIO::element_global_to_local_nl ( int64_t global) const
inlineprivatevirtual

Reimplemented in Iocgns::DatabaseIO, and Iohb::DatabaseIO.

◆ end()

bool Ioss::DatabaseIO::end ( Ioss::State state)
inline

Return the database to STATE_CLOSED.

The database is automatically set to STATE_CLOSED when Region::end_mode is called for its associated region, so it may not be necessary to call this method directly.

Parameters
[in]stateThe State to end, i.e. the current state.
Returns
True if successful.

◆ end_nl()

◆ end_state()

bool Ioss::DatabaseIO::end_state ( int state,
double time )

◆ end_state_nl()

◆ entity_field_support()

◆ finalize_database()

virtual void Ioss::DatabaseIO::finalize_database ( ) const
inlinevirtual

◆ flush_database()

void Ioss::DatabaseIO::flush_database ( ) const
inline

◆ flush_database_nl()

virtual void Ioss::DatabaseIO::flush_database_nl ( ) const
inlineprotectedvirtual

◆ get_block_adjacencies()

void Ioss::DatabaseIO::get_block_adjacencies ( const Ioss::ElementBlock * eb,
std::vector< std::string > & block_adjacency ) const
inline

◆ get_block_adjacencies_nl()

void Ioss::DatabaseIO::get_block_adjacencies_nl ( const Ioss::ElementBlock * eb,
std::vector< std::string > & block_adjacency ) const
private

◆ get_bounding_box() [1/3]

AxisAlignedBoundingBox Ioss::DatabaseIO::get_bounding_box ( const Ioss::ElementBlock * eb) const

◆ get_bounding_box() [2/3]

AxisAlignedBoundingBox Ioss::DatabaseIO::get_bounding_box ( const Ioss::NodeBlock * nb) const

◆ get_bounding_box() [3/3]

AxisAlignedBoundingBox Ioss::DatabaseIO::get_bounding_box ( const Ioss::StructuredBlock * sb) const

◆ get_component_name()

std::string Ioss::DatabaseIO::get_component_name ( const Ioss::Field & field,
Ioss::Field::InOut in_out,
int component ) const

◆ get_cycle_count()

IOSS_NODISCARD int Ioss::DatabaseIO::get_cycle_count ( ) const
inline

◆ get_duplicate_field_behavior()

IOSS_NODISCARD DuplicateFieldBehavior Ioss::DatabaseIO::get_duplicate_field_behavior ( ) const
inline

◆ get_dw_name()

IOSS_NODISCARD std::string Ioss::DatabaseIO::get_dw_name ( ) const
inline

◆ get_dw_path()

IOSS_NODISCARD std::string Ioss::DatabaseIO::get_dw_path ( ) const
inline

We call this ONLY after we assure that using_dw() is TRUE.

Returns
mount point of Datawarp namespace, e.g: /opt/cray/....<jobid>

◆ get_entity_field_data()

std::vector< size_t > Ioss::DatabaseIO::get_entity_field_data ( const std::string & field_name,
const std::vector< Ioss::ElementBlock * > & elem_blocks,
void * data,
size_t data_size ) const
virtual

◆ get_entity_field_data_internal()

template<typename T >
std::vector< size_t > Ioss::DatabaseIO::get_entity_field_data_internal ( const std::string & field_name,
const std::vector< T * > & entity_container,
void * data,
size_t data_size ) const
private

◆ get_field()

template<typename T >
int64_t Ioss::DatabaseIO::get_field ( const T * reg,
const Field & field,
void * data,
size_t data_size ) const
inline

◆ get_field_internal() [1/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const Assembly * as,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_internal() [2/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const Blob * bl,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_internal() [3/15]

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

◆ get_field_internal() [4/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const EdgeBlock * nb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_internal() [5/15]

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

◆ get_field_internal() [6/15]

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

◆ get_field_internal() [7/15]

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

◆ get_field_internal() [8/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const FaceBlock * nb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_internal() [9/15]

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

◆ get_field_internal() [10/15]

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

◆ get_field_internal() [11/15]

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

◆ get_field_internal() [12/15]

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

◆ get_field_internal() [13/15]

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

◆ get_field_internal() [14/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const SideSet * fs,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_internal() [15/15]

virtual int64_t Ioss::DatabaseIO::get_field_internal ( const StructuredBlock * sb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ get_field_recognition()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_field_recognition ( ) const
inline

◆ get_field_separator()

IOSS_NODISCARD char Ioss::DatabaseIO::get_field_separator ( ) const
inline

◆ get_field_strip_trailing_()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_field_strip_trailing_ ( ) const
inline

◆ get_file_per_state()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_file_per_state ( ) const
inline

◆ get_file_pointer()

virtual IOSS_NODISCARD int Ioss::DatabaseIO::get_file_pointer ( ) const
inlinevirtual

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

Reimplemented in Iocgns::DatabaseIO, Ioex::DatabaseIO, Ioexnl::DatabaseIO, Ioex::BaseDatabaseIO, and Ioexnl::BaseDatabaseIO.

◆ get_filename()

IOSS_NODISCARD std::string Ioss::DatabaseIO::get_filename ( ) const
inline

Get the file name associated with the database.

Returns
The database file name.

◆ get_format()

virtual IOSS_NODISCARD std::string Ioss::DatabaseIO::get_format ( ) const
pure virtual

◆ get_ignore_realn_fields()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_ignore_realn_fields ( ) const
inline

◆ get_information_records()

IOSS_NODISCARD const std::vector< std::string > & Ioss::DatabaseIO::get_information_records ( ) const
inline

Get all information records (informative strings) for the database.

Returns
The informative strings.

◆ get_logging()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_logging ( ) const
inline

◆ get_nan_detection()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_nan_detection ( ) const
inline

◆ get_overlay_count()

IOSS_NODISCARD int Ioss::DatabaseIO::get_overlay_count ( ) const
inline

◆ get_pfs_name()

IOSS_NODISCARD std::string Ioss::DatabaseIO::get_pfs_name ( ) const
inline

◆ get_property_manager()

IOSS_NODISCARD const Ioss::PropertyManager & Ioss::DatabaseIO::get_property_manager ( ) const
inline

◆ get_qa_records()

IOSS_NODISCARD const std::vector< std::string > & Ioss::DatabaseIO::get_qa_records ( ) const
inline

Get all QA records, each of which consists of 4 strings, from the database.

The 4 strings that make up a database QA record are:

  1. A descriptive code name, such as the application that modified the database.
  2. A descriptive string, such as the version of the application that modified the database.
  3. A relevant date, such as the date the database was modified.
  4. A relevant time, such as the time the database was modified.
Returns
All QA records in a single vector. Every 4 consecutive elements of the vector make up a single QA record.

◆ get_region()

IOSS_NODISCARD Region * Ioss::DatabaseIO::get_region ( ) const
inline

The owning region of this database.

◆ get_step_times()

void Ioss::DatabaseIO::get_step_times ( )
inline

◆ get_step_times_nl()

◆ get_surface_split_type()

IOSS_NODISCARD Ioss::SurfaceSplitType Ioss::DatabaseIO::get_surface_split_type ( ) const
inline

◆ get_use_generic_canonical_name()

IOSS_NODISCARD bool Ioss::DatabaseIO::get_use_generic_canonical_name ( ) const
inline

◆ get_zc_field()

template<typename T >
int64_t Ioss::DatabaseIO::get_zc_field ( const T * reg,
const Field & field,
void ** data,
size_t * data_size ) const
inline

◆ get_zc_field_internal() [1/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const Assembly * as,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [2/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const Blob * bl,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [3/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const CommSet * cs,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [4/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const EdgeBlock * nb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [5/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const EdgeSet * ns,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [6/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const ElementBlock * eb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [7/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const ElementSet * ns,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [8/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const FaceBlock * nb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [9/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const FaceSet * ns,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [10/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const NodeBlock * nb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [11/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const NodeSet * ns,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [12/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const Region * reg,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [13/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const SideBlock * fb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [14/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const SideSet * fs,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ get_zc_field_internal() [15/15]

int64_t Ioss::DatabaseIO::get_zc_field_internal ( const StructuredBlock * sb,
const Field & field,
void ** data,
size_t * data_size ) const
privatevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ handle_groups()

void Ioss::DatabaseIO::handle_groups ( )
protected

◆ ignore_database_names() [1/2]

IOSS_NODISCARD bool Ioss::DatabaseIO::ignore_database_names ( ) const
inline

◆ ignore_database_names() [2/2]

void Ioss::DatabaseIO::ignore_database_names ( bool yes_no)
inline

◆ int_byte_size_api()

int Ioss::DatabaseIO::int_byte_size_api ( ) const

Returns 4 or 8.

◆ int_byte_size_db()

◆ internal_edges_available()

virtual IOSS_NODISCARD bool Ioss::DatabaseIO::internal_edges_available ( ) const
inlinevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ internal_faces_available()

virtual IOSS_NODISCARD bool Ioss::DatabaseIO::internal_faces_available ( ) const
inlinevirtual

Reimplemented in Iocatalyst::DatabaseIO.

◆ is_input()

IOSS_NODISCARD bool Ioss::DatabaseIO::is_input ( ) const
inline

Determine whether the database is an input database.

Returns
True if the database is an input database. False otherwise.

◆ is_parallel()

IOSS_NODISCARD bool Ioss::DatabaseIO::is_parallel ( ) const
inline

◆ is_parallel_consistent()

IOSS_NODISCARD bool Ioss::DatabaseIO::is_parallel_consistent ( ) const
inline

Determine whether application will make field data get/put calls parallel consistently.

True is default and required for parallel-io databases. Even if false, metadata operations must be called by all processors.

Returns
True if application will make field data get/put calls parallel consistently.

◆ maximum_symbol_length()

virtual IOSS_NODISCARD int Ioss::DatabaseIO::maximum_symbol_length ( ) const
inlinevirtual

Get the length of the longest name in the database file.

Returns
The length, or 0 for unlimited.

Reimplemented in Iocatalyst::DatabaseIO, Ioex::BaseDatabaseIO, Ioexnl::BaseDatabaseIO, Iofaodel::DatabaseIO, and Iopg::DatabaseIO.

◆ needs_shared_node_information()

virtual IOSS_NODISCARD bool Ioss::DatabaseIO::needs_shared_node_information ( ) const
inlinevirtual

Determine whether the database needs information about process ownership of nodes.

Returns
True if database needs information about process ownership of nodes.

Reimplemented in Iocatalyst::DatabaseIO.

◆ node_global_to_local()

IOSS_NODISCARD int64_t Ioss::DatabaseIO::node_global_to_local ( int64_t global,
bool must_exist ) const
inline

Get the local (process-specific) node number corresponding to a global node number.

Parameters
[in]globalThe global node number
[in]must_existIf true, error will occur if the global node number is not mapped to any local node number on the current process.
Returns
The local node number

◆ node_global_to_local_nl()

virtual int64_t Ioss::DatabaseIO::node_global_to_local_nl ( int64_t global,
bool must_exist ) const
inlineprivatevirtual

Reimplemented in Iocgns::DatabaseIO, and Iohb::DatabaseIO.

◆ node_major()

virtual IOSS_NODISCARD bool Ioss::DatabaseIO::node_major ( ) const
inlinevirtual

If there is a single block of nodes in the model, then it is considered a node_major() database. If instead the nodes are local to each element block or structured block, then it is not a node_major database. Exodus is node major, CGNS is not.

Reimplemented in Iocatalyst::DatabaseIO, and Iocgns::DatabaseIO.

◆ ok()

IOSS_NODISCARD bool Ioss::DatabaseIO::ok ( bool write_message = false,
std::string * error_message = nullptr,
int * bad_count = nullptr ) const
inline

Check to see if database state is OK.

Parameters
[in]write_messageIf true, then output a warning message indicating the problem.
[in,out]error_messageIf non-null on input, then a warning message on output.
[in,out]bad_countIf non-null on input, then count of the number of processors where the file does not exist on output. If ok returns false, but *bad_count==0, then the routine does not support this argument.
Returns
True if database state is OK. False if not.

◆ ok_nl()

virtual bool Ioss::DatabaseIO::ok_nl ( bool ,
std::string * ,
int * bad_count ) const
inlineprivatevirtual

◆ open_create_behavior()

IfDatabaseExistsBehavior Ioss::DatabaseIO::open_create_behavior ( ) const

◆ open_dw()

void Ioss::DatabaseIO::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.

Note: We would only like to use BB during write to avoid cache coherency issues during read. dwPath is the DW namespace which gets set during runtime from environment variable DW_JOB_STRIPED. Afterword, using_dw() function is used extensively for filename redirection for all related subsequent functions(e.g: get_filename, get_file_ptr etc) once burst buffer is found and set to be used.

In this wrapper function we check if user intends to use Cray DataWarp(aka DW), which provides ability to use NVMe based flash storage available across all compute nodes accessible via high speed NIC.

◆ open_group()

bool Ioss::DatabaseIO::open_group ( const std::string & group_name)
inline

If a database type supports groups and if the database contains groups, open the specified group.

If the group_name begins with '/', it specifies the absolute path name from the root with '/' separating groups. Otherwise, the group_name specifies a child group of the currently active group. If group_name == "/" then the root group is opened.

Parameters
[in]group_nameThe name of the group to open.
Returns
True if successful.

◆ open_group_nl()

virtual bool Ioss::DatabaseIO::open_group_nl ( const std::string & )
inlineprivatevirtual

◆ openDatabase()

void Ioss::DatabaseIO::openDatabase ( ) const
inline

◆ openDatabase_nl()

void Ioss::DatabaseIO::openDatabase_nl ( ) const
protectedvirtual

◆ operator=() [1/2]

DatabaseIO & Ioss::DatabaseIO::operator= ( const DatabaseIO & )
delete

◆ operator=() [2/2]

DatabaseIO & Ioss::DatabaseIO::operator= ( DatabaseIO && )
delete

◆ parallel_rank()

IOSS_NODISCARD int Ioss::DatabaseIO::parallel_rank ( ) const
inline

Get the processor that this mesh database is on.

Returns
The processor that this mesh database is on.

◆ parallel_size()

IOSS_NODISCARD int Ioss::DatabaseIO::parallel_size ( ) const
inline

◆ progress()

void Ioss::DatabaseIO::progress ( const std::string & output) const
inline

◆ put_field()

template<typename T >
int64_t Ioss::DatabaseIO::put_field ( const T * reg,
const Field & field,
void * data,
size_t data_size ) const
inline

◆ put_field_internal() [1/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const Assembly * as,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ put_field_internal() [2/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const Blob * bl,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ put_field_internal() [3/15]

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

◆ put_field_internal() [4/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const EdgeBlock * nb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ put_field_internal() [5/15]

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

◆ put_field_internal() [6/15]

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

◆ put_field_internal() [7/15]

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

◆ put_field_internal() [8/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const FaceBlock * nb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ put_field_internal() [9/15]

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

◆ put_field_internal() [10/15]

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

◆ put_field_internal() [11/15]

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

◆ put_field_internal() [12/15]

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

◆ put_field_internal() [13/15]

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

◆ put_field_internal() [14/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const SideSet * fs,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ put_field_internal() [15/15]

virtual int64_t Ioss::DatabaseIO::put_field_internal ( const StructuredBlock * sb,
const Field & field,
void * data,
size_t data_size ) const
privatepure virtual

◆ read_meta_data()

void Ioss::DatabaseIO::read_meta_data ( )
inline

◆ read_meta_data_nl()

◆ release_memory()

void Ioss::DatabaseIO::release_memory ( )
inline

◆ release_memory_nl()

virtual void Ioss::DatabaseIO::release_memory_nl ( )
inlineprivatevirtual

◆ set_assembly_omissions()

void Ioss::DatabaseIO::set_assembly_omissions ( const std::vector< std::string > & omissions,
const std::vector< std::string > & inclusions = {} )

◆ set_block_omissions()

void Ioss::DatabaseIO::set_block_omissions ( const std::vector< std::string > & omissions,
const std::vector< std::string > & inclusions = {} )

◆ set_common_side_topology()

void Ioss::DatabaseIO::set_common_side_topology ( ) const
protected

Utility function that may be used by derived classes. Determines whether all elements in the model have the same side topology. This can be used to speed-up certain algorithms since they don't have to check each side (or group of sides) individually.

◆ set_cycle_count()

void Ioss::DatabaseIO::set_cycle_count ( int count) const
inline

The overlay_count specifies the number of restart outputs which will be overlaid on top of the currently written step before advancing to the next step on the restart database.

For example, if restarts are being output every 0.1 seconds and the overlay count is specified as 2, then restart will write time 0.1 to step 1 of the database. It will then write 0.2 and 0.3 also to step 1. It will then increment the database step and write 0.4 to step 2; overlay 0.5 and 0.6 on step 2... At the end of the analysis, assuming it runs to completion, the database would have times 0.3, 0.6, 0.9, ... However, if there were a problem during the analysis, the last step on the database would contain an intermediate step.

The cycle_count specifies the number of restart steps which will be written to the restart database before previously written steps are overwritten.

For example, if the cycle count is 5 and restart is written every 0.1 seconds, the restart system will write data at times 0.1, 0.2, 0.3, 0.4, 0.5 to the database.

It will then overwrite the first step with data from time 0.6, the second with time 0.7. At time 0.8, the database would contain data at times 0.6, 0.7, 0.8, 0.4, 0.5. Note that time will not necessarily be monotonically increasing on a database that specifies the cycle count.

The cycle count and overlay count can both be used at the same time also. The basic formula is:

   db_step = (((output_step - 1) / overlay) % cycle) + 1

where "output_step" is the step that this would have been on the database in a normal write (1,2,3,....) and "db_step" is the step number that this will be written to.

If you only want the last step available on the database, use set_cycle_count(1)

◆ set_dw_name()

void Ioss::DatabaseIO::set_dw_name ( const std::string & name) const
inline

this will be the name in BB namespace

◆ set_field_recognition()

void Ioss::DatabaseIO::set_field_recognition ( bool yes_no)
inline

◆ set_field_separator()

void Ioss::DatabaseIO::set_field_separator ( char separator)

Set the character used to separate a field suffix from the field basename when recognizing vector, tensor fields.

Parameters
[in]separatorThe separator character.

◆ set_field_strip_trailing_()

void Ioss::DatabaseIO::set_field_strip_trailing_ ( bool yes_no)
inline

◆ set_file_per_state()

void Ioss::DatabaseIO::set_file_per_state ( bool yes_no) const
inline

◆ set_ignore_realn_fields()

void Ioss::DatabaseIO::set_ignore_realn_fields ( bool yes_no)
inline

◆ set_int_byte_size_api()

void Ioss::DatabaseIO::set_int_byte_size_api ( Ioss::DataSize size) const
virtual

Returns 4 or 8.

Set the number of bytes used to represent an integer.

Parameters
[in]sizeThe number of bytes. This is 4 for INT32 or 8 for INT64.

Reimplemented in Ioex::BaseDatabaseIO, Ioexnl::BaseDatabaseIO, and Ionull::DatabaseIO.

◆ set_logging()

void Ioss::DatabaseIO::set_logging ( bool on_off)
inline

◆ set_lower_case_variable_names()

void Ioss::DatabaseIO::set_lower_case_variable_names ( bool true_false) const
inline

◆ set_maximum_symbol_length()

virtual void Ioss::DatabaseIO::set_maximum_symbol_length ( int )
inlinevirtual

◆ set_nan_detection()

void Ioss::DatabaseIO::set_nan_detection ( bool on_off)
inline

◆ set_overlay_count()

void Ioss::DatabaseIO::set_overlay_count ( int count) const
inline

◆ set_parallel_consistency()

void Ioss::DatabaseIO::set_parallel_consistency ( bool on_off)
inline

◆ set_pfs_name()

void Ioss::DatabaseIO::set_pfs_name ( const std::string & name) const
inline

◆ set_region()

void Ioss::DatabaseIO::set_region ( Region * region)
inline

◆ set_surface_split_type()

void Ioss::DatabaseIO::set_surface_split_type ( Ioss::SurfaceSplitType split_type)
inline

◆ set_time_scale_factor()

void Ioss::DatabaseIO::set_time_scale_factor ( double factor)
inline

◆ set_use_generic_canonical_name()

void Ioss::DatabaseIO::set_use_generic_canonical_name ( bool yes_no)
inline

◆ usage()

IOSS_NODISCARD Ioss::DatabaseUsage Ioss::DatabaseIO::usage ( ) const
inline

Get the Ioss::DatabaseUsage type of the database.

Returns
The Ioss::DatabaseUsage type of the database.

◆ using_dw()

IOSS_NODISCARD bool Ioss::DatabaseIO::using_dw ( ) const
inline

Set if Cray Datawarp exists and allocated space is found , i.e PATH to DW name space

◆ using_parallel_io()

IOSS_NODISCARD bool Ioss::DatabaseIO::using_parallel_io ( ) const
inline

◆ util()

IOSS_NODISCARD const Ioss::ParallelUtils & Ioss::DatabaseIO::util ( ) const
inline

◆ verify_and_log()

void Ioss::DatabaseIO::verify_and_log ( const GroupingEntity * ge,
const Field & field,
int in_out ) const
private

◆ verify_field_data()

bool Ioss::DatabaseIO::verify_field_data ( const GroupingEntity * ge,
const Field & field,
Ioss::Field::InOut in_out,
void * data ) const
private

Friends And Related Symbol Documentation

◆ SerializeIO

friend class SerializeIO
friend

Member Data Documentation

◆ assemblyInclusions

std::vector<std::string> Ioss::DatabaseIO::assemblyInclusions {}
protected

◆ assemblyOmissions

std::vector<std::string> Ioss::DatabaseIO::assemblyOmissions {}
protected

◆ bbName

std::string Ioss::DatabaseIO::bbName {}
mutableprotected

bbName is a temporary swizzled name which resides inside Burst Buffer namespace. This is a private trivial mapped name vs original DBFilename (which resides in permanent storage backed by parallel filesystem. dwPath is global BB mountpoint for current job with requested capacity via SLURM #DW directive. usingDataWarp – a boolean, for convenience of use so that we don't have to do getenv() calls to see if BB present.

◆ blockAdjacenciesCalculated

bool Ioss::DatabaseIO::blockAdjacenciesCalculated {false}
mutableprivate

◆ blockAdjacency

std::vector<std::vector<bool> > Ioss::DatabaseIO::blockAdjacency
mutableprotected

◆ blockInclusions

std::vector<std::string> Ioss::DatabaseIO::blockInclusions {}
protected

◆ blockOmissions

std::vector<std::string> Ioss::DatabaseIO::blockOmissions {}
protected

◆ commonSideTopology

ElementTopology* Ioss::DatabaseIO::commonSideTopology {nullptr}
protected

◆ cycleCount

int Ioss::DatabaseIO::cycleCount {0}
mutableprotected

Typically used for restart output, but can be used for all output... Maximum number of states on the output file. Overwrite the existing steps in a cyclic manner once exceed this count. Note that this breaks the convention that times be monotonically increasing on an exodusII file. Used by derived classes if they support this capability...

◆ DBFilename

std::string Ioss::DatabaseIO::DBFilename {}
protected

◆ dbIntSizeAPI

Ioss::DataSize Ioss::DatabaseIO::dbIntSizeAPI {USE_INT32_API}
mutableprotected

◆ dbState

Ioss::State Ioss::DatabaseIO::dbState {STATE_INVALID}
mutableprotected

◆ dbUsage

Ioss::DatabaseUsage Ioss::DatabaseIO::dbUsage {}
protected

◆ decodedFilename

std::string Ioss::DatabaseIO::decodedFilename {}
mutableprotected

◆ doLogging

bool Ioss::DatabaseIO::doLogging {false}
private

◆ doNanDetection

bool Ioss::DatabaseIO::doNanDetection {false}
private

◆ duplicateFieldBehavior

DuplicateFieldBehavior Ioss::DatabaseIO::duplicateFieldBehavior {DuplicateFieldBehavior::UNSET_}
private

◆ dwPath

std::string Ioss::DatabaseIO::dwPath {}
mutableprotected

◆ edgeMap

Ioss::Map Ioss::DatabaseIO::edgeMap {"edge", DBFilename, myProcessor}
mutableprotected

◆ elementBlockBoundingBoxes

std::map<std::string, AxisAlignedBoundingBox> Ioss::DatabaseIO::elementBlockBoundingBoxes
mutableprivate

◆ elementCount

int64_t Ioss::DatabaseIO::elementCount {0}
protected

◆ elemMap

Ioss::Map Ioss::DatabaseIO::elemMap {"element", DBFilename, myProcessor}
mutableprotected

◆ enableFieldRecognition

bool Ioss::DatabaseIO::enableFieldRecognition {true}
private

◆ faceMap

Ioss::Map Ioss::DatabaseIO::faceMap {"face", DBFilename, myProcessor}
mutableprotected

◆ fieldSeparator

char Ioss::DatabaseIO::fieldSeparator {'_'}
private

◆ fieldSeparatorSpecified

bool Ioss::DatabaseIO::fieldSeparatorSpecified {false}
private

◆ fieldStripTrailing_

bool Ioss::DatabaseIO::fieldStripTrailing_ {false}
private

◆ filePerState

bool Ioss::DatabaseIO::filePerState {false}
mutableprotected

EXPERIMENTAL If this is true, then each state (timestep) output will be directed to a separate file. Currently this is only implemented for the exodus (parallel or serial, single file or fpp) database type.

◆ ignoreDatabaseNames

bool Ioss::DatabaseIO::ignoreDatabaseNames {false}
private

◆ informationRecords

std::vector<std::string> Ioss::DatabaseIO::informationRecords {}
protected

◆ isInput

bool Ioss::DatabaseIO::isInput {true}
private

◆ isParallel

bool Ioss::DatabaseIO::isParallel {false}
protected

true if running in parallel

◆ isParallelConsistent

bool Ioss::DatabaseIO::isParallelConsistent
private
Initial value:
{
true}

◆ lowerCaseVariableNames

bool Ioss::DatabaseIO::lowerCaseVariableNames {true}
mutableprotected

◆ m_enableTracing

bool Ioss::DatabaseIO::m_enableTracing {false}
private

◆ m_ignoreRealnFields

bool Ioss::DatabaseIO::m_ignoreRealnFields {false}
private

◆ m_stateStart

std::chrono::time_point<std::chrono::steady_clock> Ioss::DatabaseIO::m_stateStart
private

◆ m_timeStateInOut

bool Ioss::DatabaseIO::m_timeStateInOut {false}
private

◆ myProcessor

int Ioss::DatabaseIO::myProcessor {0}
protected

number of processor this database is for

◆ nodeCount

int64_t Ioss::DatabaseIO::nodeCount {0}
protected

◆ nodeMap

Ioss::Map Ioss::DatabaseIO::nodeMap {"node", DBFilename, myProcessor}
mutableprotected

◆ originalDBFilename

std::string Ioss::DatabaseIO::originalDBFilename {}
protected

Filename that this Database is connected with. Derived DatabaseIO classes may need to change this if the passed in filename is not the same as the filename actually used E.g., the Ioex_DatabaseIO (exodusII) changes if this is a parallel run since the passed in filename is just the basename, not the processor-specific filename.

◆ overlayCount

int Ioss::DatabaseIO::overlayCount {0}
mutableprotected

◆ pfsName

std::string Ioss::DatabaseIO::pfsName {}
mutableprotected

◆ properties

Ioss::PropertyManager Ioss::DatabaseIO::properties
protected

The properties member data contains properties that can be used to set database-specific options. Examples include compression, name lengths, integer sizes, floating point sizes. By convention, the property name is all uppercase. Some existing properties recognized by the Exodus DatabaseIO class are:

Property Value
COMPRESSION_LEVEL In the range [0..9]. A value of 0 indicates no compression
COMPRESSION_SHUFFLE (true/false) to enable/disable hdf5's shuffle compression

algorithm. | FILE_TYPE | netcdf4 | MAXIMUM_NAME_LENGTH | Maximum length of names that will be returned/passed via api call. | INTEGER_SIZE_DB | 4 or 8 indicating byte size of integers stored on the database. | INTEGER_SIZE_API | 4 or 8 indicating byte size of integers used in api functions. | LOGGING | (true/false) to enable/disable logging of field input/output

◆ qaRecords

std::vector<std::string> Ioss::DatabaseIO::qaRecords {}
protected

◆ region_

Region* Ioss::DatabaseIO::region_ {nullptr}
private

◆ sideTopology

TopoContainer Ioss::DatabaseIO::sideTopology {}
protected

Used to speed up faceblock/edgeblock calculations.

◆ singleProcOnly

bool Ioss::DatabaseIO::singleProcOnly {false}
private

◆ splitType

Ioss::SurfaceSplitType Ioss::DatabaseIO::splitType {SPLIT_BY_TOPOLOGIES}
protected

◆ timeScaleFactor

double Ioss::DatabaseIO::timeScaleFactor {1.0}
protected

Scale the time read/written from/to the file by the specified scaleFactor. If the database times are 0.1, 0.2, 0.3 and the scaleFactor is 20, then the application will think that the times read are 2.0, 4.0, 6.0.

If specified for an output database, then the analysis time is divided by the scaleFactor time prior to output.

◆ useGenericCanonicalName

bool Ioss::DatabaseIO::useGenericCanonicalName
private
Initial value:
{
false}

◆ usingDataWarp

bool Ioss::DatabaseIO::usingDataWarp {false}
mutableprotected

◆ usingParallelIO

bool Ioss::DatabaseIO::usingParallelIO {false}
protected

◆ util_

Ioss::ParallelUtils Ioss::DatabaseIO::util_
private

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