X-Git-Url: http://git.treefish.org/~alex/phys/heatbath.git/blobdiff_plain/42525a1e9b53ed082fbacce84caf8cff6b4219bc..HEAD:/sim-nonmetro.hpp?ds=inline diff --git a/sim-nonmetro.hpp b/sim-nonmetro.hpp index 064a7bb..b72104f 100644 --- a/sim-nonmetro.hpp +++ b/sim-nonmetro.hpp @@ -53,6 +53,8 @@ void sim::updatePhi (const int& x) for (int nu=0; nu<4; nu++) V += conf[ (*nb)[x*4+nu] ].phi; + Y = sqrt(M) * conf[x].phi - V / sqrt(M); + #if defined(ALGORITHM_AHBMHB) || defined(ALGORITHM_AHBMOR) || defined(ALGORITHM_AHBM0) Y = polar( abs(Y), gsl_rng_uniform(rangsl) * 2*M_PI ); #elif defined(ALGORITHM_AORMHB) || defined(ALGORITHM_AORMOR) || defined(ALGORITHM_AORM0) @@ -65,8 +67,10 @@ void sim::updatePhi (const int& x) #if defined(ALGORITHM_AHBMHB) || defined(ALGORITHM_AORMHB) || defined(ALGORITHM_A0MHB) Y = polar( magnYOfR( gsl_rng_uniform(rangsl) ), arg(Y) ); #elif defined(ALGORITHM_AHBMOR) || defined(ALGORITHM_AORMOR) || defined(ALGORITHM_A0MOR) - Y = polar( magnYOfR( 1 - exp(-norm(Y)) ), arg(Y) ); //!!!! + Y = polar( magnYOfR( exp( -norm(Y) ) ), arg(Y) ); #endif + + conf[x].phi = Y / sqrt(M) + V / M; } void sim::_makeSweep() { @@ -82,7 +86,7 @@ void sim::_newParas() { *log << "SIM: Resetting fields." << endl << flush; for (int ix=0; ix