42 "╔╦╗╦═╗╦╔═╗ ╔═╗ ┌─┐┌┬┐┌─┐┌─┐┌─┐\n"
43 " ║ ╠╦╝║║═╬╗╚═╗ │ │ └─┐├┤ │ ┬\n"
44 " ╩ ╩╚═╩╚═╝╚╚═╝ └─┘ ┴ └─┘└─┘└─┘\n";
58 work_data_t wdata{p, inputs, c};
60 configuration_t config{wdata.n_color};
62 if (not wdata.has_Delta) { config.seglists[0].push_back(segment_t::full_line()); }
69 if (wdata.has_Delta) {
70 if (p.
move_insert_segment) CTQMC.add_move(moves::insert_segment{wdata, config, CTQMC.get_rng()},
"insert");
71 if (p.
move_remove_segment) CTQMC.add_move(moves::remove_segment{wdata, config, CTQMC.get_rng()},
"remove");
72 if (p.
move_double_insert_segment) CTQMC.add_move(moves::double_insert_segment{wdata, config, CTQMC.get_rng()},
"double insert");
73 if (p.
move_double_remove_segment) CTQMC.add_move(moves::double_remove_segment{wdata, config, CTQMC.get_rng()},
"double remove");
74 if (p.
move_move_segment) CTQMC.add_move(moves::move_segment{wdata, config, CTQMC.get_rng()},
"move");
75 if (p.
move_split_segment) CTQMC.add_move(moves::split_segment{wdata, config, CTQMC.get_rng()},
"split");
76 if (p.
move_regroup_segment) CTQMC.add_move(moves::regroup_segment{wdata, config, CTQMC.get_rng()},
"regroup");
79 if (wdata.has_Jperp) {
81 CTQMC.add_move(moves::insert_spin_segment{wdata, config, CTQMC.get_rng()},
"spin insert");
84 CTQMC.add_move(moves::remove_spin_segment{wdata, config, CTQMC.get_rng()},
"spin remove");
87 if (wdata.has_Jperp and wdata.has_Delta) {
89 CTQMC.add_move(moves::split_spin_segment{wdata, config, CTQMC.get_rng()},
"spin split");
92 CTQMC.add_move(moves::regroup_spin_segment{wdata, config, CTQMC.get_rng()},
"spin regroup");
95 if (wdata.has_Jperp) {
96 if (p.
move_swap_spin_lines) CTQMC.add_move(moves::swap_spin_lines{wdata, config, CTQMC.get_rng()},
"spin swap");
100 if (p.
measure_G_tau) CTQMC.add_measure(measures::G_F_tau{p, wdata, config,
results},
"G(tau)/F(tau)");
104 if (p.
measure_nn_tau) CTQMC.add_measure(measures::nn_tau{p, wdata, config,
results},
"<n(tau)n(0)>");
108 if (wdata.has_Delta) {
109 CTQMC.add_measure(measures::pert_order{[&]() {
return config.Delta_order(); },
results.pert_order_Delta,
111 "Perturbation order Delta");
113 if (wdata.has_Jperp) {
114 CTQMC.add_measure(measures::pert_order{[&]() {
return config.Jperp_order(); },
results.pert_order_Jperp,
116 "Perturbation order Jperp");
121 CTQMC.add_measure(measures::four_point{p, wdata, config,
results},
"Four-point correlation function");
122 if (p.
visualize_config) CTQMC.add_measure(measures::visualize_config{config},
"Visualizing configurations");
126 triqs::utility::clock_callback(p.
max_time));
127 CTQMC.collect_results(c);
131 spdlog::info(
"Average sign: {}",
results.average_sign);
132 if (
results.average_order_Delta)
133 spdlog::info(
"Average perturbation order in Delta: {:.3f}",
results.average_order_Delta.value());
134 if (
results.average_order_Jperp)
135 spdlog::info(
"Average perturbation order in Jperp: {:.3f}",
results.average_order_Jperp.value());