7#include "densities.hpp"
8#include <itertools/itertools.hpp>
9#include <fmt/ostream.h>
12namespace triqs_ctseg::measures {
14 densities::densities(params_t
const &, work_data_t
const &wdata, configuration_t
const &config, results_t &results)
15 : wdata{wdata}, config{config}, results{results} {
17 n = nda::zeros<double>(config.n_color());
22 void densities::accumulate(
double s) {
25 for (
auto const &[c, seglist] : itertools::enumerate(config.seglists)) {
27 for (
auto &seg : seglist) sum += double(seg.length());
34 void densities::collect_results(mpi::communicator
const &c) {
35 Z = mpi::all_reduce(Z, c);
36 n = mpi::all_reduce(n, c);
37 n /= (Z * tau_t::beta());
39 std::map<std::string, nda::array<double, 1>> densities;
40 for (
long offset = 0;
auto [bl_name, bl_size] : wdata.gf_struct) {
41 densities[bl_name] = n[range(offset, offset + bl_size)];
45 SPDLOG_INFO(
"Densities:");
46 for (
auto &[bl, dens] : densities) SPDLOG_INFO(
" {}: {}", bl, fmt::streamed(dens));
49 results.densities = std::move(densities);