TRIQS/triqs_ctint 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
container_set.hpp
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#pragma once
7#include "./types.hpp"
8#include <optional>
9
10namespace triqs_ctint {
11
14
15 //============ Containers for measurements
16
18 mc_weight_t average_sign;
19
21 uint64_t nmeasures;
22
24 double average_k;
25
27 std::optional<double> average_sign_error;
28
30 std::optional<double> average_k_error;
31
34
37
40
42 std::optional<std::vector<double>> histogram;
43
45 std::optional<block_matrix_t> density;
46
48 std::optional<block_gf<imtime, M_tau_target_t>> M_tau;
49
51 std::optional<block_matrix_t> M_hartree;
52
54 std::optional<g_dlr_iw_t> M_iw_nfft;
55
57 std::optional<chi4_iw_t> M4_iw;
58
60 std::optional<chi4_iw_t> M4pp_iw;
61
63 std::optional<chi4_iw_t> M4ph_iw;
64
66 std::optional<chi3_iw_t> M3pp_iw_nfft;
67
69 std::optional<chi3_iw_t> M3ph_iw_nfft;
70
72 std::optional<chi3_tau_t> M3pp_tau;
73
75 std::optional<chi3_tau_t> M3ph_tau;
76
78 std::optional<chi3_tau_t> M3xph_tau;
79
81 std::optional<chi2_tau_t> M3pp_delta;
82
84 std::optional<chi2_tau_t> M3ph_delta;
85
87 std::optional<chi2_tau_t> M3xph_delta;
88
90 std::optional<chi2_tau_t> chi2pp_tau;
91
93 std::optional<chi2_tau_t> chi2ph_tau;
94
96 std::optional<gf<imtime>> chiAB_tau;
97
98 //============ Containers dependent on measured quantities
99
101 std::optional<g_iw_t> M_iw;
102
104 g_iw_t G_iw;
105
108
110 std::optional<block_matrix_t> Sigma_hartree;
111
113 std::optional<chi3_iw_t> M3pp_iw;
114
116 std::optional<chi3_iw_t> M3ph_iw;
117
119 std::optional<chi3_iw_t> M3xph_iw;
120
122 std::optional<chi4_iw_t> F_iw;
123
125 std::optional<chi4_iw_t> Fpp_iw;
126
128 std::optional<chi4_iw_t> Fph_iw;
129
131 std::optional<chi4_iw_t> G2_conn_iw;
132
134 std::optional<chi4_iw_t> G2pp_conn_iw;
135
137 std::optional<chi4_iw_t> G2ph_conn_iw;
138
140 std::optional<chi4_iw_t> G2_iw;
141
143 std::optional<chi4_iw_t> G2pp_iw;
144
146 std::optional<chi4_iw_t> G2ph_iw;
147
149 std::optional<chi2_iw_t> chi2pp_iw;
150
152 std::optional<chi2_iw_t> chi2ph_iw;
153
155 std::optional<chi2_tau_t> chi2pp_conn_tau_from_M3;
156
158 std::optional<chi2_tau_t> chi2ph_conn_tau_from_M3;
159
161 std::optional<chi2_tau_t> chi2xph_conn_tau_from_M3;
162
164 std::optional<chi2_tau_t> chi2pp_tau_from_M3;
165
167 std::optional<chi2_tau_t> chi2ph_tau_from_M3;
168
170 std::optional<chi2_tau_t> chi2xph_tau_from_M3;
171
173 std::optional<chi2_iw_t> chi2pp_iw_from_M3;
174
176 std::optional<chi2_iw_t> chi2ph_iw_from_M3;
177
179 std::optional<chi2_iw_t> chi2xph_iw_from_M3;
180
182 std::optional<gf<imfreq>> chiAB_iw;
183
185 std::optional<chi3_iw_t> chi3pp_iw;
186
188 std::optional<chi3_iw_t> chi3ph_iw;
189
191 std::optional<chi3_iw_t> chi3xph_iw;
192
194 std::optional<chi3_iw_t> chi3pp_iw_nfft;
195
197 std::optional<chi3_iw_t> chi3ph_iw_nfft;
198
200 friend void h5_write(h5::group h5group, std::string subgroup_name, container_set const &c) {
201 auto grp = h5group.create_group(subgroup_name);
202 h5_write(grp, "average_sign", c.average_sign);
203 h5_write(grp, "nmeasures", c.nmeasures);
204 h5_write(grp, "average_k", c.average_k);
205 h5_write(grp, "average_sign_error", c.average_sign_error);
206 h5_write(grp, "average_k_error", c.average_k_error);
207 h5_write(grp, "auto_corr_time", c.auto_corr_time);
208 h5_write(grp, "warmup_time", c.warmup_time);
209 h5_write(grp, "accumulation_time", c.accumulation_time);
210 h5_write(grp, "histogram", c.histogram);
211 h5_write(grp, "density", c.density);
212 h5_write(grp, "M_tau", c.M_tau);
213 h5_write(grp, "M_hartree", c.M_hartree);
214 h5_write(grp, "M_iw_nfft", c.M_iw_nfft);
215 h5_write(grp, "M4_iw", c.M4_iw);
216 h5_write(grp, "M4pp_iw", c.M4pp_iw);
217 h5_write(grp, "M4ph_iw", c.M4ph_iw);
218 h5_write(grp, "M3pp_tau", c.M3pp_tau);
219 h5_write(grp, "M3ph_tau", c.M3ph_tau);
220 h5_write(grp, "M3xph_tau", c.M3xph_tau);
221 h5_write(grp, "M3pp_delta", c.M3pp_delta);
222 h5_write(grp, "M3ph_delta", c.M3ph_delta);
223 h5_write(grp, "M3xph_delta", c.M3xph_delta);
224 h5_write(grp, "M3pp_iw_nfft", c.M3pp_iw_nfft);
225 h5_write(grp, "M3ph_iw_nfft", c.M3ph_iw_nfft);
226 h5_write(grp, "chi2pp_tau", c.chi2pp_tau);
227 h5_write(grp, "chi2ph_tau", c.chi2ph_tau);
228 h5_write(grp, "chiAB_tau", c.chiAB_tau);
229 h5_write(grp, "M_iw", c.M_iw);
230 h5_write(grp, "G_iw", c.G_iw);
231 h5_write(grp, "Sigma_dyn_iw", c.Sigma_dyn_iw);
232 h5_write(grp, "Sigma_hartree", c.Sigma_hartree);
233 h5_write(grp, "M3pp_iw", c.M3pp_iw);
234 h5_write(grp, "M3ph_iw", c.M3ph_iw);
235 h5_write(grp, "M3xph_iw", c.M3xph_iw);
236 h5_write(grp, "F_iw", c.F_iw);
237 h5_write(grp, "Fpp_iw", c.Fpp_iw);
238 h5_write(grp, "Fph_iw", c.Fph_iw);
239 h5_write(grp, "G2_iw", c.G2_iw);
240 h5_write(grp, "G2pp_iw", c.G2pp_iw);
241 h5_write(grp, "G2ph_iw", c.G2ph_iw);
242 h5_write(grp, "G2_conn_iw", c.G2_conn_iw);
243 h5_write(grp, "G2pp_conn_iw", c.G2pp_conn_iw);
244 h5_write(grp, "G2ph_conn_iw", c.G2ph_conn_iw);
245 h5_write(grp, "chi2pp_iw", c.chi2pp_iw);
246 h5_write(grp, "chi2ph_iw", c.chi2ph_iw);
247 h5_write(grp, "chi2pp_conn_tau_from_M3", c.chi2pp_conn_tau_from_M3);
248 h5_write(grp, "chi2ph_conn_tau_from_M3", c.chi2ph_conn_tau_from_M3);
249 h5_write(grp, "chi2xph_conn_tau_from_M3", c.chi2xph_conn_tau_from_M3);
250 h5_write(grp, "chi2pp_tau_from_M3", c.chi2pp_tau_from_M3);
251 h5_write(grp, "chi2ph_tau_from_M3", c.chi2ph_tau_from_M3);
252 h5_write(grp, "chi2xph_tau_from_M3", c.chi2xph_tau_from_M3);
253 h5_write(grp, "chi2pp_iw_from_M3", c.chi2pp_iw_from_M3);
254 h5_write(grp, "chi2ph_iw_from_M3", c.chi2ph_iw_from_M3);
255 h5_write(grp, "chi2xph_iw_from_M3", c.chi2xph_iw_from_M3);
256 h5_write(grp, "chiAB_iw", c.chiAB_iw);
257 h5_write(grp, "chi3pp_iw", c.chi3pp_iw);
258 h5_write(grp, "chi3ph_iw", c.chi3ph_iw);
259 h5_write(grp, "chi3xph_iw", c.chi3xph_iw);
260 h5_write(grp, "chi3pp_iw_nfft", c.chi3pp_iw_nfft);
261 h5_write(grp, "chi3ph_iw_nfft", c.chi3ph_iw_nfft);
262 }
263
265 friend void h5_read(h5::group h5group, std::string subgroup_name, container_set &c) {
266 auto grp = h5group.open_group(subgroup_name);
267 h5_read(grp, "average_sign", c.average_sign);
268 h5::try_read(grp, "nmeasures", c.nmeasures);
269 h5::try_read(grp, "average_k", c.average_k);
270 h5::try_read(grp, "average_sign_error", c.average_sign_error);
271 h5::try_read(grp, "average_k_error", c.average_k_error);
272 h5::try_read(grp, "auto_corr_time", c.auto_corr_time);
273 h5::try_read(grp, "warmup_time", c.warmup_time);
274 h5::try_read(grp, "accumulation_time", c.accumulation_time);
275 h5_read(grp, "histogram", c.histogram);
276 h5::try_read(grp, "density", c.density);
277 h5_read(grp, "M_tau", c.M_tau);
278 h5_read(grp, "M_hartree", c.M_hartree);
279 h5_read(grp, "M_iw_nfft", c.M_iw_nfft);
280 h5_read(grp, "M4_iw", c.M4_iw);
281 h5_read(grp, "M4pp_iw", c.M4pp_iw);
282 h5_read(grp, "M4ph_iw", c.M4ph_iw);
283 h5_read(grp, "M3pp_tau", c.M3pp_tau);
284 h5_read(grp, "M3ph_tau", c.M3ph_tau);
285 h5::try_read(grp, "M3xph_tau", c.M3xph_tau);
286 h5_read(grp, "M3pp_delta", c.M3pp_delta);
287 h5_read(grp, "M3ph_delta", c.M3ph_delta);
288 h5::try_read(grp, "M3xph_delta", c.M3xph_delta);
289 h5_read(grp, "M3pp_iw_nfft", c.M3pp_iw_nfft);
290 h5_read(grp, "M3ph_iw_nfft", c.M3ph_iw_nfft);
291 h5_read(grp, "chi2pp_tau", c.chi2pp_tau);
292 h5_read(grp, "chi2ph_tau", c.chi2ph_tau);
293 h5_read(grp, "chiAB_tau", c.chiAB_tau);
294 h5_read(grp, "M_iw", c.M_iw);
295 h5_read(grp, "G_iw", c.G_iw);
296 h5::try_read(grp, "Sigma_dyn_iw", c.Sigma_dyn_iw);
297 h5::try_read(grp, "Sigma_hartree", c.Sigma_hartree);
298 h5_read(grp, "M3pp_iw", c.M3pp_iw);
299 h5_read(grp, "M3ph_iw", c.M3ph_iw);
300 h5::try_read(grp, "M3xph_iw", c.M3xph_iw);
301 h5_read(grp, "F_iw", c.F_iw);
302 h5_read(grp, "Fpp_iw", c.Fpp_iw);
303 h5_read(grp, "Fph_iw", c.Fph_iw);
304 h5_read(grp, "G2_iw", c.G2_iw);
305 h5_read(grp, "G2pp_iw", c.G2pp_iw);
306 h5_read(grp, "G2ph_iw", c.G2ph_iw);
307 h5_read(grp, "G2_conn_iw", c.G2_conn_iw);
308 h5_read(grp, "G2pp_conn_iw", c.G2pp_conn_iw);
309 h5_read(grp, "G2ph_conn_iw", c.G2ph_conn_iw);
310 h5_read(grp, "chi2pp_iw", c.chi2pp_iw);
311 h5_read(grp, "chi2ph_iw", c.chi2ph_iw);
312 h5_read(grp, "chi2pp_conn_tau_from_M3", c.chi2pp_conn_tau_from_M3);
313 h5_read(grp, "chi2ph_conn_tau_from_M3", c.chi2ph_conn_tau_from_M3);
314 h5::try_read(grp, "chi2xph_conn_tau_from_M3", c.chi2xph_conn_tau_from_M3);
315 h5_read(grp, "chi2pp_tau_from_M3", c.chi2pp_tau_from_M3);
316 h5_read(grp, "chi2ph_tau_from_M3", c.chi2ph_tau_from_M3);
317 h5::try_read(grp, "chi2xph_tau_from_M3", c.chi2xph_tau_from_M3);
318 h5_read(grp, "chi2pp_iw_from_M3", c.chi2pp_iw_from_M3);
319 h5_read(grp, "chi2ph_iw_from_M3", c.chi2ph_iw_from_M3);
320 h5::try_read(grp, "chi2xph_iw_from_M3", c.chi2xph_iw_from_M3);
321 // For backward compatibility we keep these additional reads
322 if (!c.chi2pp_conn_tau_from_M3) h5_read(grp, "M2pp_tau", c.chi2pp_conn_tau_from_M3);
323 if (!c.chi2ph_conn_tau_from_M3) h5_read(grp, "M2ph_tau", c.chi2ph_conn_tau_from_M3);
324 if (!c.chi2pp_tau_from_M3) h5_read(grp, "chi2pp_new_tau", c.chi2pp_tau_from_M3);
325 if (!c.chi2ph_tau_from_M3) h5_read(grp, "chi2ph_new_tau", c.chi2ph_tau_from_M3);
326 if (!c.chi2pp_iw_from_M3) h5_read(grp, "chi2pp_new_iw", c.chi2pp_iw_from_M3);
327 if (!c.chi2ph_iw_from_M3) h5_read(grp, "chi2ph_new_iw", c.chi2ph_iw_from_M3);
328 h5_read(grp, "chiAB_iw", c.chiAB_iw);
329 h5_read(grp, "chi3pp_iw", c.chi3pp_iw);
330 h5_read(grp, "chi3ph_iw", c.chi3ph_iw);
331 h5_read(grp, "chi3xph_iw", c.chi3xph_iw);
332 h5_read(grp, "chi3pp_iw_nfft", c.chi3pp_iw_nfft);
333 h5_read(grp, "chi3ph_iw_nfft", c.chi3ph_iw_nfft);
334 }
335 };
336
337} // namespace triqs_ctint
Container for all (optional) quantities measured and post-processed by the solver.
std::optional< chi4_iw_t > Fpp_iw
The two-particle vertex function (particle-particle channel).
std::optional< chi4_iw_t > F_iw
The two-particle vertex function in purely fermionic notation.
std::optional< gf< imfreq > > chiAB_iw
Correlation function in Matsubara frequencies.
std::optional< chi3_tau_t > M3xph_tau
Building block (particle-hole-cross channel) for the fermion-boson vertex in imaginary time.
std::optional< g_iw_t > M_iw
Fourier transform of .
std::optional< chi3_iw_t > M3ph_iw
Building block (particle-hole channel) for the fermion-boson vertex in Matsubara frequencies.
std::optional< chi3_iw_t > chi3pp_iw
Correlator (particle-particle channel) in Matsubara frequencies.
uint64_t nmeasures
Total number of measurements.
std::optional< chi3_iw_t > chi3xph_iw
Correlator (particle-hole-cross channel) in Matsubara frequencies.
std::optional< chi3_iw_t > M3xph_iw
Building block (particle-hole-cross channel) for the fermion-boson vertex in Matsubara frequencies.
std::optional< chi2_tau_t > chi2ph_conn_tau_from_M3
Connected (particle-hole channel) in imaginary time, obtained from .
double accumulation_time
Accumulation time in seconds.
double average_k
Average perturbation order.
std::optional< chi2_tau_t > chi2pp_tau_from_M3
Correlator (particle-particle channel), obtained from .
std::optional< block_matrix_t > Sigma_hartree
Static (Hartree) part of the self-energy, .
std::optional< chi4_iw_t > M4pp_iw
Building block (particle-particle channel) for the full vertex, measured using NFFT.
std::optional< chi3_tau_t > M3pp_tau
Building block (particle-particle channel) for the fermion-boson vertex in imaginary time.
std::optional< chi2_tau_t > M3xph_delta
Equal-time peak of .
std::optional< chi2_tau_t > M3pp_delta
Equal-time peak of .
std::optional< chi2_tau_t > chi2xph_conn_tau_from_M3
Connected (particle-hole-cross channel) in imaginary time, obtained from .
std::optional< chi2_tau_t > chi2pp_conn_tau_from_M3
Connected (particle-particle channel) in imaginary time, obtained from .
std::optional< chi3_iw_t > chi3ph_iw
Correlator (particle-hole channel) in Matsubara frequencies.
std::optional< chi4_iw_t > G2_iw
The two-particle Green's function .
std::optional< chi2_iw_t > chi2pp_iw_from_M3
Correlator (particle-particle channel), obtained from .
std::optional< std::vector< double > > histogram
Perturbation-order distribution.
std::optional< chi2_iw_t > chi2ph_iw_from_M3
Correlator (particle-hole channel), obtained from .
std::optional< chi2_tau_t > chi2ph_tau_from_M3
Correlator (particle-hole channel), obtained from .
std::optional< chi4_iw_t > M4_iw
Building block for the full vertex, measured in Matsubara frequencies using NFFT.
std::optional< chi2_tau_t > chi2ph_tau
Correlator (particle-hole channel) in imaginary time, obtained by operator insertion.
g_iw_t Sigma_dyn_iw
Dynamic self-energy in Matsubara frequencies (DLR, decays to zero).
std::optional< chi4_iw_t > Fph_iw
The two-particle vertex function (particle-hole channel).
std::optional< chi2_iw_t > chi2ph_iw
Correlator (particle-hole channel) in Matsubara frequencies.
std::optional< chi3_iw_t > M3pp_iw
Building block (particle-particle channel) for the fermion-boson vertex in Matsubara frequencies.
std::optional< gf< imtime > > chiAB_tau
Correlation function in imaginary time.
std::optional< g_dlr_iw_t > M_iw_nfft
Same as , but measured directly in Matsubara frequencies using NFFT on the DLR grid.
std::optional< chi4_iw_t > G2pp_conn_iw
Connected part of the two-particle Green's function (particle-particle channel).
std::optional< block_gf< imtime, M_tau_target_t > > M_tau
Building block for the Green's function in imaginary time .
std::optional< double > average_sign_error
Error bar on the average sign.
std::optional< chi2_tau_t > chi2xph_tau_from_M3
Correlator (particle-hole-cross channel), obtained from .
g_iw_t G_iw
Green's function in Matsubara frequencies.
std::optional< chi2_iw_t > chi2xph_iw_from_M3
Correlator (particle-hole-cross channel), obtained from .
std::optional< chi3_iw_t > M3ph_iw_nfft
Building block (particle-hole channel) for the fermion-boson vertex, measured using NFFT.
std::optional< chi2_iw_t > chi2pp_iw
Correlator (particle-particle channel) in Matsubara frequencies.
std::optional< chi2_tau_t > M3ph_delta
Equal-time peak of .
std::optional< chi4_iw_t > G2ph_conn_iw
Connected part of the two-particle Green's function (particle-hole channel).
std::optional< chi4_iw_t > G2pp_iw
The two-particle Green's function (particle-particle channel).
std::optional< block_matrix_t > density
The density (measured by operator insertion).
std::optional< chi3_tau_t > M3ph_tau
Building block (particle-hole channel) for the fermion-boson vertex in imaginary time.
std::optional< chi2_tau_t > chi2pp_tau
Correlator (particle-particle channel) in imaginary time, obtained by operator insertion.
double warmup_time
Warmup time in seconds.
std::optional< chi3_iw_t > chi3pp_iw_nfft
Correlator (particle-particle channel), obtained from the NFFT measurement.
std::optional< block_matrix_t > M_hartree
Hartree term of .
std::optional< chi4_iw_t > G2ph_iw
The two-particle Green's function (particle-hole channel).
std::optional< chi4_iw_t > G2_conn_iw
Connected part of the two-particle Green's function .
std::optional< double > average_k_error
Error bar on the average perturbation order.
friend void h5_read(h5::group h5group, std::string subgroup_name, container_set &c)
Function that reads all containers from hdf5 file.
mc_weight_t average_sign
Average Monte-Carlo sign.
std::optional< chi3_iw_t > M3pp_iw_nfft
Building block (particle-particle channel) for the fermion-boson vertex, measured using NFFT.
std::optional< chi3_iw_t > chi3ph_iw_nfft
Correlator (particle-hole channel), obtained from the NFFT measurement.
std::optional< chi4_iw_t > M4ph_iw
Building block (particle-hole channel) for the full vertex, measured using NFFT.
friend void h5_write(h5::group h5group, std::string subgroup_name, container_set const &c)
Function that writes all containers to hdf5 file.
double auto_corr_time
Auto-correlation time.