00001 #ifndef JASTROW_H 00002 #define JASTROW_H 00003 00004 #include <armadillo> 00005 00006 using namespace arma; 00007 00008 class Config; 00009 00013 class Jastrow 00014 { 00015 public: 00016 Jastrow(Config * config); 00017 00018 double evaluate(vec2 r[]); 00019 double ratio(vec2 &rNew, int movedParticle); 00020 void setParameters(double *parameters); 00021 void calculateDistances(vec2 r[]); 00022 void initialize(vec2 positions[]); 00023 void acceptMove(int movedParticle); 00024 double argument(int i, int j, mat &distances); 00025 00026 void gradient(vec2 r[], vec &rGradient); 00027 void rejectMove(); 00028 ~Jastrow(); 00029 double laplacePartial(vec2 r[]); 00030 private: 00031 int nParticles; 00032 int nDimensions; 00033 double beta; 00034 mat a; 00035 00036 mat distancesOld; 00037 mat distancesNew; 00038 mat jastrowArgumentsOld; 00039 mat jastrowArgumentsNew; 00040 vec jastrowGradient; 00041 vec2 rpiVec; 00042 00043 vec2 *rOld; 00044 vec2 *rNew; 00045 }; 00046 00047 #endif // JASTROW_H