33 #ifndef IOSS_Ioss_DatabaseIO_h 34 #define IOSS_Ioss_DatabaseIO_h 60 class ElementTopology;
70 class StructuredBlock;
77 using TopoContainer = std::vector<std::pair<const ElementTopology *, const ElementTopology *>>;
96 int *bad_count =
nullptr)
const 226 void create_path(
const std::string &filename)
const;
239 void openDW(
const std::string &filename)
const;
379 void add_qa_record(
const std::string &code,
const std::string &code_qa,
const std::string &date,
380 const std::string &time);
391 template <
typename T>
401 template <
typename T>
455 const std::vector<std::string> &inclusions = {});
458 std::vector<std::string> &block_adjacency)
const 464 std::vector<std::string> &block_membership)
const 586 template <
typename T>
588 const std::string &type_name,
const T *set_type);
589 template <
typename T>
591 const std::vector<std::string> &group_spec,
const T *set_type);
702 virtual bool ok__(
bool , std::string * ,
703 int *bad_count)
const 705 if (bad_count !=
nullptr) {
742 std::vector<std::string> &block_adjacency)
const;
745 std::vector<std::string> & )
const 754 size_t data_size)
const = 0;
756 size_t data_size)
const = 0;
758 size_t data_size)
const = 0;
760 size_t data_size)
const = 0;
762 size_t data_size)
const = 0;
764 size_t data_size)
const = 0;
766 size_t data_size)
const = 0;
768 size_t data_size)
const = 0;
770 size_t data_size)
const = 0;
772 size_t data_size)
const = 0;
774 size_t data_size)
const = 0;
776 size_t data_size)
const = 0;
778 void * ,
size_t )
const 784 size_t data_size)
const = 0;
786 size_t data_size)
const = 0;
788 size_t data_size)
const = 0;
790 size_t data_size)
const = 0;
792 size_t data_size)
const = 0;
794 size_t data_size)
const = 0;
796 size_t data_size)
const = 0;
798 size_t data_size)
const = 0;
800 size_t data_size)
const = 0;
802 size_t data_size)
const = 0;
804 size_t data_size)
const = 0;
806 size_t data_size)
const = 0;
808 void * ,
size_t )
const 820 #if defined(IOSS_THREADSAFE) 822 mutable std::mutex m_;
848 std::chrono::time_point<std::chrono::high_resolution_clock>
bool isInput
Definition: Ioss_DatabaseIO.h:829
virtual void release_memory__()
Definition: Ioss_DatabaseIO.h:721
Ioss::IfDatabaseExistsBehavior open_create_behavior() const
Definition: Ioss_DatabaseIO.C:386
Represents an element topology.
Definition: Ioss_ElementTopology.h:72
virtual int64_t element_global_to_local__(int64_t global) const
Definition: Ioss_DatabaseIO.h:716
void get_block_adjacencies(const Ioss::ElementBlock *eb, std::vector< std::string > &block_adjacency) const
Definition: Ioss_DatabaseIO.h:457
void set_dwname(const std::string &name) const
this will be the name in BB namespace
Definition: Ioss_DatabaseIO.h:157
Ioss::DatabaseUsage dbUsage
Definition: Ioss_DatabaseIO.h:670
void check_side_topology() const
Definition: Ioss_DatabaseIO.C:717
void release_memory()
Definition: Ioss_DatabaseIO.h:140
void create_groups(const std::string &property_name, EntityType type, const std::string &type_name, const T *set_type)
Definition: Ioss_DatabaseIO.C:538
std::string get_dwPath() const
We call this ONLY after we assure that using_dw() is TRUE \ returns mount point of Datawarp namespace...
Definition: Ioss_DatabaseIO.h:172
std::chrono::time_point< std::chrono::high_resolution_clock > m_stateStart
Definition: Ioss_DatabaseIO.h:849
void handle_groups()
Definition: Ioss_DatabaseIO.C:513
int64_t get_field(const T *reg, const Field &field, void *data, size_t data_size) const
Definition: Ioss_DatabaseIO.h:392
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.
Definition: Ioss_DatabaseIO.h:117
virtual unsigned entity_field_support() const =0
std::string pfsName
Definition: Ioss_DatabaseIO.h:617
void release_memory()
Definition: Ioss_Map.C:108
void create_path(const std::string &filename) const
This function is used to create the path to an output directory (or history, restart,...
Definition: Ioss_DatabaseIO.C:395
void flush_database() const
Definition: Ioss_DatabaseIO.h:257
virtual void compute_block_membership__(Ioss::SideBlock *, std::vector< std::string > &) const
Definition: Ioss_DatabaseIO.h:744
std::vector< std::string > qaRecords
Definition: Ioss_DatabaseIO.h:686
bool isParallelConsistent
Definition: Ioss_DatabaseIO.h:830
The main namespace for the Ioss library.
Definition: Ioad_DatabaseIO.C:66
const Ioss::PropertyManager & get_property_manager() const
Definition: Ioss_DatabaseIO.h:534
An input or output Database.
Definition: Ioss_DatabaseIO.h:82
virtual void set_maximum_symbol_length(int)
Definition: Ioss_DatabaseIO.h:433
void openDatabase() const
Definition: Ioss_DatabaseIO.h:245
DataSize
The number of bytes used to store an integer type.
Definition: Ioss_DataSize.h:40
virtual int64_t put_field_internal(const Region *reg, const Field &field, void *data, size_t data_size) const =0
Ioss::DatabaseUsage usage() const
Get the Ioss::DatabaseUsage type of the database.
Definition: Ioss_DatabaseIO.h:213
std::string dwPath
Definition: Ioss_DatabaseIO.h:618
virtual int maximum_symbol_length() const
Get the length of the longest name in the database file.
Definition: Ioss_DatabaseIO.h:432
A collection of nodes.
Definition: Ioss_NodeSet.h:53
int get_overlay_count() const
Definition: Ioss_DatabaseIO.h:527
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
void set_surface_split_type(Ioss::SurfaceSplitType split_type)
Definition: Ioss_DatabaseIO.h:451
int parallel_size() const
Definition: Ioss_ParallelUtils.C:234
Definition: Ioss_BoundingBox.h:37
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Base class for all 'grouping' entities. The following derived classes are typical:
Definition: Ioss_GroupingEntity.h:93
std::vector< std::string > blockOmissions
Definition: Ioss_DatabaseIO.h:682
void progress(const std::string &output) const
Definition: Ioss_DatabaseIO.h:543
void set_field_recognition(bool yes_no)
Definition: Ioss_DatabaseIO.h:439
virtual bool end__(Ioss::State state)=0
bool singleProcOnly
Definition: Ioss_DatabaseIO.h:836
bool is_input() const
Determine whether the database is an input database.
Definition: Ioss_DatabaseIO.h:207
bool get_use_generic_canonical_name() const
Definition: Ioss_DatabaseIO.h:422
virtual bool open_group__(const std::string &)
Definition: Ioss_DatabaseIO.h:729
Ioss::Map faceMap
Definition: Ioss_DatabaseIO.h:692
int64_t elementCount
Definition: Ioss_DatabaseIO.h:627
void set_overlay_count(int count) const
Definition: Ioss_DatabaseIO.h:526
Region * get_region() const
Definition: Ioss_DatabaseIO.h:479
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
std::string decodedFilename
Definition: Ioss_DatabaseIO.h:606
virtual int get_file_pointer() const
Definition: Ioss_DatabaseIO.h:195
virtual int64_t get_field_internal(const Region *reg, const Field &field, void *data, size_t data_size) const =0
AxisAlignedBoundingBox get_bounding_box(const Ioss::ElementBlock *eb) const
Definition: Ioss_DatabaseIO.C:1081
bool begin_state(int state, double time)
Definition: Ioss_DatabaseIO.C:489
void get_block_adjacencies__(const Ioss::ElementBlock *eb, std::vector< std::string > &block_adjacency) const
Definition: Ioss_DatabaseIO.C:778
virtual bool internal_faces_available() const
Definition: Ioss_DatabaseIO.h:349
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
bool get_logging() const
Definition: Ioss_DatabaseIO.h:382
bool open_group(const std::string &group_name)
If a database type supports groups and if the database contains groups, open the specified group.
Definition: Ioss_DatabaseIO.h:274
double timeScaleFactor
Definition: Ioss_DatabaseIO.h:667
const std::vector< std::string > & get_information_records() const
Get all information records (informative strings) for the database.
Definition: Ioss_DatabaseIO.h:357
void add_information_record(const std::string &info)
Add an information record (an informative string) to the database.
Definition: Ioss_DatabaseIO.C:679
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 Da...
Definition: Ioss_DatabaseIO.C:321
char fieldSeparator
Definition: Ioss_DatabaseIO.h:827
bool lowerCaseVariableNames
Definition: Ioss_DatabaseIO.h:672
Ioss::Map elemMap
Definition: Ioss_DatabaseIO.h:693
std::string DBFilename
Definition: Ioss_DatabaseIO.h:605
bool is_parallel() const
Definition: Ioss_DatabaseIO.h:541
Ioss::DataSize dbIntSizeAPI
Definition: Ioss_DatabaseIO.h:671
Definition: Ioss_ParallelUtils.h:49
int64_t global_to_local(int64_t global, bool must_exist=true) const
Definition: Ioss_Map.C:554
bool ignoreDatabaseNames
Definition: Ioss_DatabaseIO.h:841
void set_use_generic_canonical_name(bool yes_no)
Definition: Ioss_DatabaseIO.h:423
void closeDW() const
Function which invokes stageout from BB to Disk, prior to completion of final close.
Definition: Ioss_DatabaseIO.C:356
Definition: Ioss_State.h:43
State
Access states for a database.
Definition: Ioss_State.h:42
void compute_block_membership(Ioss::SideBlock *efblock, std::vector< std::string > &block_membership) const
Definition: Ioss_DatabaseIO.h:463
std::vector< std::string > informationRecords
Definition: Ioss_DatabaseIO.h:685
bool begin(Ioss::State state)
Set the database to the given State.
Definition: Ioss_DatabaseIO.h:310
bool usingParallelIO
Definition: Ioss_DatabaseIO.h:673
bool m_enableTracing
Definition: Ioss_DatabaseIO.h:847
bool using_parallel_io() const
Definition: Ioss_DatabaseIO.h:108
virtual void closeDatabase__() const
Definition: Ioss_DatabaseIO.C:384
Ioss::State dbState
Definition: Ioss_DatabaseIO.h:621
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
void get_step_times()
Definition: Ioss_DatabaseIO.h:342
int64_t put_field(const T *reg, const Field &field, void *data, size_t data_size) const
Definition: Ioss_DatabaseIO.h:402
DatabaseIO & operator=(const DatabaseIO &)=delete
virtual void openDatabase__() const
Definition: Ioss_DatabaseIO.C:382
bool filePerState
Definition: Ioss_DatabaseIO.h:657
A structured zone – i,j,k.
Definition: Ioss_StructuredBlock.h:103
int int_byte_size_api() const
Returns 4 or 8.
Definition: Ioss_DatabaseIO.C:238
ElementTopology * commonSideTopology
Definition: Ioss_DatabaseIO.h:584
Ioss::PropertyManager properties
Definition: Ioss_DatabaseIO.h:574
A collection of elements.
Definition: Ioss_ElementSet.h:54
virtual int64_t put_field_internal(const StructuredBlock *, const Field &, void *, size_t) const
Definition: Ioss_DatabaseIO.h:807
DatabaseUsage
Specifies how an Ioss::DatabaseIO object will be used.
Definition: Ioss_DBUsage.h:40
virtual void read_meta_data__()=0
int overlayCount
Definition: Ioss_DatabaseIO.h:650
virtual void get_step_times__()
Definition: Ioss_DatabaseIO.h:736
void closeDatabase() const
Definition: Ioss_DatabaseIO.h:251
Ioss::Map edgeMap
Definition: Ioss_DatabaseIO.h:691
TopoContainer sideTopology
Used to speed up faceblock/edgeblock calculations.
Definition: Ioss_DatabaseIO.h:640
virtual bool ok__(bool, std::string *, int *bad_count) const
Definition: Ioss_DatabaseIO.h:702
void check_setDW() const
Definition: Ioss_DatabaseIO.C:280
std::vector< std::vector< bool > > blockAdjacency
Definition: Ioss_DatabaseIO.h:695
void set_cycle_count(int count) const
Definition: Ioss_DatabaseIO.h:524
const std::string & decoded_filename() const
Get a file-per-processor filename associated with the database.
Definition: Ioss_DatabaseIO.C:454
bool useGenericCanonicalName
Definition: Ioss_DatabaseIO.h:838
void read_meta_data()
Definition: Ioss_DatabaseIO.h:336
Ioss::ParallelUtils util_
Definition: Ioss_DatabaseIO.h:819
void set_pfsname(const std::string &name) const
Definition: Ioss_DatabaseIO.h:151
A collection of all nodes in the region.
Definition: Ioss_NodeBlock.h:53
int64_t element_global_to_local(int64_t global) const
Definition: Ioss_DatabaseIO.h:123
bool end(Ioss::State state)
Return the database to STATE_CLOSED.
Definition: Ioss_DatabaseIO.h:326
bool usingDataWarp
Definition: Ioss_DatabaseIO.h:619
void set_region(Region *region)
Definition: Ioss_DatabaseIO.h:228
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.
Definition: Ioss_DatabaseIO.h:290
virtual void flush_database__() const
Definition: Ioss_DatabaseIO.h:699
virtual int int_byte_size_db() const =0
void create_group(EntityType type, const std::string &type_name, const std::vector< std::string > &group_spec, const T *set_type)
Definition: Ioss_DatabaseIO.C:568
bool blockAdjacenciesCalculated
Definition: Ioss_DatabaseIO.h:843
void set_file_per_state(bool yes_no) const
Definition: Ioss_DatabaseIO.h:528
Definition: Ioss_Map.h:52
virtual void finalize_database()
Definition: Ioss_DatabaseIO.h:148
Region * region_
Definition: Ioss_DatabaseIO.h:826
Definition: Ioss_CommSet.h:51
void progress(const std::string &output) const
Definition: Ioss_ParallelUtils.C:513
std::map< std::string, AxisAlignedBoundingBox > elementBlockBoundingBoxes
Definition: Ioss_DatabaseIO.h:817
void set_field_separator(char separator)
Set the character used to separate a field suffix from the field basename when recognizing vector,...
Definition: Ioss_DatabaseIO.C:260
Definition: Ioss_SurfaceSplit.h:40
Ioss::SurfaceSplitType splitType
Definition: Ioss_DatabaseIO.h:669
virtual bool node_major() const
Definition: Ioss_DatabaseIO.h:134
std::string get_filename() const
Get the file name associated with the database.
Definition: Ioss_DatabaseIO.h:189
bool m_timeStateInOut
Definition: Ioss_DatabaseIO.h:846
virtual bool end_state__(int state, double time)
Definition: Ioss_DatabaseIO.C:511
virtual void set_int_byte_size_api(Ioss::DataSize size) const
Returns 4 or 8.
Definition: Ioss_DatabaseIO.C:250
int parallel_rank() const
Get the processor that this mesh database is on.
Definition: Ioss_DatabaseIO.h:539
std::vector< char > data
Definition: cth_pressure_map.C:73
A grouping entity that contains other grouping entities.
Definition: Ioss_Region.h:98
void add_information_records(const std::vector< std::string > &info)
Add multiple information records (informative strings) to the database.
Definition: Ioss_DatabaseIO.C:669
void set_logging(bool on_off)
Definition: Ioss_DatabaseIO.h:383
bool enableFieldRecognition
Definition: Ioss_DatabaseIO.h:828
Definition: Ioss_DataSize.h:40
std::string get_dwname() const
Definition: Ioss_DatabaseIO.h:159
bool is_parallel_consistent() const
Definition: Ioss_DatabaseIO.h:419
SurfaceSplitType
Method used to split sidesets into homogenous blocks.
Definition: Ioss_SurfaceSplit.h:38
char get_field_separator() const
Definition: Ioss_DatabaseIO.h:436
bool ignore_database_names() const
Definition: Ioss_DatabaseIO.h:425
void ignore_database_names(bool yes_no)
Definition: Ioss_DatabaseIO.h:426
virtual bool begin__(Ioss::State state)=0
std::string name(Ioss::GroupingEntity *entity)
Definition: io_info.C:89
A collection of element sides.
Definition: Ioss_SideSet.h:59
Holds metadata for bulk data associated with a GroupingEntity.
Definition: Ioss_Field.h:47
bool get_file_per_state() const
Definition: Ioss_DatabaseIO.h:529
bool using_dw() const
Definition: Ioss_DatabaseIO.h:183
virtual bool create_subgroup__(const std::string &)
Definition: Ioss_DatabaseIO.h:730
Ioss::Map nodeMap
Definition: Ioss_DatabaseIO.h:690
virtual bool internal_edges_available() const
Definition: Ioss_DatabaseIO.h:348
int MPI_Comm
Definition: Ioss_CodeTypes.h:88
std::string get_pfsname() const
Definition: Ioss_DatabaseIO.h:153
void set_parallel_consistency(bool on_off)
Definition: Ioss_DatabaseIO.h:420
int parallel_size() const
Definition: Ioss_DatabaseIO.h:540
void verify_and_log(const GroupingEntity *ge, const Field &field, int in_out) const
Definition: Ioss_DatabaseIO.C:478
int64_t nodeCount
Definition: Ioss_DatabaseIO.h:626
const Ioss::ParallelUtils & util() const
Definition: Ioss_DatabaseIO.h:533
#define IOSS_FUNC_ENTER(m)
Definition: Ioss_CodeTypes.h:122
virtual int64_t node_global_to_local__(int64_t global, bool must_exist) const
Definition: Ioss_DatabaseIO.h:711
void set_common_side_topology() const
Definition: Ioss_DatabaseIO.C:639
virtual int64_t get_field_internal(const StructuredBlock *, const Field &, void *, size_t) const
Definition: Ioss_DatabaseIO.h:777
bool isParallel
true if running in parallel
Definition: Ioss_DatabaseIO.h:623
EntityType
The particular type of GroupingEntity.
Definition: Ioss_EntityType.h:39
bool ok(bool write_message=false, std::string *error_message=nullptr, int *bad_count=nullptr) const
Check to see if database state is OK.
Definition: Ioss_DatabaseIO.h:95
bool get_field_recognition() const
Definition: Ioss_DatabaseIO.h:437
std::string bbName
Definition: Ioss_DatabaseIO.h:616
int cycleCount
Definition: Ioss_DatabaseIO.h:648
virtual bool begin_state__(int state, double time)
Definition: Ioss_DatabaseIO.C:509
int get_cycle_count() const
Definition: Ioss_DatabaseIO.h:525
A collection of Ioss::Property objects.
Definition: Ioss_PropertyManager.h:49
int myProcessor
number of processor this database is for
Definition: Ioss_DatabaseIO.h:624
IfDatabaseExistsBehavior
Definition: Ioss_DBUsage.h:56
bool end_state(int state, double time)
Definition: Ioss_DatabaseIO.C:497
bool doLogging
Definition: Ioss_DatabaseIO.h:837
std::vector< std::string > blockInclusions
Definition: Ioss_DatabaseIO.h:683
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
std::string originalDBFilename
Definition: Ioss_DatabaseIO.h:604
void error_message(const Ioss::Field &field, Ioss::Field::BasicType requested_type)
Definition: Ioss_Field.C:64
void set_lower_case_variable_names(bool true_false) const
Definition: Ioss_DatabaseIO.h:441
virtual bool needs_shared_node_information() const
Determine whether the database needs information about process ownership of nodes.
Definition: Ioss_DatabaseIO.h:219
Ioss::SurfaceSplitType get_surface_split_type() const
Definition: Ioss_DatabaseIO.h:452
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.
Definition: Ioss_DatabaseIO.C:694
std::vector< std::pair< const ElementTopology *, const ElementTopology * > > TopoContainer
Definition: Ioss_DatabaseIO.h:77
void compute_block_adjacencies() const
Definition: Ioss_DatabaseIO.C:820
void set_block_omissions(const std::vector< std::string > &omissions, const std::vector< std::string > &inclusions={})
Definition: Ioss_DatabaseIO.C:703
void set_time_scale_factor(double factor)
Definition: Ioss_DatabaseIO.h:531
const std::vector< std::string > & get_qa_records() const
Get all QA records, each of which consists of 4 strings, from the database.
Definition: Ioss_DatabaseIO.h:378