7#include "./Sperp_tau.hpp"
10namespace triqs_ctseg::measures {
12 Sperp_tau::Sperp_tau(params_t
const &p, work_data_t
const &wdata, configuration_t
const &config, results_t &results)
13 : wdata{wdata}, config{config}, results{results} {
17 n_color = config.n_color();
19 ss_tau = gf<imtime>({beta, Boson, p.n_tau_chi2}, {1, 1});
26 void Sperp_tau::accumulate(
double s) {
28 LOG(
"\n =================== MEASURE < S_x S_x > (tau) ================ \n");
32 for (
auto const &[k, line] : itertools::enumerate(config.Jperp_list)) {
33 auto dtau1 = double(line.tau_Splus - line.tau_Sminus);
34 auto dtau2 = double(line.tau_Sminus - line.tau_Splus);
35 ss_tau[closest_mesh_pt(dtau1)] += 0.5 / (real(wdata.Jperp(dtau1)(0, 0)));
36 ss_tau[closest_mesh_pt(dtau2)] += 0.5 / (real(wdata.Jperp(dtau2)(0, 0)));
42 void Sperp_tau::collect_results(mpi::communicator
const &c) {
44 Z = mpi::all_reduce(Z, c);
46 ss_tau = mpi::all_reduce(ss_tau, c);
47 ss_tau = ss_tau / (-beta * Z * ss_tau.mesh().delta());
51 ss_tau[ss_tau.mesh().size() - 1] *= 2;
54 results.Sperp_tau = std::move(ss_tau);