|
| | DatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, MPI_Comm communicator, const Ioss::PropertyManager &props) |
| |
| | DatabaseIO (const DatabaseIO &from)=delete |
| |
| DatabaseIO & | operator= (const DatabaseIO &from)=delete |
| |
| | ~DatabaseIO () override |
| |
| int | get_file_pointer () const override |
| |
| | DatabaseIO (Ioss::Region *region, const std::string &filename, Ioss::DatabaseUsage db_usage, MPI_Comm communicator, const Ioss::PropertyManager &props) |
| |
| | DatabaseIO (const DatabaseIO &from)=delete |
| |
| DatabaseIO & | operator= (const DatabaseIO &from)=delete |
| |
| | ~DatabaseIO () override |
| |
| const std::string | get_format () const override |
| |
| unsigned | entity_field_support () const override |
| |
| 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 |
| |
| virtual bool | node_major () const |
| |
| void | release_memory () |
| |
| virtual void | finalize_database () |
| |
| void | set_pfsname (const std::string &name) const |
| |
| std::string | get_pfsname () const |
| |
| void | set_dwname (const std::string &name) const |
| | this will be the name in BB namespace More...
|
| |
| std::string | get_dwname () const |
| |
| std::string | get_dwPath () const |
| | We call this ONLY after we assure that using_dw() is TRUE \ returns mount point of Datawarp namespace, e.g: /opt/cray/....<jobid> More...
|
| |
| void | check_setDW () const |
| |
| bool | using_dw () const |
| |
| 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 | openDW (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. More...
|
| |
| void | closeDW () const |
| | Function which invokes stageout from BB to Disk, prior to completion of final close. More...
|
| |
| 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 (int state, double time) |
| |
| bool | end_state (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) |
| |
| 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...
|
| |
| Region * | get_region () const |
| |
| void | set_cycle_count (int count) const |
| |
| int | get_cycle_count () const |
| |
| void | set_overlay_count (int count) const |
| |
| int | get_overlay_count () const |
| |
| void | set_file_per_state (bool yes_no) const |
| |
| bool | get_file_per_state () const |
| |
| void | set_time_scale_factor (double factor) |
| |
| const Ioss::ParallelUtils & | util () const |
| |
| const Ioss::PropertyManager & | get_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 |
| |
| void | progress (const std::string &output) const |
| |
|
| void | get_step_times__ () override |
| |
| bool | open_input_file (bool write_message, std::string *error_msg, int *bad_count, bool abort_if_error) const override |
| |
| bool | handle_output_file (bool write_message, std::string *error_msg, int *bad_count, bool overwrite, bool abort_if_error) const override |
| |
| bool | check_valid_file_ptr (bool write_message, std::string *error_msg, int *bad_count, bool abort_if_error) const |
| |
| int64_t | get_field_internal (const Ioss::Region *reg, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::NodeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::EdgeBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::FaceBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::ElementBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::StructuredBlock *, const Ioss::Field &, void *, size_t) const override |
| |
| int64_t | get_field_internal (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::NodeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::EdgeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::FaceSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::ElementSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | get_field_internal (const Ioss::SideSet *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 *reg, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::NodeBlock *nb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::EdgeBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::FaceBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::ElementBlock *eb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::NodeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::EdgeSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::FaceSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::ElementSet *ns, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::SideSet *fs, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::CommSet *cs, const Ioss::Field &field, void *data, size_t data_size) const override |
| |
| int64_t | put_field_internal (const Ioss::StructuredBlock *, const Ioss::Field &, void *, size_t) const override |
| |
| int64_t | put_Xset_field_internal (ex_entity_type type, const Ioss::EntitySet *ns, const Ioss::Field &field, void *data, size_t data_size) const |
| |
| int64_t | get_Xset_field_internal (ex_entity_type type, const Ioss::EntitySet *ns, const Ioss::Field &field, void *data, size_t data_size) const |
| |
| int64_t | read_nodal_coordinates () |
| |
| void | read_elements (const Ioss::ElementBlock &block) |
| |
| void | compute_node_status () const |
| |
| void | read_meta_data__ () override |
| |
| void | read_communication_metadata () |
| |
| int64_t | read_transient_field (ex_entity_type type, const Ioex::VariableNameMap &variables, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const |
| |
| int64_t | read_attribute_field (ex_entity_type type, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const |
| |
| int64_t | write_attribute_field (ex_entity_type type, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *data) const |
| |
| int64_t | read_ss_transient_field (const Ioss::Field &field, int64_t id, void *variables, std::vector< int > &is_valid_side) const |
| |
| void | write_nodal_transient_field (ex_entity_type type, const Ioss::Field &field, const Ioss::NodeBlock *ge, int64_t count, void *variables) const |
| |
| void | write_entity_transient_field (ex_entity_type type, const Ioss::Field &field, const Ioss::GroupingEntity *ge, int64_t count, void *variables) const |
| |
| void | write_meta_data () override |
| |
| void | gather_communication_metadata (Ioex::CommunicationMetaData *meta) |
| |
| void | read_region () |
| |
| void | get_edgeblocks () |
| |
| void | get_faceblocks () |
| |
| void | get_elemblocks () |
| |
| void | get_blocks (ex_entity_type entity_type, int rank_offset, const std::string &basename) |
| |
| void | get_sidesets () |
| |
| template<typename T > |
| void | get_sets (ex_entity_type type, int64_t count, const std::string &base, const T *) |
| |
| void | get_nodesets () |
| |
| void | get_edgesets () |
| |
| void | get_facesets () |
| |
| void | get_elemsets () |
| |
| void | get_commsets () |
| |
| const Ioss::Map & | get_map (ex_entity_type type) const |
| |
| const Ioss::Map & | get_map (Ioss::Map &entity_map, int64_t entityCount, ex_entity_type entity_type, ex_inquiry inquiry_type) const |
| |
| int64_t | handle_node_ids (void *ids, int64_t num_to_get) const |
| |
| int64_t | handle_element_ids (const Ioss::ElementBlock *eb, void *ids, size_t num_to_get) const |
| |
| int64_t | handle_face_ids (const Ioss::FaceBlock *eb, void *ids, size_t num_to_get) const |
| |
| int64_t | handle_edge_ids (const Ioss::EdgeBlock *eb, void *ids, size_t num_to_get) const |
| |
| int64_t | get_side_connectivity (const Ioss::SideBlock *fb, int64_t id, int64_t my_side_count, void *fconnect, bool map_ids) const |
| |
| template<typename INT > |
| int64_t | get_side_connectivity_internal (const Ioss::SideBlock *fb, int64_t id, int64_t side_count, INT *fconnect, bool map_ids) const |
| |
| int64_t | get_side_distributions (const Ioss::SideBlock *fb, int64_t id, int64_t my_side_count, double *dist_fact, size_t data_size) const |
| |
| int64_t | get_side_field (const Ioss::SideBlock *ef_blk, const Ioss::Field &field, void *data, size_t data_size) const |
| |
| int64_t | put_side_field (const Ioss::SideBlock *fb, const Ioss::Field &field, void *data, size_t data_size) const |
| |
|
| bool | ok__ (bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const override |
| |
| bool | open_group__ (const std::string &group_name) override |
| |
| bool | create_subgroup__ (const std::string &group_name) override |
| |
| bool | begin__ (Ioss::State state) override |
| |
| bool | end__ (Ioss::State state) override |
| |
| void | open_state_file (int state) |
| |
| bool | begin_state__ (int state, double time) override |
| |
| bool | end_state__ (int state, double time) override |
| |
| int | maximum_symbol_length () const override |
| | Get the length of the longest name in the database file. More...
|
| |
| 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__ (Ioss::SideBlock *efblock, std::vector< std::string > &block_membership) const override |
| |
| int | int_byte_size_db () const override |
| |
| void | set_int_byte_size_api (Ioss::DataSize size) const override |
| | Returns 4 or 8. More...
|
| |
| void | write_results_metadata (bool gather_data=true) |
| |
| void | openDatabase__ () const override |
| |
| void | closeDatabase__ () const override |
| |
| virtual int | free_file_pointer () const |
| |
| void | finalize_file_open () const |
| |
| int | get_current_state () const |
| |
| void | put_qa () |
| |
| void | put_info () |
| |
| template<typename T > |
| void | internal_write_results_metadata (ex_entity_type type, std::vector< T * > entities, int &glob_index) |
| |
| void | generate_sideset_truth_table () |
| |
| void | output_results_names (ex_entity_type type, VariableNameMap &variables) const |
| |
| int | gather_names (ex_entity_type type, VariableNameMap &variables, const Ioss::GroupingEntity *ge, int index, bool reduction) |
| |
| void | get_nodeblocks () |
| |
| void | add_attribute_fields (ex_entity_type entity_type, Ioss::GroupingEntity *block, int attribute_count, const std::string &type) |
| |
| void | output_other_meta_data () |
| |
| int64_t | internal_add_results_fields (ex_entity_type type, Ioss::GroupingEntity *entity, int64_t position, int64_t block_count, Ioss::IntVector &truth_table, Ioex::VariableNameMap &variables) |
| |
| int64_t | add_results_fields (ex_entity_type type, Ioss::GroupingEntity *entity, int64_t position=0) |
| |
| void | add_region_fields () |
| |
| void | store_reduction_field (ex_entity_type type, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *variables) const |
| |
| void | get_reduction_field (ex_entity_type type, const Ioss::Field &field, const Ioss::GroupingEntity *ge, void *variables) const |
| |
| void | write_reduction_fields () const |
| |
| void | read_reduction_fields () const |
| |
| int | get_database_step (int global_step) const |
| |
| void | flush_database__ () const override |
| |
| void | finalize_write (int state, double sim_time) |
| |
| | 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 |
| |
| template<> |
| void | create_group (EntityType type, const std::string &, const std::vector< std::string > &group_spec, const SideSet *) |
| |
| int | exodusFilePtr {-1} |
| |
| std::string | m_groupName |
| |
| EntityIdSet | ids_ |
| |
| int | exodusMode {EX_CLOBBER} |
| |
| int | dbRealWordSize {8} |
| |
| int | maximumNameLength {32} |
| |
| int | spatialDimension {0} |
| |
| int64_t | edgeCount {0} |
| |
| int64_t | faceCount {0} |
| |
| std::map< ex_entity_type, int > | m_groupCount |
| |
| Ioss::Int64Vector | nodeCmapIds |
| |
| Ioss::Int64Vector | nodeCmapNodeCnts |
| |
| Ioss::Int64Vector | elemCmapIds |
| |
| Ioss::Int64Vector | elemCmapElemCnts |
| |
| int64_t | commsetNodeCount {0} |
| |
| int64_t | commsetElemCount {0} |
| |
| std::map< ex_entity_type, Ioss::IntVector > | m_truthTable |
| |
| std::map< ex_entity_type, VariableNameMap > | m_variables |
| |
| ValueContainer | globalValues |
| |
| std::vector< unsigned char > | nodeConnectivityStatus |
| |
| std::map< std::string, Ioss::Int64Vector > | activeNodeSetNodesIndex |
| |
| time_t | timeLastFlush {0} |
| |
| int | flushInterval {-1} |
| |
| bool | fileExists {false} |
| |
| bool | minimizeOpenFiles {false} |
| |
| bool | blockAdjacenciesCalculated {false} |
| |
| bool | nodeConnectivityStatusCalculated |
| |
| Ioss::PropertyManager | properties |
| |
| ElementTopology * | commonSideTopology {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 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 | filePerState {false} |
| |
| bool | usingDataWarp {false} |
| |
| bool | isParallel {false} |
| | true if running in parallel More...
|
| |
| 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 |
| |
| int64_t Iofx::DatabaseIO::handle_node_ids |
( |
void * |
ids, |
|
|
int64_t |
num_to_get |
|
) |
| const |
|
private |
There are two modes we need to support in this routine:
- Initial definition of node map (local->global) and nodeMap.reverse (global->local).
- Redefinition of node map via 'reordering' of the original map when the nodes on this processor are the same, but their order is changed (or count because of ghosting)
So, there will be two maps the 'nodeMap.map' map is a 'direct lookup' map which maps current local position to global id and the 'nodeMap.reverse' is an associative lookup which maps the global id to 'original local'. There is also a 'nodeMap.reorder' which is direct lookup and maps current local position to original local.
The ids coming in are the global ids; their position is the "local id-1" (That is, data[0] contains the global id of local node 1 in this node block).
int local_position = nodeMap.reverseNodeMap[i+1]
To determine which map to update on a call to this function, we use the following hueristics: – If the database state is 'STATE_MODEL:', then update the 'nodeMap.reverse' and 'nodeMap.map'
– If the database state is not STATE_MODEL, then leave the 'nodeMap.reverse' and 'nodeMap.map' alone since they correspond to the information already written to the database. [May want to add a STATE_REDEFINE_MODEL]
– In both cases, update the nodeMap.reorder
NOTE: The mapping is done on TRANSIENT fields only; MODEL fields should be in the original order...