|
SpECTRE
v2025.08.19
|
Contains functions and classes for manipulating HDF5 files. More...
Classes | |
| class | Cce |
| Represents Cauchy-Characteristic Extraction (CCE) bondi variables inside of an HDF5 file. More... | |
| class | Dat |
| Represents a multicolumn dat file inside an HDF5 file. More... | |
| class | EosTable |
| An equation of state table subfile written inside an H5 file. More... | |
| class | H5File |
| Opens an HDF5 file for access and allows manipulation of data. More... | |
| class | Header |
| Writes header info about the build, git commit, branch, etc. More... | |
| class | Object |
| Abstract base class representing an object in an HDF5 file. More... | |
| class | SourceArchive |
| Writes an archive of the source tree into a dataset. More... | |
| class | StellarCollapseEos |
| Reads in tabulated equation of state file from stellarcollapse.org More... | |
| class | Version |
| Used to store the version of the file. More... | |
| class | VolumeData |
| A volume data subfile written inside an H5 file. More... | |
Enumerations | |
| enum class | AccessType { AccessType::ReadWrite , AccessType::ReadOnly } |
| Set the access type to the H5File. More... | |
Functions | |
| std::ostream & | operator<< (std::ostream &os, AccessType t) |
| bool | check_src_files_match (const std::vector< std::string > &input_filenames) |
Check if all files within input_filenames have the same source archive. | |
| bool | check_observation_ids_match (const std::vector< std::string > &input_filenames, const std::string &subfile_name) |
Check if all files within input_filenames with volume subfile subfile_name have the same set of observation ids. | |
| void | combine_h5_vol (const std::vector< std::string > &file_names, const std::string &subfile_name, const std::string &output, std::optional< double > start_value=std::nullopt, std::optional< double > stop_value=std::nullopt, const std::optional< std::vector< std::string > > &blocks_to_combine=std::nullopt, bool check_src=true) |
| Combine a volume subfile across different HDF5 files. More... | |
| void | combine_h5_dat (const std::vector< std::string > &h5_files_to_combine, const std::string &output_h5_filename, Verbosity verbosity=Verbosity::Silent) |
Combine the h5::Dat subfiles of multiple h5::H5Files into a single H5 file. More... | |
| bool | types_equal (hid_t dtype1, hid_t dtype2) |
Check if dtype1 and dtype2 are the same HDF5 data type. | |
| template<typename T > | |
| void | write_data (hid_t group_id, const std::vector< T > &data, const std::vector< size_t > &extents, const std::string &name="scalar", const bool overwrite_existing=false) |
Write a std::vector named name to the group group_id | |
| void | write_data (hid_t group_id, const DataVector &data, const std::string &name, const bool overwrite_existing=false) |
Write a DataVector named name to the group group_id | |
| template<size_t Dim> | |
| void | write_extents (hid_t group_id, const Index< Dim > &extents, const std::string &name="Extents") |
Write the extents as an attribute named name to the group group_id. | |
| template<typename Type > | |
| void | write_to_attribute (hid_t location_id, const std::string &name, const Type &value) |
Write a value of type Type to an HDF5 attribute named name | |
| template<typename T > | |
| void | write_to_attribute (hid_t group_id, const std::string &name, const std::vector< T > &data) |
Write the vector data to the attribute attribute_name in the group group_id. | |
| template<typename T , size_t Size> | |
| void | write_to_attribute (hid_t group_id, const std::string &name, const std::vector< std::array< T, Size > > &data) |
Write the vector<array<fundamental, size>> data to the attribute name in the group group_id. | |
| template<typename Type > | |
| Type | read_value_attribute (hid_t location_id, const std::string &name) |
Read a value of type Type from an HDF5 attribute named name | |
| template<typename Type > | |
| std::vector< Type > | read_rank1_attribute (hid_t group_id, const std::string &name) |
Read rank-1 of type Type from an HDF5 attribute named name | |
| template<typename T , size_t Size> | |
| std::vector< std::array< T, Size > > | read_rank1_array_attribute (hid_t group_id, const std::string &name) |
Read the vector<array<fundamental, size>> from the attribute name in the group group_id. | |
| std::vector< std::string > | get_attribute_names (hid_t file_id, const std::string &group_name) |
| Get the names of all the attributes in a group. | |
| void | write_connectivity (hid_t group_id, const std::vector< int > &connectivity) |
| Write the connectivity into the group in the H5 file. | |
| void | delete_connectivity (hid_t group_id) |
| Delete the connectivity from the group in the H5 file. | |
| std::array< hsize_t, 2 > | append_to_dataset (hid_t file_id, const std::string &name, const std::vector< double > &data, hsize_t number_of_rows, const std::array< hsize_t, 2 > ¤t_file_size) |
| Append rows to an existing dataset. More... | |
| std::vector< std::string > | get_group_names (hid_t file_id, const std::string &group_name) |
| Get the names of all the groups and datasets in a group. | |
| bool | contains_dataset_or_group (hid_t id, const std::string &group_name, const std::string &dataset_name) |
Check if name is a dataset or group in the subgroup group_name of id. More... | |
| bool | contains_attribute (hid_t file_id, const std::string &group_name, const std::string &attribute_name) |
| Check if an attribute is in a group. | |
| hid_t | open_dataset (hid_t group_id, const std::string &dataset_name) |
| Open an HDF5 dataset. | |
| void | close_dataset (hid_t dataset_id) |
| Close an HDF5 dataset. | |
| hid_t | open_dataspace (hid_t dataset_id) |
| Open an HDF5 dataspace. | |
| void | close_dataspace (hid_t dataspace_id) |
| Close an HDF5 dataspace. | |
| template<size_t Rank, typename T > | |
| T | read_data (hid_t group_id, const std::string &dataset_name) |
| Read an array of rank 0-3 into an object. More... | |
| template<size_t Dim> | |
| Index< Dim > | read_extents (hid_t group_id, const std::string &extents_name="Extents") |
| Read the HDF5 attribute representing extents from a group. | |
| template<typename T > | |
| hid_t | h5_type () |
Returns the HDF5 datatype for the corresponding type T More... | |
| hid_t | fortran_string () |
| Create an H5 FORTRAN string. | |
| std::pair< size_t, size_t > | offset_and_length_for_grid (const std::string &grid_name, const std::vector< std::string > &all_grid_names, const std::vector< std::vector< size_t > > &all_extents) |
Find the interval within the contiguous dataset stored in h5::VolumeData that holds data for a particular grid_name. More... | |
| template<size_t Dim> | |
| Mesh< Dim > | mesh_for_grid (const std::string &grid_name, const std::vector< std::string > &all_grid_names, const std::vector< std::vector< size_t > > &all_extents, const std::vector< std::vector< Spectral::Basis > > &all_bases, const std::vector< std::vector< Spectral::Quadrature > > &all_quadratures) |
| auto | h5f_acc_rdonly () |
| auto | h5f_acc_rdwr () |
| auto | h5f_acc_trunc () |
| auto | h5p_default () |
| auto | h5s_all () |
| auto | h5s_unlimited () |
| auto | h5s_scalar () |
| template<typename T > | |
| T | retrieve_dataset (hid_t file_id, const std::array< hsize_t, 2 > &file_size) |
| Convert the data in a dataset to a Matrix or a std::vector<std::vector<double>> | |
| template<typename T > | |
| T | retrieve_dataset_subset (hid_t file_id, const std::vector< size_t > &these_columns, size_t first_row, size_t num_rows, const std::array< hsize_t, 2 > &file_size) |
| Convert the data in a dataset to a Matrix or a std::vector<std::vector<double>> | |
Contains functions and classes for manipulating HDF5 files.
Wraps many underlying C H5 routines making them easier to use and easier to manipulate H5 files.
| void h5::combine_h5_dat | ( | const std::vector< std::string > & | h5_files_to_combine, |
| const std::string & | output_h5_filename, | ||
| Verbosity | verbosity = Verbosity::Silent |
||
| ) |
Combine the h5::Dat subfiles of multiple h5::H5Files into a single H5 file.
The times in each h5::Dat subfile can be unordered. The necessary sorting will be handled in this function. However, the h5_files_to_combine must be mononitcally increasing in time; meaning the earliest time in File1.h5 must come before the earliest time in File2.h5.
If there are overlapping times, the "latest" one is always used; meaning if you have data in File1.h5 and File2.h5 and if the earliest time in File2.h5 is before some times in File1.h5, those times in File1.h5 will be discarded and won't appear in the combined H5 file.
If the H5 files in h5_files_to_combine have other types of subfiles, those will be ignored and will not appear in output_h5_filename.
If h5_files_to_combine is empty, an error will occur.
If there are no h5::Dat files in the h5_files_to_combine, an error will occur.
If the legend or version of an h5::Dat is not the same in all of h5_files_to_combine, an error will occur.
| h5_files_to_combine | Vector of H5 files to combine. They must all have the same h5::Dat filenames, and those h5::Dat subfiles must have the same legends and versions. If not, an error will occur. |
| output_h5_filename | Name of the combined H5 file. The h5::Dat subfile structure will be identical to the ones in h5_files_to_combine. |
| verbosity | Controls how much is printed to stdout. Defaults to no Verbosity::Silent or no output. |
| void h5::combine_h5_vol | ( | const std::vector< std::string > & | file_names, |
| const std::string & | subfile_name, | ||
| const std::string & | output, | ||
| std::optional< double > | start_value = std::nullopt, |
||
| std::optional< double > | stop_value = std::nullopt, |
||
| const std::optional< std::vector< std::string > > & | blocks_to_combine = std::nullopt, |
||
| bool | check_src = true |
||
| ) |
Combine a volume subfile across different HDF5 files.
The argument blocks_to_combine can list block names and block groups that should be combined. We ignore other blocks when combining the HDF5 files. This provides a way to filter volume data for easier visualization.
| std::pair< size_t, size_t > h5::offset_and_length_for_grid | ( | const std::string & | grid_name, |
| const std::vector< std::string > & | all_grid_names, | ||
| const std::vector< std::vector< size_t > > & | all_extents | ||
| ) |
Find the interval within the contiguous dataset stored in h5::VolumeData that holds data for a particular grid_name.
h5::VolumeData stores data for all grids that compose the volume contiguously. This function helps with reconstructing which part of that contiguous dataset belongs to a particular grid. See the h5::VolumeData documentation for more information on how it stores data.
To use this function, call h5::VolumeData::get_grid_names and h5::VolumeData::get_extents and pass the results for the all_grid_names and all_extents arguments, respectively. This means you can retrieve this information from an h5::VolumeData once and use it to call offset_and_length_for_grid multiple times with different grid_names.
Here is an example for using this function:
h5::VolumeData