wavefunction/waveslater.h
00001 #ifndef WAVESLATER_H
00002 #define WAVESLATER_H
00003 
00004 #include "wavefunction.h"
00005 
00006 #include <armadillo>
00007 using namespace std;
00008 using namespace arma;
00009 
00010 #include "../config.h"
00011 
00012 class Slater;
00013 class Jastrow;
00014 class Orbital;
00015 
00023 class WaveSlater : public WaveFunction
00024 {
00025 public:
00026     WaveSlater(Config *config);
00027     double evaluate(vec2 r[]);
00028     void setParameters(double *parameters);
00029 //    void setPreviousMovedParticle(int particleNumber);
00030     void acceptMove(int movedParticle);
00031     double ratio(vec2 &particlePosition, int movedParticle);
00032     void initialize(vec2 positions[]);
00033     double laplace(vec2 r[]);
00034     void gradient(vec2 r[], vec &rGradient);
00035     void rejectMove();
00036     WaveFunction *clone();
00037     Slater *slaterUp;
00038     Slater *slaterDown;
00039     Jastrow *jastrow;
00040     ~WaveSlater();
00041     void prepareGradient(vec2 &particlePosition, int movedParticle);
00042     void outputProperties() {
00043         WaveFunction::outputProperties();
00044         std::cout << interactionEnabled << std::endl;
00045     }
00046 private:
00047     vec slaterUpGradient;
00048     vec slaterDownGradient;
00049     vec jastrowGradient;
00050 
00051     Orbital **orbitals;
00052     bool interactionEnabled;
00053 };
00054 
00055 #endif // WAVESLATER_H
 All Classes Functions