TRIQS/triqs_cthyb 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
parameters.hpp
1/*******************************************************************************
2 *
3 * TRIQS: a Toolbox for Research in Interacting Quantum Systems
4 *
5 * Copyright (C) 2017, H. U.R. Strand, M. Ferrero and O. Parcollet
6 *
7 * TRIQS is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later
10 * version.
11 *
12 * TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15 * details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * TRIQS. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ******************************************************************************/
21
22#pragma once
23
24#include <climits>
25
26#include "./config.hpp"
27#include "./types.hpp"
28#include "./configuration.hpp"
29
30namespace triqs_cthyb {
31
32 using namespace triqs::operators;
33 using indices_map_t = std::map<triqs::operators::indices_t, triqs::operators::indices_t>;
34
37
39 double beta;
40
42 gf_struct_t gf_struct;
43
45 int n_iw = 1025;
46
48 int n_tau = 10001;
49
51 int n_l = 50;
52
54 bool delta_interface = false;
55
56 bool operator==(constr_parameters_t const &) const = default;
57
59 friend void h5_write(h5::group h5group, std::string subgroup_name, constr_parameters_t const &sp);
60
62 friend void h5_read(h5::group h5group, std::string subgroup_name, constr_parameters_t &sp);
63 };
64
67
69 many_body_op_t h_int;
70
73
75 std::string partition_method = "autopartition";
76
78 std::vector<many_body_op_t> quantum_numbers = {};
79
81 int loc_n_min = 0;
82
84 int loc_n_max = INT_MAX;
85
87 long length_cycle = 50;
88
90 long n_warmup_cycles = 5000;
91
93 long random_seed = 34788 + 928374 * mpi::communicator().rank();
94
96 std::string random_name = "";
97
99 long max_time = -1;
100
102 int verbosity = ((mpi::communicator().rank() == 0) ? 3 : 0); // silence the slave nodes
103
105 bool move_shift = true;
106
108 bool move_double = true;
109
112
114 bool measure_G_tau = true;
115
117 bool measure_G_l = false;
118
120 std::optional<std::pair<many_body_op_t, many_body_op_t>> measure_O_tau = {};
121
124
126 bool measure_G2_tau = false;
127
129 bool measure_G2_iw = false;
130
132 bool measure_G2_iw_nfft = false;
133
135 bool measure_G2_iw_pp = false;
136
139
141 bool measure_G2_iw_ph = false;
142
145
147 bool measure_G2_iwll_pp = false;
148
150 bool measure_G2_iwll_ph = false;
151
153 block_order measure_G2_block_order = block_order::AABB;
154
156 std::set<std::pair<std::string, std::string>> measure_G2_blocks = {};
157
160
163
166
169
172
174 std::map<std::string, long> nfft_buf_sizes = {};
175
177 bool measure_pert_order = false;
178
181
183 bool use_norm_as_weight = false;
184
186 std::optional<configuration> initial_configuration = {};
187
190
192 std::map<std::string, double> proposal_prob = {};
193
195 std::map<std::string, indices_map_t> move_global = {};
196
198 double move_global_prob = 0.05;
199
201 double imag_threshold = 1.e-13;
202
204 int det_init_size = 100;
205
208
210 double det_precision_warning = 1.e-8;
211
213 double det_precision_error = 1.e-5;
214
217
218 bool operator==(solve_parameters_t const &) const = default;
219
221 friend void h5_write(h5::group h5group, std::string subgroup_name, solve_parameters_t const &sp);
222
224 friend void h5_read(h5::group h5group, std::string subgroup_name, solve_parameters_t &sp);
225
227 double off_diag_threshold = 0.0;
228
230 std::optional<many_body_op_t> h_loc0 = {};
231 };
232
235 params_t(constr_parameters_t constr_parameters_, solve_parameters_t solve_parameters_)
236 : constr_parameters_t(constr_parameters_), solve_parameters_t(solve_parameters_) {}
237 };
238} // namespace triqs_cthyb
int n_iw
Number of Matsubara frequencies.
bool delta_interface
Use and as input instead of .
int n_l
Number of Legendre polynomials.
gf_struct_t gf_struct
Structure of the Green's function (names and sizes of blocks).
double beta
Inverse temperature .
int n_tau
Number of imaginary-time points.
block_order measure_G2_block_order
Order of block indices in the definition of .
int measure_G2_iwll_nfft_buf_size
NFFT buffer size for the measurement.
bool measure_G2_iw_pp
Measure in the particle-particle channel.
double det_singular_threshold
Bound for the determinant matrix being singular (if , checks for subnormal numbers).
std::optional< configuration > initial_configuration
Initial configuration of the run (advanced, use with care).
bool performance_analysis
Analyse performance of the trace computation with histograms (developers only)?
std::optional< many_body_op_t > h_loc0
Quadratic part of the local Hamiltonian. Must be provided if the interface is used.
std::string partition_method
Partition method.
long random_seed
Seed for random number generator.
long length_cycle
Length of a single QMC cycle.
double det_precision_error
Threshold for determinant precision error.
bool measure_G2_iw_ph
Measure in the particle-hole channel.
bool measure_G2_tau
Measure with three fermionic times.
bool measure_G2_iw
Measure with three fermionic frequencies.
double move_global_prob
Overall probability of the global moves.
int det_n_operations_before_check
Maximum number of operations before testing the accuracy of and .
bool measure_G2_iw_ph_nfft
Measure in the particle-hole channel.
int loc_n_min
Restrict local Hilbert space to states with at least this number of particles.
int measure_G2_n_fermionic
Number of fermionic Matsubara frequencies for the measurement.
double det_precision_warning
Threshold for determinant precision warnings.
bool measure_G_l
Measure (Legendre)? No hermiticity is enforced.
std::optional< std::pair< many_body_op_t, many_body_op_t > > measure_O_tau
Measure by insertion.
bool measure_pert_order
Measure perturbation order?
bool measure_G2_iw_pp_nfft
Measure in the particle-particle channel.
bool use_trace_estimator
Calculate the full trace or use an estimate?
bool use_norm_as_weight
Use the norm of the density matrix in the weight (instead of the trace)?
std::map< std::string, double > proposal_prob
Operator insertion/removal probabilities for different blocks.
bool move_double
Add double insertions as a move?
bool move_shift
Add shifting an operator as a move?
bool measure_density_matrix
Measure the reduced impurity density matrix?
int det_init_size
The maximum size of the determinant matrix before a resize.
many_body_op_t h_int
Interacting part of the atomic Hamiltonian.
bool measure_G_tau
Measure ? Hermiticity is enforced.
bool measure_G2_iwll_pp
Measure in the particle-particle channel.
int loc_n_max
Restrict local Hilbert space to states with at most this number of particles.
std::vector< many_body_op_t > quantum_numbers
Quantum numbers.
long n_warmup_cycles
Number of cycles for thermalization.
long max_time
Maximum runtime in seconds, use -1 to set infinite.
std::map< std::string, indices_map_t > move_global
List of global moves (with their names). Each move is specified with an index substitution dictionary...
long n_cycles
Number of QMC cycles.
std::map< std::string, long > nfft_buf_sizes
NFFT buffer sizes for different blocks.
bool measure_G2_iwll_ph
Measure in the particle-hole channel.
double off_diag_threshold
Threshold below which off-diagonal components of are set to zero.
double imag_threshold
Threshold below which imaginary components of and are set to zero.
int measure_G2_n_l
Number of Legendre coefficients for the measurement.
std::set< std::pair< std::string, std::string > > measure_G2_blocks
List of block index pairs of to measure.
std::string random_name
Name of random number generator.
int verbosity
Verbosity level.
int measure_G2_n_tau
Number of imaginary-time slices for the measurement.
bool measure_G2_iw_nfft
Measure with three fermionic frequencies.
int measure_G2_n_bosonic
Number of bosonic Matsubara frequencies for the measurement.
int measure_O_tau_min_ins
Minimum number of operator insertions in the insertion measure.
Parameters used for constructing the solver class.
friend void h5_read(h5::group h5group, std::string subgroup_name, constr_parameters_t &sp)
Read constr_parameters_t from hdf5.
friend void h5_write(h5::group h5group, std::string subgroup_name, constr_parameters_t const &sp)
Write constr_parameters_t to hdf5.
Parameters passed to the solve method of the solver class.
friend void h5_write(h5::group h5group, std::string subgroup_name, solve_parameters_t const &sp)
Write solve_parameters_t to hdf5.
friend void h5_read(h5::group h5group, std::string subgroup_name, solve_parameters_t &sp)
Read solve_parameters_t from hdf5.