TRIQS/triqs_ctint unstable
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 &, container_set *results)
11 : average_sign_(results->average_sign),
12 average_sign_error_(results->average_sign_error),
13 nmeasures(results->nmeasures),
14 sign_bins_(dcomplex{0.0}, 128, 1) {
15 average_sign_ = 0.0;
16 nmeasures = 0;
17 }
18
19 void average_sign::accumulate(mc_weight_t sign) {
20 average_sign_ += sign;
21 sign_bins_ << dcomplex(sign);
22 ++count;
23 }
24
25 void average_sign::collect_results(mpi::communicator const &comm) {
26 average_sign_ = mpi::all_reduce(average_sign_, comm);
27 count = mpi::all_reduce(count, comm);
28 average_sign_ = average_sign_ / count;
29 nmeasures = count;
30
31 auto [m, err, tau] = sign_bins_.mean_error_and_tau(comm);
32 average_sign_error_ = std::abs(err);
33 }
34
35 std::string average_sign::report() const {
36 std::ostringstream os;
37 os << "Average sign: " << average_sign_ / count;
38 return os.str();
39 }
40
41} // 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.