/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/data/hdf5_frame.hh Source File#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/data/hdf5_frame.hh Source File
DiFfRG
Discretization Framework for functional Renormalization Group flows
hdf5_frame.hh
Go to the documentation of this file.
1#pragma once
2
3// DiFfRG
5
6#include <hdf5lib/hdf5.hh>
7
8// standard library
9#include <functional>
10#include <map>
11#include <string>
12#include <vector>
13
14namespace DiFfRG
15{
33 {
34 public:
36 explicit HDF5FrameContext(const std::string &path, FrameTimings *timings = nullptr);
38
40 HDF5FrameContext &operator=(const HDF5FrameContext &) = delete;
41
43 DiFfRG::hdf5::Group &group(const std::string &name);
44 DiFfRG::hdf5::Group &root() { return root_group; }
45
46 private:
49 std::map<std::string, DiFfRG::hdf5::Group> open_groups;
51 };
52
58 using HDF5Action = std::function<void(HDF5FrameContext &)>;
59
66 struct HDF5Frame {
67 std::string path;
68 double time = 0.;
69 std::vector<HDF5Action> actions;
70
71 bool empty() const noexcept { return actions.empty(); }
72
74 void run(FrameTimings *timings = nullptr) const;
75 };
76} // namespace DiFfRG
The one place HDF5 identifiers live while a frame is being written.
Definition hdf5_frame.hh:33
std::map< std::string, DiFfRG::hdf5::Group > open_groups
Definition hdf5_frame.hh:49
DiFfRG::hdf5::File h5_file
Definition hdf5_frame.hh:47
DiFfRG::hdf5::Group & group(const std::string &name)
FrameTimings * timings
Definition hdf5_frame.hh:50
DiFfRG::hdf5::Group root_group
Definition hdf5_frame.hh:48
HDF5FrameContext(const std::string &path, FrameTimings *timings=nullptr)
DiFfRG::hdf5::Group & root()
Definition hdf5_frame.hh:44
Definition file.hh:13
Definition group.hh:16
Definition complex_math.hh:10
std::function< void(HDF5FrameContext &)> HDF5Action
Definition hdf5_frame.hh:58
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
bool empty() const noexcept
Definition hdf5_frame.hh:71
std::string path
Definition hdf5_frame.hh:67
double time
Definition hdf5_frame.hh:68
void run(FrameTimings *timings=nullptr) const
std::vector< HDF5Action > actions
Definition hdf5_frame.hh:69