/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/data/hdf5_output.hh Source File#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
hdf5_output.hh
Go to the documentation of this file.
54 [[deprecated("Use HDF5Output(top_folder, output_name, Config::OutputSettings(config).configuration_json) instead")]]
55 HDF5Output(const std::string top_folder, const std::string output_name, const ConfigTree &config)
56 : HDF5Output(std::move(top_folder), std::move(output_name), Config::OutputSettings(config).configuration_json)
97 throw std::runtime_error("HDF5Output::scalar: The scalar '" + name + "' has not been registered before!");
122 staged.actions.emplace_back([name, v = value_type(value), create, offset](HDF5FrameContext &context) {
136 void scalar(const std::string &name, const char *value) { scalar<std::string>(name, std::string(value)); }
161 staged.actions.emplace_back([name, dims, grid = std::move(grid_data)](HDF5FrameContext &context) {
163 auto dataset = context.group("coordinates").create_dataset(name, DiFfRG::hdf5::type_of<coord_type>(), space);
177 if (coord_identifiers.find(coord_name) == coord_identifiers.end()) map(coord_name, coordinates);
296 void stage_map(const std::string &name, const std::string &coord_name, const DiFfRG::hdf5::Dims &dims,
306 [name, coord_name, dims, series, create_parent, data = std::move(payload)](HDF5FrameContext &context) {
351 template <typename COORD> void check_coordinates(const std::string &coord_name, const COORD &coordinates)
A hierarchical configuration tree, readable from JSON and TOML files.
Definition config_tree.hh:32
The one place HDF5 identifiers live while a frame is being written.
Definition hdf5_frame.hh:33
DiFfRG::hdf5::Group & group(const std::string &name)
Writes staged HDF5 frames on a single background thread.
Definition hdf5_writer.hh:31
void mark_finished(bool crashed)
Record how the run ended: sets the root finished attribute to 1, and crashed to whether it ended by t...
void check_coordinates(const std::string &coord_name, const COORD &coordinates)
Definition hdf5_output.hh:351
void map(const std::string &name, const std::string &coord_name, const INTERP &_interpolator)
Definition hdf5_output.hh:199
void set_writer(HDF5FrameWriter *writer)
Route staged frames through a writer thread instead of writing them inline.
Definition hdf5_output.hh:261
DiFfRG::hdf5::File & get_file()
Open the file for setup work performed before any frame is written.
std::map< std::string, size_t > map_series_numbers
Definition hdf5_output.hh:346
void map(const std::string &name, const INTERP &_interpolator)
Definition hdf5_output.hh:192
std::map< std::string, ScalarInfo > scalar_infos
Definition hdf5_output.hh:331
std::set< std::string > created_map_groups
Definition hdf5_output.hh:333
void stage_map(const std::string &name, const std::string &coord_name, const DiFfRG::hdf5::Dims &dims, std::vector< T > payload)
Stage one map series: the group, its series record, its data and its coordinate link.
Definition hdf5_output.hh:296
void stage_fe_frame(unsigned int series_number, double time, const std::string &group_name, const std::string &fe_output_name, unsigned int dim, std::size_t n_nodes, std::vector< double > node_data, std::vector< std::pair< std::string, std::vector< double > > > data_sets)
Stage the node coordinates and nodal values of one finite-element frame.
void map(const std::string &name, const COORD &coordinates, T *data)
Definition hdf5_output.hh:170
void flush(const double time)
std::list< std::string > written_scalars
Definition hdf5_output.hh:340
void close_file()
void open_file()
FrameTimings take_frame_timings()
Definition hdf5_output.hh:281
void run_staged_frame(double time)
Execute and clear whatever is staged, without the per-frame scalar bookkeeping.
void scalar(const std::string &name, const T value)
Add a value to the output.
Definition hdf5_output.hh:91
void map(const std::string &name, const COORD &coordinates)
Definition hdf5_output.hh:140
HDF5Output(const std::string top_folder, const std::string output_name, const ConfigTree &config)
Definition hdf5_output.hh:55
static void write_series_record(DiFfRG::hdf5::Group &group, const int series_number)
Definition hdf5_output.hh:63
std::list< std::string > initial_scalars
Definition hdf5_output.hh:349
std::vector< std::pair< std::string, size_t > > written_map_series
Definition hdf5_output.hh:345
void drain()
void scalar(const std::string &name, const char *value)
Definition hdf5_output.hh:136
HDF5Output(const std::string top_folder, const std::string output_name, const std::string &configuration_json="{}")
Construct a new Csv Output object.
~HDF5Output()
std::map< std::string, std::string > coord_identifiers
Definition hdf5_output.hh:347
void write_at(hsize_t offset, const T &value)
Definition dataset.hh:61
static Dataspace simple_unlimited(const Dims &dims)
Definition dataspace.hh:65
Definition file.hh:13
Definition group.hh:16
Dataset open_dataset(const std::string &name)
Definition group.hh:71
bool has_dataset(const std::string &name) const
Definition group.hh:42
Dataset create_chunked_dataset(const std::string &name, const Datatype &type, const Dataspace &space, const Dims &chunk)
Definition group.hh:55
Dataset create_dataset(const std::string &name, const Datatype &type, const Dataspace &space)
Definition group.hh:46
Definition coordinates.hh:22
Datatype type_of()
Convenience factory — type_of<T>() returns the HDF5 datatype for T.
Definition datatype.hh:56
Definition complex_math.hh:10
void write_config_tree(DiFfRG::hdf5::Group &group, const json::value &value)
Mirror a JSON configuration value into group as a browsable tree: one subgroup per object,...
Definition output_settings.hh:15
Wall-clock cost of producing one output frame, split by where the time went.
Definition output_timings.hh:33
Everything one output frame will write to one file, and nothing else.
Definition hdf5_frame.hh:66
Definition hdf5_output.hh:327
Generated by