TRIQS/triqs_ctint 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
average_sign.cpp
1// Copyright (c) 2017--present, The Simons Foundation
2// This file is part of TRIQS/ctint and is licensed under the terms of GPLv3 or later.
3// SPDX-License-Identifier: GPL-3.0-or-later
4// See LICENSE in the root of this distribution for details.
5
6#include "./average_sign.hpp"
7
8namespace triqs_ctint::measures {
9
10 average_sign::average_sign(params_t const &, qmc_config_t const &qmc_config_, container_set *results)
11 : average_sign_(results->average_sign),
12 average_sign_error_(results->average_sign_error),
13 nmeasures(results->nmeasures),
14 qmc_config(qmc_config_),
15 sign_bins_(dcomplex{0.0}, 128, 1) {
16 average_sign_ = 0.0;
17 nmeasures = 0;
18 }
19
20 void average_sign::accumulate(mc_weight_t sign) {
21 average_sign_ += sign;
22 sign_bins_ << dcomplex(sign);
23 ++count;
24 }
25
26 void average_sign::collect_results(mpi::communicator const &comm) {
27 average_sign_ = mpi::all_reduce(average_sign_, comm);
28 count = mpi::all_reduce(count, comm);
29 average_sign_ = average_sign_ / count;
30 nmeasures = count;
31
32 auto [m, err, tau] = sign_bins_.mean_error_and_tau(comm);
33 average_sign_error_ = std::abs(err);
34 }
35
36 std::string average_sign::report() const {
37 std::ostringstream os;
38 os << "Average sign: " << average_sign_ / count;
39 return os.str();
40 }
41
42} // namespace triqs_ctint::measures
Measure of the average sign.
std::string report() const
Report the current value representation.
void collect_results(mpi::communicator const &comm)
Reduce and normalize.
void accumulate(mc_weight_t sign)
Accumulate average sign.