30#include <fmt/format.h>
32#include <mpi/communicator.hpp>
42namespace triqs::mc_tools {
95 if (
has(name))
throw std::runtime_error(fmt::format(
"Error in measure_set: Measure with name {} already exists", name));
96 return measures_.emplace(name,
measure<MCSignType>{std::forward<T>(m), enable_timer, enable_report}).first;
113 [[nodiscard]]
bool has(std::string
const &name)
const {
return measures_.find(name) != measures_.end(); }
119 [[nodiscard]] std::vector<std::string>
names()
const;
127 for (
auto &[name, m] : measures_) m.accumulate(sign);
142 [[nodiscard]] std::string
report()
const;
152 [[nodiscard]] std::string
get_timings(std::string
const &prefix =
"")
const;
157 for (
auto const &[name, m] : measures_) total += m.duration();
162 [[nodiscard]]
static std::string
hdf5_format() {
return "measure_set"; }
174 auto gr = g.create_group(key);
175 h5::write_hdf5_format(gr, ms);
176 for (
auto const &[name, m] : ms.measures_) h5::write(gr, name, m);
189 auto gr = g.open_group(key);
190 h5::assert_hdf5_format(gr, ms);
191 for (
auto &[name, m] : ms.measures_) h5::read(gr, name, m);
199 extern template class measure_set<double>;
200 extern template class measure_set<std::complex<double>>;
Provides type erasure for MC measurements.