TRIQS/triqs_ctint 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
params.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 "./params.hpp"
7
8namespace triqs_ctint {
9
10 void h5_write(h5::group h5group, std::string subgroup_name, constr_params_t const &cp) {
11 auto grp = h5group.create_group(subgroup_name);
12 h5_write(grp, "n_tau", cp.n_tau);
13 h5_write(grp, "dlr_wmax", cp.dlr_wmax);
14 h5_write(grp, "dlr_eps", cp.dlr_eps);
15 h5_write(grp, "beta", cp.beta);
16 h5_write(grp, "gf_struct", cp.gf_struct);
17 h5_write(grp, "use_D", cp.use_D);
18 h5_write(grp, "use_Jperp", cp.use_Jperp);
19 h5_write(grp, "n_tau_dynamical_interactions", cp.n_tau_dynamical_interactions);
20 }
21
22 void h5_read(h5::group h5group, std::string subgroup_name, constr_params_t &cp) {
23 auto grp = h5group.open_group(subgroup_name);
24 h5_read(grp, "n_tau", cp.n_tau);
25 h5::try_read(grp, "dlr_wmax", cp.dlr_wmax);
26 h5::try_read(grp, "dlr_eps", cp.dlr_eps);
27 h5_read(grp, "beta", cp.beta);
28 h5_read_gf_struct(grp, "gf_struct", cp.gf_struct);
29 h5_read(grp, "use_D", cp.use_D);
30 h5_read(grp, "use_Jperp", cp.use_Jperp);
31 h5_read(grp, "n_tau_dynamical_interactions", cp.n_tau_dynamical_interactions);
32 }
33
34 void h5_write(h5::group h5group, std::string subgroup_name, solve_params_t const &sp) {
35 auto grp = h5group.create_group(subgroup_name);
36 h5_write(grp, "h_int", sp.h_int);
37 h5_write(grp, "n_s", sp.n_s);
38 h5_write(grp, "alpha", sp.alpha);
39 h5_write(grp, "n_cycles", sp.n_cycles);
40 h5_write(grp, "length_cycle", sp.length_cycle);
41 h5_write(grp, "n_warmup_cycles", sp.n_warmup_cycles);
42 h5_write(grp, "random_seed", sp.random_seed);
43 h5_write(grp, "random_name", sp.random_name);
44 h5_write(grp, "use_double_insertion", sp.use_double_insertion);
45 h5_write(grp, "insertion_types", sp.insertion_types);
46 h5_write(grp, "use_auxiliary_spin_flip", sp.use_auxiliary_spin_flip);
47 h5_write(grp, "max_time", sp.max_time);
48 h5_write(grp, "verbosity", sp.verbosity);
49 h5_write(grp, "rethrow_exception", sp.rethrow_exception);
50 h5_write(grp, "measure_average_sign", sp.measure_average_sign);
51 h5_write(grp, "measure_average_k", sp.measure_average_k);
52 h5_write(grp, "measure_auto_corr_time", sp.measure_auto_corr_time);
53 h5_write(grp, "measure_histogram", sp.measure_histogram);
54 h5_write(grp, "measure_density", sp.measure_density);
55 h5_write(grp, "measure_M_tau", sp.measure_M_tau);
56 h5_write(grp, "measure_M_iw", sp.measure_M_iw);
57 h5_write(grp, "measure_M4_iw", sp.measure_M4_iw);
58 h5_write(grp, "n_iw_M4", sp.n_iw_M4);
59 h5_write(grp, "measure_M3pp_iw", sp.measure_M3pp_iw);
60 h5_write(grp, "measure_M3ph_iw", sp.measure_M3ph_iw);
61 h5_write(grp, "n_iw_M3", sp.n_iw_M3);
62 h5_write(grp, "n_iW_M3", sp.n_iW_M3);
63 h5_write(grp, "measure_M3pp_tau", sp.measure_M3pp_tau);
64 h5_write(grp, "measure_M3ph_tau", sp.measure_M3ph_tau);
65 h5_write(grp, "n_tau_M3", sp.n_tau_M3);
66 h5_write(grp, "measure_chi2pp_tau", sp.measure_chi2pp_tau);
67 h5_write(grp, "measure_chi2ph_tau", sp.measure_chi2ph_tau);
68 h5_write(grp, "n_tau_chi2", sp.n_tau_chi2);
69 h5_write(grp, "n_iw_chi2", sp.n_iw_chi2);
70 h5_write(grp, "measure_chiAB_tau", sp.measure_chiAB_tau);
71 h5_write(grp, "chi_A_vec", sp.chi_A_vec);
72 h5_write(grp, "chi_B_vec", sp.chi_B_vec);
73 h5_write(grp, "nfft_buf_size", sp.nfft_buf_size);
74 h5_write(grp, "nfft_tol", sp.nfft_tol);
75 h5_write(grp, "post_process", sp.post_process);
76 h5_write(grp, "det_init_size", sp.det_init_size);
77 h5_write(grp, "det_n_operations_before_check", sp.det_n_operations_before_check);
78 h5_write(grp, "det_precision_warning", sp.det_precision_warning);
79 h5_write(grp, "det_precision_error", sp.det_precision_error);
80 h5_write(grp, "det_singular_threshold", sp.det_singular_threshold);
81 }
82
83 void h5_read(h5::group h5group, std::string subgroup_name, solve_params_t &sp) {
84 auto grp = h5group.open_group(subgroup_name);
85 // Take care! Do not read random_seed and verbosity as they should be different based on mpi rank
86 h5_read(grp, "h_int", sp.h_int);
87 h5_read(grp, "n_s", sp.n_s);
88 h5_read(grp, "alpha", sp.alpha);
89 h5_read(grp, "n_cycles", sp.n_cycles);
90 h5_read(grp, "length_cycle", sp.length_cycle);
91 h5_read(grp, "n_warmup_cycles", sp.n_warmup_cycles);
92 h5_read(grp, "random_name", sp.random_name);
93 h5_read(grp, "use_double_insertion", sp.use_double_insertion);
94 h5::try_read(grp, "insertion_types", sp.insertion_types);
95 h5::try_read(grp, "use_auxiliary_spin_flip", sp.use_auxiliary_spin_flip);
96 h5_read(grp, "max_time", sp.max_time);
97 h5_read(grp, "measure_average_sign", sp.measure_average_sign);
98 h5_read(grp, "measure_average_k", sp.measure_average_k);
99 h5_read(grp, "measure_auto_corr_time", sp.measure_auto_corr_time);
100 h5_read(grp, "measure_histogram", sp.measure_histogram);
101 h5::try_read(grp, "measure_density", sp.measure_density);
102 h5_read(grp, "measure_M_tau", sp.measure_M_tau);
103 h5_read(grp, "measure_M_iw", sp.measure_M_iw);
104 h5_read(grp, "measure_M4_iw", sp.measure_M4_iw);
105 h5_read(grp, "n_iw_M4", sp.n_iw_M4);
106 h5_read(grp, "measure_M3pp_iw", sp.measure_M3pp_iw);
107 h5_read(grp, "measure_M3ph_iw", sp.measure_M3ph_iw);
108 h5_read(grp, "n_iw_M3", sp.n_iw_M3);
109 h5_read(grp, "n_iW_M3", sp.n_iW_M3);
110 h5_read(grp, "measure_M3pp_tau", sp.measure_M3pp_tau);
111 h5_read(grp, "measure_M3ph_tau", sp.measure_M3ph_tau);
112 h5_read(grp, "n_tau_M3", sp.n_tau_M3);
113 h5_read(grp, "measure_chi2pp_tau", sp.measure_chi2pp_tau);
114 h5_read(grp, "measure_chi2ph_tau", sp.measure_chi2ph_tau);
115 h5_read(grp, "n_tau_chi2", sp.n_tau_chi2);
116 h5_read(grp, "n_iw_chi2", sp.n_iw_chi2);
117 h5_read(grp, "measure_chiAB_tau", sp.measure_chiAB_tau);
118 h5_read(grp, "chi_A_vec", sp.chi_A_vec);
119 h5_read(grp, "chi_B_vec", sp.chi_B_vec);
120 h5_read(grp, "nfft_buf_size", sp.nfft_buf_size);
121 h5::try_read(grp, "nfft_tol", sp.nfft_tol);
122 h5_read(grp, "post_process", sp.post_process);
123 h5::try_read(grp, "det_init_size", sp.det_init_size);
124 h5::try_read(grp, "det_n_operations_before_check", sp.det_n_operations_before_check);
125 h5::try_read(grp, "det_precision_warning", sp.det_precision_warning);
126 h5::try_read(grp, "det_precision_error", sp.det_precision_error);
127 h5::try_read(grp, "det_singular_threshold", sp.det_singular_threshold);
128 }
129
130} // namespace triqs_ctint
Parameters used for constructing the solver class.
Definition params.hpp:13
double dlr_eps
DLR error tolerance for the single-particle quantities.
Definition params.hpp:22
friend void h5_write(h5::group h5group, std::string subgroup_name, constr_params_t const &cp)
Write constr_params_t to hdf5.
Definition params.cpp:10
int n_tau_dynamical_interactions
Number of imaginary-time points for and .
Definition params.hpp:37
int n_tau
Number of imaginary-time points for the single-particle quantities.
Definition params.hpp:16
bool use_Jperp
Use a dynamic spin-spin interaction?
Definition params.hpp:34
double beta
Inverse temperature .
Definition params.hpp:25
gf_struct_t gf_struct
Structure of the Green's function (names and sizes of blocks).
Definition params.hpp:28
friend void h5_read(h5::group h5group, std::string subgroup_name, constr_params_t &cp)
Read constr_params_t from hdf5.
Definition params.cpp:22
bool use_D
Use a dynamic density-density interaction?
Definition params.hpp:31
double dlr_wmax
DLR bandwidth cutoff for the single-particle quantities.
Definition params.hpp:19
Parameters passed to the solve method of the solver class.
Definition params.hpp:57
bool rethrow_exception
Catch exceptions on the nodes and rethrow them on rank 0?
Definition params.hpp:106
int n_iw_chi2
Number of positive Matsubara frequencies in .
Definition params.hpp:169
int n_tau_chi2
Number of imaginary-time points in .
Definition params.hpp:167
std::vector< many_body_operator > chi_A_vec
List of all operators .
Definition params.hpp:174
std::string random_name
Name of the random number generator.
Definition params.hpp:85
bool measure_density
Measure the density by operator insertion?
Definition params.hpp:126
friend void h5_read(h5::group h5group, std::string subgroup_name, solve_params_t &sp)
Read solve_params_t from hdf5.
Definition params.cpp:83
int n_iw_M3
Number of positive fermionic Matsubara frequencies in .
Definition params.hpp:150
bool measure_chiAB_tau
Measure by insertion?
Definition params.hpp:172
bool measure_M_tau
Measure ?
Definition params.hpp:129
double det_precision_error
Threshold for determinant precision errors.
Definition params.hpp:197
friend void h5_write(h5::group h5group, std::string subgroup_name, solve_params_t const &sp)
Write solve_params_t to hdf5.
Definition params.cpp:34
int n_tau_M3
Number of imaginary-time points in .
Definition params.hpp:160
bool measure_chi2ph_tau
Measure by insertion?
Definition params.hpp:165
int length_cycle
Length of a single QMC cycle.
Definition params.hpp:76
int det_init_size
The maximum size of the determinant matrix before a resize.
Definition params.hpp:188
bool post_process
Perform post-processing?
Definition params.hpp:185
bool use_auxiliary_spin_flip
Use auxiliary spin-flip insertion (requires )?
Definition params.hpp:94
double nfft_tol
Tolerance for the NFFT transform.
Definition params.hpp:182
double det_singular_threshold
Bound for the determinant matrix being singular (if , checks for subnormal numbers instead).
Definition params.hpp:200
double det_precision_warning
Threshold for determinant precision warnings.
Definition params.hpp:194
bool measure_M_iw
Measure using NFFT?
Definition params.hpp:132
int max_time
Maximum runtime in seconds, use -1 to set infinite.
Definition params.hpp:97
bool measure_auto_corr_time
Measure the auto-correlation time?
Definition params.hpp:120
int n_s
Number of auxiliary spins.
Definition params.hpp:67
bool measure_histogram
Measure the perturbation-order distribution?
Definition params.hpp:123
std::vector< int > insertion_types
Types of insertions to use.
Definition params.hpp:91
int n_cycles
Number of QMC cycles.
Definition params.hpp:73
bool measure_chi2pp_tau
Measure by insertion?
Definition params.hpp:163
bool measure_M3ph_tau
Measure ?
Definition params.hpp:156
int verbosity
Verbosity level.
Definition params.hpp:103
int n_iW_M3
Number of positive bosonic Matsubara frequencies in .
Definition params.hpp:152
bool measure_M4_iw
Measure using NFFT?
Definition params.hpp:135
bool measure_M3ph_iw
Measure ?
Definition params.hpp:148
alpha_t alpha
The tensor used in the determinantal expansion.
Definition params.hpp:70
bool measure_average_k
Measure the average perturbation order?
Definition params.hpp:117
many_body_operator h_int
Interacting part of the local Hamiltonian.
Definition params.hpp:62
int nfft_buf_size
Size of the NFFT buffer.
Definition params.hpp:179
int n_iw_M4
Number of positive fermionic Matsubara frequencies in .
Definition params.hpp:143
std::vector< many_body_operator > chi_B_vec
List of all operators .
Definition params.hpp:176
int n_warmup_cycles
Number of cycles for thermalization.
Definition params.hpp:79
bool measure_M3pp_iw
Measure ?
Definition params.hpp:146
int det_n_operations_before_check
Maximum number of operations before testing the accuracy of and .
Definition params.hpp:191
bool measure_M3pp_tau
Measure ?
Definition params.hpp:154
bool use_double_insertion
Use double insertion?
Definition params.hpp:88
int random_seed
Seed for the random number generator.
Definition params.hpp:82
bool measure_average_sign
Measure the Monte-Carlo sign?
Definition params.hpp:114