heatbath-1mr-
heatbath-r-
heatbath-r+
+heatbath-AhbMhb
+heatbath-AhbMor
+heatbath-AorMor
+heatbath-AorMhb
+heatbath-metro
add_subdirectory(latlib)
-add_executable(heatbath-nor heatbath.cpp)
-set_target_properties(heatbath-nor PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_NOR")
-target_link_libraries(heatbath-nor o815 gsl gslcblas lat_neigh)
+add_executable(heatbath-metro heatbath.cpp)
+set_target_properties(heatbath-metro PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_METRO")
+target_link_libraries(heatbath-metro o815 gsl gslcblas lat_neigh)
-add_executable(heatbath-r heatbath.cpp)
-set_target_properties(heatbath-r PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_R")
-target_link_libraries(heatbath-r o815 gsl gslcblas lat_neigh)
+add_executable(heatbath-AhbMhb heatbath.cpp)
+set_target_properties(heatbath-AhbMhb PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_AHBMHB")
+target_link_libraries(heatbath-AhbMhb o815 gsl gslcblas lat_neigh)
-add_executable(heatbath-1mr heatbath.cpp)
-set_target_properties(heatbath-1mr PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_1MR")
-target_link_libraries(heatbath-1mr o815 gsl gslcblas lat_neigh)
+add_executable(heatbath-AhbMor heatbath.cpp)
+set_target_properties(heatbath-AhbMor PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_AHBMOR")
+target_link_libraries(heatbath-AhbMor o815 gsl gslcblas lat_neigh)
-add_executable(heatbath-1mr+ heatbath.cpp)
-set_target_properties(heatbath-1mr+ PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_1MRPLUS")
-target_link_libraries(heatbath-1mr+ o815 gsl gslcblas lat_neigh)
+add_executable(heatbath-AorMhb heatbath.cpp)
+set_target_properties(heatbath-AorMhb PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_AORMHB")
+target_link_libraries(heatbath-AorMhb o815 gsl gslcblas lat_neigh)
-add_executable(heatbath-1mr- heatbath.cpp)
-set_target_properties(heatbath-1mr- PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_1MRMINUS")
-target_link_libraries(heatbath-1mr- o815 gsl gslcblas lat_neigh)
-
-add_executable(heatbath-r- heatbath.cpp)
-set_target_properties(heatbath-r- PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_RMINUS")
-target_link_libraries(heatbath-r- o815 gsl gslcblas lat_neigh)
-
-add_executable(heatbath-r+ heatbath.cpp)
-set_target_properties(heatbath-r+ PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_RPLUS")
-target_link_libraries(heatbath-r+ o815 gsl gslcblas lat_neigh)
+add_executable(heatbath-AorMor heatbath.cpp)
+set_target_properties(heatbath-AorMor PROPERTIES COMPILE_DEFINITIONS "ALGORITHM_AORMOR")
+target_link_libraries(heatbath-AorMor o815 gsl gslcblas lat_neigh)
#include "latlib/o815/o815.h"
-#ifdef ALGORITHM_NOR
-#define ALGORITHM "nor"
-#include "sim-nor.hpp"
-#elif ALGORITHM_R
-#define ALGORITHM "r"
-#include "sim-r.hpp"
-#elif ALGORITHM_1MR
-#define ALGORITHM "1mr"
-#include "sim-1mr.hpp"
-#elif ALGORITHM_1MRPLUS
-#define ALGORITHM "1mr+"
-#include "sim-1mr+.hpp"
-#elif ALGORITHM_1MRMINUS
-#define ALGORITHM "1mr-"
-#include "sim-1mr-.hpp"
-#elif ALGORITHM_RMINUS
-#define ALGORITHM "r-"
-#include "sim-r-.hpp"
-#elif ALGORITHM_RPLUS
-#define ALGORITHM "r+"
-#include "sim-r+.hpp"
+#ifdef ALGORITHM_METRO
+#define ALGORITHM "metro"
+#include "sim-metro.hpp"
+#elif ALGORITHM_AHBMHB
+#include "sim-nonmetro.hpp"
+#define ALGORITHM "AhbMhb"
+#elif ALGORITHM_AHBMOR
+#include "sim-nonmetro.hpp"
+#define ALGORITHM "AhbMor"
+#elif ALGORITHM_AORMHB
+#include "sim-nonmetro.hpp"
+#define ALGORITHM "AorMhb"
+#elif ALGORITHM_AORMOR
+#include "sim-nonmetro.hpp"
+#define ALGORITHM "AorMor"
#else
#error NO UPDATE-ALGORITHM DEFINED!
#endif
+#ifdef NONMETRO_A_HB
+#error SADSADS
+#endif
+
o815 *O815;
sim *Sim;
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- const double V2diff = pow(real(V), 2) - pow(imag(V), 2);
- const double Vprod = real(V)*imag(V);
- conf[x].phi = complex<double> ( + real(conf[x].phi) * V2diff + 2 * imag(conf[x].phi) * Vprod,
- - imag(conf[x].phi) * V2diff + 2 * real(conf[x].phi) * Vprod ) / norm(V);
-
- const double r = exp( - M * norm(conf[x].phi)
- - 1./M * norm(V)
- + 2 * real( conf[x].phi * conj(V) ) );
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar( 1.0, gsl_rng_uniform(rangsl) * 2*M_PI )
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- const double r = exp( - M * norm(conf[x].phi)
- - 1./M * norm(V)
- + 2 * real( conf[x].phi * conj(V) ) );
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar( 1.0, arg(conf[x].phi) )
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- const double theta = gsl_rng_uniform(rangsl) * 2*M_PI;
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- const double r = exp( - M * norm(conf[x].phi)
- - 1./M * norm(V)
- + 2 * real( conf[x].phi * conj(V) ) );
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar(1.0, theta)
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif
--- /dev/null
+#ifndef SIM_HPP
+#define SIM_HPP
+
+#include <gsl/gsl_rng.h>
+#include <complex>
+#include <math.h>
+
+#include "latlib/neigh.h"
+
+#define EPSILONPHI 0.5
+
+class sim : public o815::sim {
+public:
+ struct siteconf {
+ complex<double> phi;
+ };
+ sim(o815 *_O815);
+ siteconf* conf;
+ unsigned int LSIZE2;
+ double M;
+ double m;
+ neigh *nb;
+
+private:
+ void _makeSweep();
+ void _newParas();
+ gsl_rng* rangsl;
+ int updatePhi (const int& x);
+ double SofPhi(const int& x, const complex<double>& phix);
+ double rhoPhi(const int& x, const complex<double>& phixCandidate);
+};
+
+
+
+sim::sim(o815 *_O815) : o815::sim( _O815,
+ sizeof(siteconf)*
+ (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
+ conf = (siteconf*)confMem;
+
+ rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
+ gsl_rng_set(rangsl, time(NULL));
+
+ LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
+
+ nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
+}
+
+void sim::_makeSweep() {
+ for (int ichecker=0; ichecker<2; ichecker++)
+ for (int it=0; it<O815->comargs.lsize[0]; it++)
+ for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
+ updatePhi( it*O815->comargs.lsize[1] + iy );
+}
+
+void sim::_newParas() {
+ m = (*O815->paraQ)["mass"];
+ M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
+ *log << "SIM: Resetting fields." << endl << flush;
+
+ for (int ix=0; ix<LSIZE2; ix++)
+ conf[ix].phi = 1;
+}
+
+int sim::updatePhi(const int& x) {
+ complex<double> phixCandidate = conf[x].phi +
+ complex<double> ( 2*EPSILONPHI*( 0.5 - gsl_rng_uniform(rangsl) ),
+ 2*EPSILONPHI*( 0.5 - gsl_rng_uniform(rangsl) ) );
+
+ if ( gsl_rng_uniform(rangsl) < rhoPhi(x, phixCandidate) ) {
+ conf[x].phi = phixCandidate;
+ return 1;
+ }
+
+ return 0;
+}
+
+double sim::rhoPhi(const int& x, const complex<double>& phixCandidate) {
+ return exp( SofPhi(x, conf[x].phi) - SofPhi(x, phixCandidate) );
+}
+
+double sim::SofPhi(const int& x, const complex<double>& phix) {
+ double sofphi = M * norm(phix);
+
+ for (int nu=0; nu<4; nu++)
+ sofphi -= 2 * real( conj(phix) * conf[ (*nb)[x*4+nu] ].phi );
+
+ return sofphi;
+}
+
+#endif
--- /dev/null
+#ifndef SIM_HPP
+#define SIM_HPP
+
+#include <gsl/gsl_rng.h>
+#include <complex>
+#include <math.h>
+
+#include "latlib/neigh.h"
+
+class sim : public o815::sim {
+public:
+ struct siteconf {
+ complex<double> phi;
+ };
+ sim(o815 *_O815);
+ siteconf* conf;
+ unsigned int LSIZE2;
+ double M;
+ double m;
+ neigh *nb;
+
+private:
+ void _makeSweep();
+ void _newParas();
+ gsl_rng* rangsl;
+ void updatePhi (const int& x);
+ static double magnYOfR (const double& r);
+};
+
+double sim::magnYOfR (const double& r)
+{
+ return sqrt( -std::log(1-r) );
+}
+
+sim::sim(o815 *_O815) : o815::sim( _O815,
+ sizeof(siteconf)*
+ (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
+ conf = (siteconf*)confMem;
+
+ rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
+ gsl_rng_set(rangsl, time(NULL));
+
+ LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
+
+ nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
+}
+
+void sim::updatePhi (const int& x)
+{
+ complex<double> V=0;
+ complex<double> Y;
+
+ for (int nu=0; nu<4; nu++)
+ V += conf[ (*nb)[x*4+nu] ].phi;
+
+#if defined(ALGORITHM_AHBMHB) || defined(ALGORITHM_AHBMOR)
+ Y = polar( abs(Y), gsl_rng_uniform(rangsl) * 2*M_PI );
+#elif defined(ALGORITHM_AORMHB) || defined(ALGORITHM_AORMOR)
+ const double V2diff = pow(real(V), 2) - pow(imag(V), 2);
+ const double Vprod = real(V)*imag(V);
+ Y = complex<double> ( + real(Y) * V2diff + 2 * imag(Y) * Vprod,
+ - imag(Y) * V2diff + 2 * real(Y) * Vprod ) / norm(V);
+#endif
+
+#if defined(ALGORITHM_AHBMHB) || defined(ALGORITHM_AORMHB)
+ Y = polar( magnYOfR( gsl_rng_uniform(rangsl) ), arg(Y) );
+#elif defined(ALGORITHM_AHBMOR) || defined(ALGORITHM_AORMOR)
+ Y = polar( magnYOfR( 1 - exp(-norm(Y)) ), arg(Y) ); //!!!!
+#endif
+}
+
+void sim::_makeSweep() {
+ for (int ichecker=0; ichecker<2; ichecker++)
+ for (int it=0; it<O815->comargs.lsize[0]; it++)
+ for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
+ updatePhi( it*O815->comargs.lsize[1] + iy );
+}
+
+void sim::_newParas() {
+ m = (*O815->paraQ)["mass"];
+ M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
+ *log << "SIM: Resetting fields." << endl << flush;
+
+ for (int ix=0; ix<LSIZE2; ix++)
+ conf[ix].phi = 1;
+}
+
+#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-#define EPSILONPHI 0.5
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- int updatePhi (const int& x);
- double SofPhi(const int& x, const complex<double>& phix);
- double rhoPhi(const int& x, const complex<double>& phixCandidate);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-int sim::updatePhi(const int& x) {
- complex<double> phixCandidate = conf[x].phi +
- complex<double> ( 2*EPSILONPHI*( 0.5 - gsl_rng_uniform(rangsl) ),
- 2*EPSILONPHI*( 0.5 - gsl_rng_uniform(rangsl) ) );
-
- if ( gsl_rng_uniform(rangsl) < rhoPhi(x, phixCandidate) ) {
- conf[x].phi = phixCandidate;
- return 1;
- }
-
- return 0;
-}
-
-double sim::rhoPhi(const int& x, const complex<double>& phixCandidate) {
- return exp( SofPhi(x, conf[x].phi) - SofPhi(x, phixCandidate) );
-}
-
-double sim::SofPhi(const int& x, const complex<double>& phix) {
- double sofphi = M * norm(phix);
-
- for (int nu=0; nu<4; nu++)
- sofphi -= 2 * real( conj(phix) * conf[ (*nb)[x*4+nu] ].phi );
-
- return sofphi;
-}
-
-#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- const double r = gsl_rng_uniform(rangsl);
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- const double V2diff = pow(real(V), 2) - pow(imag(V), 2);
- const double Vprod = real(V)*imag(V);
- conf[x].phi = complex<double> ( + real(conf[x].phi) * V2diff + 2 * imag(conf[x].phi) * Vprod,
- - imag(conf[x].phi) * V2diff + 2 * real(conf[x].phi) * Vprod ) / norm(V);
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar(1.0, gsl_rng_uniform(rangsl) * 2*M_PI)
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- const double r = gsl_rng_uniform(rangsl);
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar( 1.0, arg(conf[x].phi) )
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif
+++ /dev/null
-#ifndef SIM_HPP
-#define SIM_HPP
-
-#include <gsl/gsl_rng.h>
-#include <complex>
-#include <math.h>
-
-#include "latlib/neigh.h"
-
-class sim : public o815::sim {
-public:
- struct siteconf {
- complex<double> phi;
- };
- sim(o815 *_O815);
- siteconf* conf;
- unsigned int LSIZE2;
- double M;
- double m;
- neigh *nb;
-
-private:
- void _makeSweep();
- void _newParas();
- gsl_rng* rangsl;
- void updatePhi (const int& x);
-};
-
-
-
-sim::sim(o815 *_O815) : o815::sim( _O815,
- sizeof(siteconf)*
- (_O815->comargs.lsize[0]*_O815->comargs.lsize[1]) ) {
- conf = (siteconf*)confMem;
-
- rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
- gsl_rng_set(rangsl, time(NULL));
-
- LSIZE2 = _O815->comargs.lsize[0] * _O815->comargs.lsize[1];
-
- nb = new neigh(2, _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
-}
-
-void sim::updatePhi (const int& x)
-{
- const double r = gsl_rng_uniform(rangsl);
- const double theta = gsl_rng_uniform(rangsl) * 2*M_PI;
- complex<double> V=0;
-
- for (int nu=0; nu<4; nu++)
- V += conf[ (*nb)[x*4+nu] ].phi;
-
- conf[x].phi = sqrt(std::log( 1./(1-r) )) / sqrt(M)
- * polar(1.0, theta)
- + V / M;
-}
-
-void sim::_makeSweep() {
- for (int ichecker=0; ichecker<2; ichecker++)
- for (int it=0; it<O815->comargs.lsize[0]; it++)
- for (int iy=(it+ichecker)%2; iy<O815->comargs.lsize[1]; iy+=2)
- updatePhi( it*O815->comargs.lsize[1] + iy );
-}
-
-void sim::_newParas() {
- m = (*O815->paraQ)["mass"];
- M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
- *log << "SIM: Resetting fields." << endl << flush;
-
- for (int ix=0; ix<LSIZE2; ix++)
- conf[ix].phi = 1;
-}
-
-#endif