00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef QMCJastrowElectronElectron_H
00015 #define QMCJastrowElectronElectron_H
00016
00017 #include "Array1D.h"
00018 #include "Array2D.h"
00019 #include "QMCInput.h"
00020 #include "QMCJastrowParameters.h"
00021 #include "QMCWalkerData.h"
00022
00042 class QMCJastrowElectronElectron
00043 {
00044 public:
00045 QMCJastrowElectronElectron();
00046
00047 ~QMCJastrowElectronElectron();
00048
00054 void initialize(QMCInput * input);
00055
00064 void evaluate( QMCJastrowParameters & JP,
00065 QMCWalkerData * wData,
00066 Array2D<double> & X);
00067
00072 double get_p_a_ln(int ai);
00073
00078 Array2D<double> * get_p2_xa_ln(int ai);
00079
00084 double get_p3_xxa_ln(int ai);
00085
00097 double jastrowOnGrid(QMCJastrowParameters & JP,
00098 int E,
00099 Array2D<double> & R,
00100 Array2D<double> & grid,
00101 Array1D<double> & integrand);
00102
00103 protected:
00104 Array1D<double> p_a;
00105 Array1D< Array2D<double> > p2_xa;
00106 Array1D<double> p3_xxa;
00107
00108 private:
00109 QMCWalkerData * wd;
00110
00119 void updateOne( QMCJastrowParameters & JP,
00120 Array2D<double> & X);
00121
00130 void updateAll( QMCJastrowParameters & JP,
00131 Array2D<double> & X);
00132
00133 void collectForPair(int el1, int el2,
00134 QMCCorrelationFunction *U_Function,
00135 Array2D<double> & X,
00136 int index, int numP);
00137 };
00138
00139 #endif