42 "╔╦╗╦═╗╦╔═╗ ╔═╗ ┌─┐┌┬┐┌─┐┌─┐┌─┐\n"
43 " ║ ╠╦╝║║═╬╗╚═╗ │ │ └─┐├┤ │ ┬\n"
44 " ╩ ╩╚═╩╚═╝╚╚═╝ └─┘ ┴ └─┘└─┘└─┘\n";
60 work_data_t wdata{p, inputs, c};
62 configuration_t config{wdata.n_color};
64 if (not wdata.has_Delta) { config.seglists[0].push_back(segment_t::full_line()); }
71 if (wdata.has_Delta) {
72 if (p.
move_insert_segment) CTQMC.add_move(moves::insert_segment{wdata, config, CTQMC.get_rng()},
"insert");
73 if (p.
move_remove_segment) CTQMC.add_move(moves::remove_segment{wdata, config, CTQMC.get_rng()},
"remove");
74 if (p.
move_double_insert_segment) CTQMC.add_move(moves::double_insert_segment{wdata, config, CTQMC.get_rng()},
"double insert");
75 if (p.
move_double_remove_segment) CTQMC.add_move(moves::double_remove_segment{wdata, config, CTQMC.get_rng()},
"double remove");
76 if (p.
move_move_segment) CTQMC.add_move(moves::move_segment{wdata, config, CTQMC.get_rng()},
"move");
77 if (p.
move_split_segment) CTQMC.add_move(moves::split_segment{wdata, config, CTQMC.get_rng()},
"split");
78 if (p.
move_regroup_segment) CTQMC.add_move(moves::regroup_segment{wdata, config, CTQMC.get_rng()},
"regroup");
81 if (wdata.has_Jperp) {
83 CTQMC.add_move(moves::insert_spin_segment{wdata, config, CTQMC.get_rng()},
"spin insert");
86 CTQMC.add_move(moves::remove_spin_segment{wdata, config, CTQMC.get_rng()},
"spin remove");
89 if (wdata.has_Jperp and wdata.has_Delta) {
91 CTQMC.add_move(moves::split_spin_segment{wdata, config, CTQMC.get_rng()},
"spin split");
94 CTQMC.add_move(moves::regroup_spin_segment{wdata, config, CTQMC.get_rng()},
"spin regroup");
97 if (wdata.has_Jperp) {
98 if (p.
move_swap_spin_lines) CTQMC.add_move(moves::swap_spin_lines{wdata, config, CTQMC.get_rng()},
"spin swap");
102 if (p.
measure_G_tau) CTQMC.add_measure(measures::G_F_tau{p, wdata, config,
results},
"G(tau)/F(tau)");
106 if (p.
measure_nn_tau) CTQMC.add_measure(measures::nn_tau{p, wdata, config,
results},
"<n(tau)n(0)>");
110 if (wdata.has_Delta) {
111 CTQMC.add_measure(measures::pert_order{[&]() {
return config.Delta_order(); },
results.pert_order_Delta,
113 "Perturbation order Delta");
115 if (wdata.has_Jperp) {
116 CTQMC.add_measure(measures::pert_order{[&]() {
return config.Jperp_order(); },
results.pert_order_Jperp,
118 "Perturbation order Jperp");
123 CTQMC.add_measure(measures::four_point{p, wdata, config,
results},
"Four-point correlation function");
124 if (p.
visualize_config) CTQMC.add_measure(measures::visualize_config{config},
"Visualizing configurations");
128 triqs::utility::clock_callback(p.
max_time));
129 CTQMC.collect_results(c);
133 spdlog::info(
"Average sign: {}",
results.average_sign);
134 if (
results.average_order_Delta)
135 spdlog::info(
"Average perturbation order in Delta: {:.3f}",
results.average_order_Delta.value());
136 if (
results.average_order_Jperp)
137 spdlog::info(
"Average perturbation order in Jperp: {:.3f}",
results.average_order_Jperp.value());