00001 // QMcBeaver 00002 // 00003 // Constructed by 00004 // 00005 // Michael Todd Feldmann 00006 // and 00007 // David Randall "Chip" Kent IV 00008 // 00009 // Copyright 2000. All rights reserved. 00010 // 00011 // drkent@users.sourceforge.net mtfeldmann@users.sourceforge.net 00012 00013 #ifndef QMCFUNCTIONS_H 00014 #define QMCFUNCTIONS_H 00015 00016 #include <iostream> 00017 #include <sstream> 00018 00019 #include "QMCInput.h" 00020 #include "QMCHartreeFock.h" 00021 #include "QMCWalkerData.h" 00022 00023 using namespace std; 00024 00025 class QMCFunctions 00026 { 00027 public: 00031 QMCFunctions() {}; 00032 00039 QMCFunctions(QMCInput *input) : Input(input) {}; 00040 00047 QMCFunctions(const QMCFunctions & rhs ) {}; 00048 00052 virtual ~QMCFunctions() {}; 00053 00066 virtual void evaluate(Array2D<double> &X, QMCWalkerData & data) = 0; 00067 00068 virtual void evaluate(Array1D<QMCWalkerData *> &walkerData, 00069 Array1D<Array2D<double> * > &xData, int num) = 0; 00070 00076 virtual void calculate_CorrelatedSampling(Array1D<QMCWalkerData *> &walkerData, 00077 Array1D<Array2D<double> * > &xData, 00078 int num){}; 00079 00085 void operator=(const QMCFunctions & rhs ) 00086 { 00087 Input = rhs.Input; 00088 nalpha = rhs.nalpha; 00089 nbeta = rhs.nbeta; 00090 } 00091 00092 protected: 00093 QMCInput *Input; 00094 00095 int nalpha, nbeta; 00096 }; 00097 00098 #endif 00099 00100 00101 00102 00103