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
00024
00025
00026 private:
00027 DiffusionWalker **walkers;
00028
00029
00030
00031
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