diff options
Diffstat (limited to 'hadamard.cpp')
-rw-r--r-- | hadamard.cpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/hadamard.cpp b/hadamard.cpp index c26b558..076458f 100644 --- a/hadamard.cpp +++ b/hadamard.cpp @@ -54,9 +54,9 @@ public: int main(int argc, char* argv[]) { unsigned n_tuning = 1e2; - double β0 = 1.00; - double βf = 40.00; - unsigned num = 136; + std::list<double> β0s; + std::list<double> β1s; + std::list<unsigned> Ns; unsigned k = 2; double ε = 0.01; @@ -71,16 +71,16 @@ int main(int argc, char* argv[]) { k = atoi(optarg); break; case 'b': - β0 = atof(optarg); + β0s.push_back(atof(optarg)); break; case 'c': - βf = atof(optarg); + β1s.push_back(atof(optarg)); break; case 'e': ε = atof(optarg); break; case 'n': - num = atof(optarg); + Ns.push_back((unsigned)atof(optarg)); break; case 't': n_tuning = (unsigned)atof(optarg); @@ -98,17 +98,32 @@ int main(int argc, char* argv[]) { unsigned n = pow(2, k); + std::list<range> rs; + unsigned num = 0; + + if ((β0s.size() != β1s.size()) || (β0s.size() != Ns.size())) { + std::cout << "You need the same number of ranges!\n"; + exit(0); + } else { + auto it0 = β0s.begin(); + auto it1 = β1s.begin(); + auto itN = Ns.begin(); + + while (it0 != β0s.end()) { + rs.push_back({*it0, *it1, *itN}); + num += *itN; + it0++; + it1++; + itN++; + } + } + std::vector<Measurement*> As(num); for (Measurement*& A : As) { A = new MeasureEnergy(); } MeasureTransitionRates B(num); - range r1 = {0.0, 5.5, 44}; - range r2 = {5.5, 6.5, 80}; - range r3 = {6.5, 8, 12}; - auto rs = {r1, r2, r3}; - PT p(rs, n, B, As); for (MCMC& sim : p.Ms) { |