IOSS  2.0
Iocgns::DatabaseIO Class Reference

#include <Iocgns_DatabaseIO.h>

Public Types

enum  entity_type { entity_type::NODE, entity_type::ELEM }
 

Public Member Functions

 DatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, MPI_Comm communicator, const Ioss::PropertyManager &props)
 
unsigned entity_field_support () const override
 
int64_t node_global_to_local__ (int64_t global, bool must_exist) const override
 
int64_t element_global_to_local__ (int64_t global) const override
 
 ~DatabaseIO () override
 
int int_byte_size_db () const override
 
bool node_major () const override
 
void openDatabase__ () const override
 
void closeDatabase__ () const override
 
bool begin__ (Ioss::State state) override
 
bool end__ (Ioss::State state) override
 
bool begin_state__ (Ioss::Region *region, int state, double time) override
 
bool end_state__ (Ioss::Region *region, int state, double time) override
 
void read_meta_data__ () override
 
void write_meta_data ()
 
void write_results_meta_data ()
 
- Public Member Functions inherited from Ioss::DatabaseIO
bool ok (bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const
 Check to see if database state is OK. More...
 
bool using_parallel_io () const
 
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. More...
 
int64_t element_global_to_local (int64_t global) const
 
void release_memory ()
 
std::string get_filename () const
 Get the file name associated with the database. More...
 
const std::string & decoded_filename () const
 Get a file-per-processor filename associated with the database. More...
 
bool is_input () const
 Determine whether the database is an input database. More...
 
Ioss::DatabaseUsage usage () const
 Get the Ioss::DatabaseUsage type of the database. More...
 
virtual bool needs_shared_node_information () const
 Determine whether the database needs information about process ownership of nodes. More...
 
Ioss::IfDatabaseExistsBehavior open_create_behavior () const
 
void create_path (const std::string &filename) const
 This function is used to create the path to an output directory (or history, restart, etc.) More...
 
void set_region (Region *region)
 
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. More...
 
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. More...
 
bool begin (Ioss::State state)
 Set the database to the given State. More...
 
bool end (Ioss::State state)
 Return the database to STATE_CLOSED. More...
 
bool begin_state (Region *region, int state, double time)
 
bool end_state (Region *region, int state, double time)
 
void read_meta_data ()
 
void get_step_times ()
 
virtual bool internal_edges_available () const
 
virtual bool internal_faces_available () const
 
const std::vector< std::string > & get_information_records () const
 Get all information records (informative strings) for the database. More...
 
void add_information_records (const std::vector< std::string > &info)
 Add multiple information records (informative strings) to the database. More...
 
void add_information_record (const std::string &info)
 Add an information record (an informative string) to the database. More...
 
const std::vector< std::string > & get_qa_records () const
 Get all QA records, each of which consists of 4 strings, from the database. More...
 
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. More...
 
bool get_logging () const
 
void set_logging (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
 
bool is_parallel_consistent () const
 
void set_parallel_consistency (bool on_off)
 
bool get_use_generic_canonical_name () const
 
void set_use_generic_canonical_name (bool yes_no)
 
bool ignore_database_names () const
 
void ignore_database_names (bool yes_no)
 
virtual int maximum_symbol_length () const
 Get the length of the longest name in the database file. More...
 
virtual void set_maximum_symbol_length (int)
 
char get_field_separator () const
 
bool get_field_recognition () 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. More...
 
void set_field_recognition (bool yes_no)
 
void set_lower_case_variable_names (bool true_false) const
 
void set_surface_split_type (Ioss::SurfaceSplitType split_type)
 
Ioss::SurfaceSplitType get_surface_split_type () const
 
void set_block_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
 
AxisAlignedBoundingBox get_bounding_box (const Ioss::ElementBlock *eb) const
 
AxisAlignedBoundingBox get_bounding_box (const Ioss::StructuredBlock *sb) const
 
int int_byte_size_api () const
 Returns 4 or 8. More...
 
virtual void set_int_byte_size_api (Ioss::DataSize size) const
 Returns 4 or 8. More...
 
Regionget_region () const
 
void set_cycle_count (int count) const
 
void set_overlay_count (int count) const
 
void set_time_scale_factor (double factor)
 
const Ioss::ParallelUtilsutil () const
 
const Ioss::PropertyManagerget_property_manager () const
 
int parallel_rank () const
 Get the processor that this mesh database is on. More...
 
int parallel_size () const
 
bool is_parallel () const
 
template<>
void create_group (EntityType type, const std::string &, const std::vector< std::string > &group_spec, const SideSet *)
 

Private Member Functions

void create_structured_block (int base, int zone, size_t &num_node)
 
size_t finalize_structured_blocks ()
 
void finalize_database () override
 
void get_step_times__ () override
 
void create_unstructured_block (int base, int zone, size_t &num_node)
 
void write_adjacency_data ()
 
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::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 *fb, 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 *sb, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::SideBlock *sb, 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 *es, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::FaceSet *fs, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::ElementSet *es, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t get_field_internal (const Ioss::SideSet *fs, 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 *region, 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 *fb, 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 *sb, 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 *es, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::FaceSet *fs, const Ioss::Field &field, void *data, size_t data_size) const override
 
int64_t put_field_internal (const Ioss::ElementSet *es, 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 *sb, const Ioss::Field &field, void *data, size_t data_size) const override
 
const Ioss::Mapget_map (entity_type type) const
 
const Ioss::Mapget_map (Ioss::Map &entity_map, int64_t entityCount, int64_t file_offset, int64_t file_count, entity_type type) const
 

Private Attributes

int cgnsFilePtr {-1}
 
int m_currentVertexSolutionIndex = 0
 
int m_currentCellCenterSolutionIndex = 0
 
std::vector< size_t > m_zoneOffset
 
std::vector< size_t > m_bcOffset
 
std::vector< double > m_timesteps
 
std::vector< std::vector< cgsize_t > > m_blockLocalNodeMap
 
std::map< std::string, int > m_zoneNameMap
 
std::map< int, Ioss::Map * > m_globalToBlockLocalNodeMap
 

Additional Inherited Members

- Protected Member Functions inherited from Ioss::DatabaseIO
 DatabaseIO (Region *region, std::string filename, Ioss::DatabaseUsage db_usage, 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
 
- Protected Attributes inherited from Ioss::DatabaseIO
Ioss::PropertyManager properties
 
ElementTopologycommonSideTopology {nullptr}
 
std::string DBFilename
 
std::string decodedFilename
 
Ioss::State dbState {STATE_INVALID}
 
bool isParallel {false}
 true if running in parallel More...
 
int myProcessor {0}
 number of processor this database is for More...
 
int64_t nodeCount {0}
 
int64_t elementCount {0}
 
TopoContainer sideTopology
 Used to speed up faceblock/edgeblock calculations. More...
 
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 lowerCaseVariableNames {true}
 
bool usingParallelIO {false}
 
std::vector< std::string > blockOmissions
 
std::vector< std::string > blockInclusions
 
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
 

Member Enumeration Documentation

◆ entity_type

Enumerator
NODE 
ELEM 

Constructor & Destructor Documentation

◆ DatabaseIO()

Iocgns::DatabaseIO::DatabaseIO ( Ioss::Region region,
const std::string &  filename,
Ioss::DatabaseUsage  db_usage,
MPI_Comm  communicator,
const Ioss::PropertyManager props 
)

◆ ~DatabaseIO()

Iocgns::DatabaseIO::~DatabaseIO ( )
overridevirtual

Reimplemented from Ioss::DatabaseIO.

Member Function Documentation

◆ begin__()

bool Iocgns::DatabaseIO::begin__ ( Ioss::State  state)
overridevirtual

Implements Ioss::DatabaseIO.

◆ begin_state__()

bool Iocgns::DatabaseIO::begin_state__ ( Ioss::Region region,
int  state,
double  time 
)
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ closeDatabase__()

void Iocgns::DatabaseIO::closeDatabase__ ( ) const
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ create_structured_block()

void Iocgns::DatabaseIO::create_structured_block ( int  base,
int  zone,
size_t &  num_node 
)
private

◆ create_unstructured_block()

void Iocgns::DatabaseIO::create_unstructured_block ( int  base,
int  zone,
size_t &  num_node 
)
private

◆ element_global_to_local__()

int64_t Iocgns::DatabaseIO::element_global_to_local__ ( int64_t  global) const
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ end__()

bool Iocgns::DatabaseIO::end__ ( Ioss::State  state)
overridevirtual

Implements Ioss::DatabaseIO.

◆ end_state__()

bool Iocgns::DatabaseIO::end_state__ ( Ioss::Region region,
int  state,
double  time 
)
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ entity_field_support()

unsigned Iocgns::DatabaseIO::entity_field_support ( ) const
overridevirtual

Implements Ioss::DatabaseIO.

◆ finalize_database()

void Iocgns::DatabaseIO::finalize_database ( )
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ finalize_structured_blocks()

size_t Iocgns::DatabaseIO::finalize_structured_blocks ( )
private

◆ get_field_internal() [1/13]

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

Implements Ioss::DatabaseIO.

◆ get_field_internal() [2/13]

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

Implements Ioss::DatabaseIO.

◆ get_field_internal() [3/13]

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

Implements Ioss::DatabaseIO.

◆ get_field_internal() [4/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::FaceBlock fb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [5/13]

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

Implements Ioss::DatabaseIO.

◆ get_field_internal() [6/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::StructuredBlock sb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ get_field_internal() [7/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::SideBlock sb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [8/13]

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

Implements Ioss::DatabaseIO.

◆ get_field_internal() [9/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::EdgeSet es,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [10/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::FaceSet fs,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [11/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::ElementSet es,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [12/13]

int64_t Iocgns::DatabaseIO::get_field_internal ( const Ioss::SideSet fs,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ get_field_internal() [13/13]

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

Implements Ioss::DatabaseIO.

◆ get_map() [1/2]

const Ioss::Map& Iocgns::DatabaseIO::get_map ( entity_type  type) const
private

◆ get_map() [2/2]

const Ioss::Map& Iocgns::DatabaseIO::get_map ( Ioss::Map entity_map,
int64_t  entityCount,
int64_t  file_offset,
int64_t  file_count,
entity_type  type 
) const
private

◆ get_step_times__()

void Iocgns::DatabaseIO::get_step_times__ ( )
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ int_byte_size_db()

int Iocgns::DatabaseIO::int_byte_size_db ( ) const
inlineoverridevirtual

Implements Ioss::DatabaseIO.

◆ node_global_to_local__()

int64_t Iocgns::DatabaseIO::node_global_to_local__ ( int64_t  global,
bool  must_exist 
) const
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ node_major()

bool Iocgns::DatabaseIO::node_major ( ) const
inlineoverridevirtual

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

◆ openDatabase__()

void Iocgns::DatabaseIO::openDatabase__ ( ) const
overridevirtual

Reimplemented from Ioss::DatabaseIO.

◆ put_field_internal() [1/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::Region region,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [2/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [3/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [4/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::FaceBlock fb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [5/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [6/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::SideBlock sb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [7/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [8/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::EdgeSet es,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [9/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::FaceSet fs,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [10/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::ElementSet es,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Implements Ioss::DatabaseIO.

◆ put_field_internal() [11/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [12/13]

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

Implements Ioss::DatabaseIO.

◆ put_field_internal() [13/13]

int64_t Iocgns::DatabaseIO::put_field_internal ( const Ioss::StructuredBlock sb,
const Ioss::Field field,
void *  data,
size_t  data_size 
) const
overrideprivatevirtual

Reimplemented from Ioss::DatabaseIO.

◆ read_meta_data__()

void Iocgns::DatabaseIO::read_meta_data__ ( )
overridevirtual

Implements Ioss::DatabaseIO.

◆ write_adjacency_data()

void Iocgns::DatabaseIO::write_adjacency_data ( )
private

◆ write_meta_data()

void Iocgns::DatabaseIO::write_meta_data ( )

◆ write_results_meta_data()

void Iocgns::DatabaseIO::write_results_meta_data ( )

Member Data Documentation

◆ cgnsFilePtr

int Iocgns::DatabaseIO::cgnsFilePtr {-1}
mutableprivate

◆ m_bcOffset

std::vector<size_t> Iocgns::DatabaseIO::m_bcOffset
mutableprivate

◆ m_blockLocalNodeMap

std::vector<std::vector<cgsize_t> > Iocgns::DatabaseIO::m_blockLocalNodeMap
private

◆ m_currentCellCenterSolutionIndex

int Iocgns::DatabaseIO::m_currentCellCenterSolutionIndex = 0
private

◆ m_currentVertexSolutionIndex

int Iocgns::DatabaseIO::m_currentVertexSolutionIndex = 0
private

◆ m_globalToBlockLocalNodeMap

std::map<int, Ioss::Map *> Iocgns::DatabaseIO::m_globalToBlockLocalNodeMap
mutableprivate

◆ m_timesteps

std::vector<double> Iocgns::DatabaseIO::m_timesteps
mutableprivate

◆ m_zoneNameMap

std::map<std::string, int> Iocgns::DatabaseIO::m_zoneNameMap
private

◆ m_zoneOffset

std::vector<size_t> Iocgns::DatabaseIO::m_zoneOffset
mutableprivate

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