00001 #ifndef MONTECARLOMETROPOLISHASTINGS_H
00002 #define MONTECARLOMETROPOLISHASTINGS_H
00003 #include <armadillo>
00004 using namespace arma;
00005
00006 #include "montecarlo.h"
00007 #include "../hamiltonian/hamiltonian.h"
00008 #include "../wavefunction/wavefunction.h"
00009
00013 class MetropolisHastingsMonteCarlo : public MonteCarlo
00014 {
00015 public:
00016 MetropolisHastingsMonteCarlo(Config *config);
00017 void sample(int nCycles);
00018
00019 ~MetropolisHastingsMonteCarlo();
00020 private:
00021 int myRank;
00022
00023
00024 vec quantumForceNew;
00025 vec quantumForceOld;
00026
00027
00028 vec2 positionDiff ;
00029 Hamiltonian* hamiltonian;
00030 bool firstSample;
00031 double diffConstant;
00032 };
00033
00034 #endif // MONTECARLOMETROPOLISHASTINGS_H