6#include "./density.hpp"
8using namespace triqs::utility;
10namespace triqs_ctint::measures {
12 density::density(params_t
const ¶ms_, qmc_config_t &qmc_config_, container_set *results) : params(params_), qmc_config(qmc_config_) {
14 results->density = block_matrix_t{};
17 for (
auto &[bl, bl_size] : params.gf_struct) {
18 results->density->push_back(zeros<M_tau_scalar_t>(make_shape(bl_size, bl_size)));
19 density_.push_back(results->density->back());
28 for (
int bl : range(params.n_blocks())) {
30 auto &det = qmc_config.dets[bl];
31 auto &density = density_[bl];
32 int bl_size = density.shape()[0];
34 for (
int a : range(bl_size))
35 for (
int b : range(bl_size)) {
40 density(a, b) += sign * det.try_insert(0, 0, c_b, cdag_a);
41 det.reject_last_try();
48 Z = mpi::all_reduce(Z, comm);
49 for (
auto &dens_mat : density_) {
50 dens_mat = mpi::all_reduce(dens_mat, comm);
51 dens_mat = dens_mat / Z;
void collect_results(mpi::communicator const &comm)
Collect results and normalize.
void accumulate(mc_weight_t sign)
Accumulate M_tau using binning.
static constexpr tau_t get_zero()
Return \tau = 0.
static constexpr tau_t get_zero_plus()
Return \tau = 0^{+} = 0 + \delta.