00001 #ifndef QMCDansWalkerInitialization_H 00002 #define QMCDansWalkerInitialization_H 00003 00004 #include "QMCInput.h" 00005 #include "QMCInitializeWalker.h" 00006 #include "CubicSpline.h" 00007 #include "AngleDistributions.h" 00008 #include "RadialDistributions.h" 00009 00010 #include "Array1D.h" 00011 #include "Array2D.h" 00012 00013 #include "Random.h" 00014 00015 #include <fstream> 00016 #include <string> 00017 00018 class QMCDansWalkerInitialization : public QMCInitializeWalker 00019 { 00020 public: 00021 00022 ~QMCDansWalkerInitialization(); 00023 00028 QMCDansWalkerInitialization(QMCInput * input); 00029 00034 Array2D<double> initializeWalkerPosition(); 00035 00036 private: 00037 00038 QMCInput * Input; 00039 00044 static Array1D<CubicSpline> phiSplines; 00045 00051 static Array1D<int> phiSplinesMade; 00052 00057 static Array1D<CubicSpline> thetaSplines; 00058 00064 static Array1D<int> thetaSplinesMade; 00065 00070 static Array2D<CubicSpline> radialSplines; 00071 00077 static Array2D<int> radialSplinesMade; 00078 00083 static Array1D<double> x_array; 00084 00085 static void initializeArrays(); 00086 00087 static bool arraysInitialized; 00088 00098 Array2D<double> dist_energy_level(int Z, int n, int nalpha, int nbeta); 00099 00105 Array2D<int> assign_electrons_to_nuclei(); 00106 00116 Array2D<double> dist_center(int atomic_charge, int n_e, int n_a, int n_b); 00117 00125 double generatePhiCoordinate(int index); 00126 00133 double generateThetaCoordinate(int index); 00134 00143 Array1D<double> generateRadialDistances(int Z,int n,int nelecs); 00144 00145 }; 00146 00147 #endif