]> git.treefish.org Git - phys/heatbath.git/commitdiff
Implemented r algorithm.
authorAlexander Schmidt <alex@treefish.org>
Fri, 15 Nov 2013 10:48:56 +0000 (11:48 +0100)
committerAlexander Schmidt <alex@treefish.org>
Fri, 15 Nov 2013 10:48:56 +0000 (11:48 +0100)
sim-nor.hpp
sim-r.hpp

index 7bb4a7c8fa8adb868c5c9755096ca5f48c07f158..9c1d16693a03d70281c430444f309555e133c595 100644 (file)
@@ -21,15 +21,10 @@ public:
 private:
   void _makeSweep();
   void _newParas();
-
   gsl_rng* rangsl;
-
   neigh *nb;
-
   int updatePhi (const int& x);
-
   double M;
-
   double SofPhi(const int& x, const complex<double>& phix);
   double rhoPhi(const int& x, const complex<double>& phixCandidate);
 };
index aa305ff71abcaaec1e0e1a7f976e671ffe13d74d..e9086262fb4955ba5c545fa0eb3b2e297143d68e 100644 (file)
--- a/sim-r.hpp
+++ b/sim-r.hpp
@@ -19,12 +19,10 @@ public:
 private:
   void _makeSweep();
   void _newParas();
-
   gsl_rng* rangsl;
-
   neigh *nb;
-
   void updatePhi (const int& x);
+  double M;
 };
 
 
@@ -46,13 +44,25 @@ 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)
+    * complex<double>( cos(theta), sin(theta) )
+    + V / M;
 }
 
 void sim::_makeSweep() {  
+  for (int ix=0; ix<LSIZE2; ix++)
+    updatePhi(ix);
 }
 
 void sim::_newParas() {
-  /* reset variables */
+  M = pow( (*O815->paraQ)["mass"], 2 ) + 4;
+  *log << "SIM: Resetting fields." << endl << flush;
+  memset(conf, 0, sizeof(siteconf)*LSIZE2);
 }
 
 #endif