|
| BaseDatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, Ioss_MPI_Comm communicator, const Ioss::PropertyManager &props) |
|
IOSS_NODISCARD std::string | get_format () const override |
|
IOSS_NODISCARD unsigned | entity_field_support () const override |
|
| DatabaseIO ()=delete |
|
| DatabaseIO (const DatabaseIO &)=delete |
|
| DatabaseIO (DatabaseIO &&)=delete |
|
DatabaseIO & | operator= (const DatabaseIO &)=delete |
|
DatabaseIO & | operator= (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.
|
|
virtual IOSS_NODISCARD std::string | get_internal_change_set_name () const |
|
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::NameList & | get_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::NameList & | 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) |
|
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 Region * | get_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::ParallelUtils & | util () const |
|
IOSS_NODISCARD const Ioss::PropertyManager & | get_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 *) |
|
|
IOSS_NODISCARD bool | ok_nl (bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const override |
|
IOSS_NODISCARD bool | begin_nl (Ioss::State state) override |
|
IOSS_NODISCARD 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 |
|
void | get_step_times_nl () override=0 |
|
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.
|
|
int64_t | put_field_internal (const Ioss::Region *reg, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::NodeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::EdgeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::FaceBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::ElementBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::StructuredBlock *sb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::NodeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::EdgeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::FaceSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::ElementSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::SideSet *fs, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::CommSet *cs, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::Assembly *as, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
int64_t | put_field_internal (const Ioss::Blob *blob, const Ioss::Field &field, void *data, size_t data_size) const override=0 |
|
virtual void | write_meta_data (Ioss::IfDatabaseExistsBehavior behavior)=0 |
|
void | write_results_metadata (bool gather_data, Ioss::IfDatabaseExistsBehavior behavior) |
|
void | openDatabase_nl () const override |
|
void | closeDatabase_nl () const override |
|
IOSS_NODISCARD int | get_file_pointer () const override=0 |
|
virtual int | free_file_pointer () const |
|
virtual bool | handle_output_file (bool write_message, std::string *error_msg, int *bad_count, bool overwrite, bool abort_if_error) const =0 |
|
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 () |
|
int64_t | internal_add_results_fields (ex_entity_type type, Ioss::GroupingEntity *entity, int64_t position, int64_t block_count, Ioss::IntVector &truth_table, Ioexnl::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) |
|
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) |
|
| 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 | release_memory_nl () |
|
virtual void | reset_database_nl () |
|
size_t Ioexnl::BaseDatabaseIO::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 |
|
protected |
NOTE: "element" is generic for "element", "face", or "edge"
There are two modes we need to support in this routine:
- Initial definition of element map (local->global) and elemMap.reverse (global->local).
- Redefinition of element map via 'reordering' of the original map when the elements on this processor are the same, but their order is changed.
So, there will be two maps the 'elemMap.map' map is a 'direct lookup' map which maps current local position to global id and the 'elemMap.reverse' is an associative lookup which maps the global id to 'original local'. There is also a 'elemMap.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 element 1 in this element block). The 'model-local' id is given by eb_offset + 1 + position:
int local_position = elemMap.reverse[ElementMap[i+1]] (the elemMap.map and elemMap.reverse are 1-based)
But, this assumes 1..numel elements are being output at the same time; we are actually outputting a blocks worth of elements at a time, so we need to consider the block offsets. So... local-in-block position 'i' is index 'eb_offset+i' in 'elemMap.map' and the 'local_position' within the element blocks data arrays is 'local_position-eb_offset'. With this, the position within the data array of this element block is:
int eb_position = elemMap.reverse[elemMap.map[eb_offset+i+1]]-eb_offset-1
To determine which map to update on a call to this function, we use the following heuristics: – If the database state is 'Ioss::STATE_MODEL:', then update the 'elemMap.reverse'. – If the database state is not Ioss::STATE_MODEL, then leave the 'elemMap.reverse' alone since it corresponds to the information already written to the database. [May want to add a Ioss::STATE_REDEFINE_MODEL] – Always update elemMap.map to match the passed in 'ids' array.
NOTE: the maps are built an element block at a time... NOTE: The mapping is done on TRANSIENT fields only; MODEL fields should be in the original order...