summaryrefslogtreecommitdiff
path: root/hadamard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hadamard.cpp')
-rw-r--r--hadamard.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/hadamard.cpp b/hadamard.cpp
index a2c4199..b311e2d 100644
--- a/hadamard.cpp
+++ b/hadamard.cpp
@@ -118,13 +118,31 @@ int main(int argc, char* argv[]) {
sim.E = sim.M.energy();
}
+ std::vector<double> f;
+
std::cout << "Beginning simulation of " << n << ".\n";
- std::cout << "Beginning " << n_tuning << " tuning tempering updates of " << M
- << " sweeps each.\n";
- std::vector<double> f = p.tune(n_tuning, M, ε, ε2);
- std::cout << "Finished tuning, beginning " << m << " measurement tempering updates of " << M
- << " sweeps each.\n";
- p.run(m, M);
+ bool still_tuning = true;
+ while (still_tuning) {
+ std::cout << "Beginning " << n_tuning << " tuning tempering updates of " << M
+ << " sweeps each.\n";
+ f = p.tune(n_tuning, M, ε, ε2);
+ std::cout << "Finished tuning, beginning " << m << " measurement tempering updates of " << M
+ << " sweeps each.\n";
+ std::cout << "βs: ";
+ for (const MCMC& M : p.Ms) {
+ std::cout << M.β << " ";
+ }
+ std::cout << std::endl;
+ std::cout << "Accept tuning as finished? (y/N): ";
+ char answer = getchar();
+ if (answer == 'y') {
+ still_tuning = false;
+ }
+ ε /= 2;
+ ε2 /= 2;
+ }
+ std::cout << "Running " << m << " PT swaps of " << M << " sweeps each.";
+ p.run(m, M);
std::cout << "Finished " << n << ".\n";
auto tag = std::chrono::high_resolution_clock::now();