TRIQS/triqs_ctseg 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
four_point.hpp
1// Copyright (c) 2024--present, The Simons Foundation
2// Copyright (c) 2024--present, Max Planck Institute for Polymer Research, Mainz, Germany
3// This file is part of TRIQS/ctseg and is licensed under the terms of GPLv3 or later.
4// SPDX-License-Identifier: GPL-3.0-or-later
5// See LICENSE in the root of this distribution for details.
6
7#pragma once
8#include "../configuration.hpp"
9#include "../work_data.hpp"
10#include "../results.hpp"
11
12namespace triqs_ctseg::measures {
13
14 struct four_point {
15
16 work_data_t const &wdata;
17 configuration_t const &config;
18 results_t &results;
19 double beta;
20 bool measure_g2w, measure_g3w;
21 int n_w_bosonic, n_w_fermionic;
22 triqs::mesh::imfreq mesh_bosonic, mesh_fermionic;
23 std::vector<std::string> block_names;
24
25 std::vector<std::vector<gf<prod<imfreq, imfreq>, tensor_valued<4>>>> g2w;
26 block2_gf<prod<imfreq, imfreq>, tensor_valued<4>> g2w_block;
27
28 std::vector<std::vector<gf<prod<imfreq, imfreq, imfreq>, tensor_valued<4>>>> g3w;
29 block2_gf<prod<imfreq, imfreq, imfreq>, tensor_valued<4>> g3w_block;
30
31 double Z = 0;
32
33 four_point(params_t const &params, work_data_t const &wdata, configuration_t const &config, results_t &results);
34
35 void accumulate(double s);
36 void collect_results(mpi::communicator const &c);
37
38 block_gf<prod<imfreq, imfreq>> compute_Mw();
39 std::vector<gf<imfreq, scalar_valued>> compute_nw();
40
41 };
42
43} // namespace triqs_ctseg::measures