montecarlo/diffusionmontecarlo.h
00001 #ifndef DIFFUSIONMONTECARLO_H
00002 #define DIFFUSIONMONTECARLO_H
00003 
00004 #include "montecarlo.h"
00005 #include "../walker/diffusionwalker.h"
00006 
00010 class DiffusionMonteCarlo : public MonteCarlo
00011 {
00012 public:
00013     DiffusionMonteCarlo(Config *config);
00014 
00015     void sample(int nSamplesLocal);
00016     void sample();
00017     void setTimeStep(double arg) {
00018         timeStep = arg;
00019         updateWalkerParameters();
00020     }
00021     void loadConfiguration(INIParser *settings);
00022 
00023 //    vec2 **rOld;
00024 //    vec2 **rNew;
00025 //    WaveFunction **waves;
00026 private:
00027     DiffusionWalker **walkers;
00028 
00029 //    bool *aliveOld;
00030 //    bool *aliveMid;
00031 //    bool *aliveNew;
00032 
00033     int correlationStep;
00034     int nWalkersMax;
00035     int nWalkersIdeal;
00036     int nWalkersAlive;
00037     int nSamples;
00038     int nThermalizationCycles;
00039     MonteCarlo *initialMonteCarlo;
00040     double timeStep;
00041     double parameters[2];
00042     void updateWalkerParameters();
00043 };
00044 
00045 #endif // DIFFUSIONMONTECARLO_H
 All Classes Functions