diff options
Diffstat (limited to 'dimers_torus.cpp')
-rw-r--r-- | dimers_torus.cpp | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/dimers_torus.cpp b/dimers_torus.cpp index f304564..74cf47e 100644 --- a/dimers_torus.cpp +++ b/dimers_torus.cpp @@ -11,28 +11,6 @@ const unsigned D = 2; typedef Model<double, D, TorusGroup<double, D>, Dimer<double, 2>> model; -Gen<double, D, TorusGroup<double, D>, Dimer<double, D>> eGen(double L) { - std::vector<Vector<double, 2>> torusVectors = torus_vecs<double, 2>(L); - std::vector<Matrix<double, 2>> torusMatrices = torus_mats<double, 2>(); - return [L, torusVectors, - torusMatrices](Model<double, D, TorusGroup<double, D>, Dimer<double, D>>& M, - Rng& r) -> Transformation<double, D, TorusGroup<double, D>, Dimer<double, D>>* { - Matrix<double, 2> m; - Vector<double, 2> t; - - m = r.pick(torusMatrices); - t(0) = r.uniform<double>(0, L); - t(1) = r.uniform<double>(0, L); - t = t - m * t; - - TorusGroup<double, 2> g = TorusGroup<double, 2>({(double)L, t, m}); - - Spin<double, 2, Dimer<double, 2>>* ss = r.pick(M.s); - - return new SpinFlip<double, 2, TorusGroup<double, 2>, Dimer<double, 2>>(M, g, ss); - }; -} - int main(int argc, char* argv[]) { const unsigned D = 2; @@ -97,7 +75,7 @@ int main(int argc, char* argv[]) { return H * s.x(1); }; - auto g1 = eGen(L); + auto g1 = uniformGenTorus<D, Dimer<double, D>>(L); auto tag = std::chrono::high_resolution_clock::now(); @@ -111,7 +89,7 @@ int main(int argc, char* argv[]) { unsigned nx = floor(sqrt(n)); for (unsigned i = 0; i < sphere.s.size(); i++) { Spin<double, 2, Dimer<double, D>>* ss = new Spin<double, 2, Dimer<double, D>>(); - ss->x = {(i / nx) * L / nx - L / 2, (i % nx) * L / nx - L / 2}; + ss->x = {(i / nx) * L / nx, (i % nx) * L / nx}; ss->s = Dimer<double, D>{.relativePosition = {0.2, 0}, .radius = 0.25}; sphere.s[i] = ss; sphere.dict.insert(ss); |