8namespace triqs_ctint::moves {
13 auto single_insert = [&]() {
26 U_scalar_t weight = v.
amplitude / insert_proposition_proba;
29 qmc_config->vertex_lst.push_back(std::move(v));
36 for (
int i = 0; i <
n_insertions; ++i) { ratio *= single_insert(); }
39 g_tau_scalar_t
const det_ratio =
lazy_op.execute_try_insert();
42 double remove_proposition_proba = 0.0;
48 return mc_weight_t{det_ratio} * remove_proposition_proba * ratio;
52 for (
auto &d :
qmc_config->dets) d.complete_operation();
58 for (
auto &d :
qmc_config->dets) d.reject_last_try();
mc_weight_t attempt()
Attempt vertex insertion.
triqs::mc_tools::random_generator & rng
The random number generator.
void reject()
Reject vertex insertion.
int n_insertions
Switch for double vertex insertions.
mc_weight_t accept()
Accept vertex insertion.
std::vector< vertex_factory_t > const & vertex_factories
Factory that randomly generates vertices.
lazy_det_operation_t lazy_op
Object that allows to delay determinant operations, necessary for multi-inserts/removes.
qmc_config_t * qmc_config
The Monte-Carlo configuration.
int max_order
Maximum perturbation order (<0 : unlimited).
U_scalar_t amplitude
Amplitude of the vertex, i.e. U, U(tau1-tau2), etc...
double proposition_proba
Probability of proposition for this vertex.