00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef QMCThreeBodyCorrelationFunction_H
00014 #define QMCThreeBodyCorrelationFunction_H
00015
00016 #include "Array1D.h"
00017
00027 class QMCThreeBodyCorrelationFunction
00028 {
00029 public:
00033 virtual ~QMCThreeBodyCorrelationFunction(){};
00034
00039 virtual void initializeParameters(int electron_nucleus,
00040 int electron_electron,
00041 Array1D<double> &Parameters,int power,
00042 double max_dist) = 0;
00043
00044 virtual bool setElectron(bool first, Array1D<double> &xyz, double dist) = 0;
00045
00050 virtual void evaluate(Array1D<double> &xyz12, double r12) = 0;
00051
00055 virtual double getFunctionValue() = 0;
00056
00061 virtual double getFunctionValue(double r12, double r1, double r2) = 0;
00062
00066 virtual double get_p_a(int ai) = 0;
00067
00072 virtual Array1D<double> * getElectron1Gradient() = 0;
00073
00078 virtual Array1D<double> * getElectron2Gradient() = 0;
00079
00083 virtual double get_p2_xa(bool e1, int xyz, int ai) = 0;
00084
00089 virtual double getLaplacianValue() = 0;
00090
00095 virtual double get_p3_xxa(int ai) = 0;
00096
00100 virtual double getCutoffDist() = 0;
00101
00107 virtual void print(ostream& strm){}
00108 };
00109
00110
00111 #endif
00112
00113
00114
00115
00116