Path Integral Quantum Monte Carlo
wavefunction.h
Go to the documentation of this file.
1 
9 #include "constants.h"
10 #include "lookuptable.h"
11 
12 #ifndef WAVEFUNCTION_H
13 #define WAVEFUNCTION_H
14 
15 class Path;
16 
17 // ========================================================================
18 // WaveFunctionBase Class
19 // ========================================================================
27 
28  public:
29  WaveFunctionBase (const Path &,LookupTable &_lookup, string _name="constant");
30  virtual ~WaveFunctionBase();
31 
33  string name;
34 
36  virtual double PsiTrial(const int) { return 1.0; };
37  virtual double PsiTrial(const double) { return 1.0; };
38  virtual double PsiTrial(const beadLocator &) { return 1.0; };
39  virtual double delPsiTrial(const double ) { return 0.0; };
40  virtual double delSqPsiTrial(const double ) { return 0.0; };
41  virtual double gradSqPsiTrial(const int) { return 0.0; };
42 
43  protected:
44  const Path &path;
46 
47 };
48 
49 
50 // ========================================================================
51 // SechWaveFunction Class
52 // ========================================================================
59 
60  public:
61  SechWaveFunction(const Path &,LookupTable &_lookup, string _name="SHO sech");
63 
64  double PsiTrial (const int);
65 
66  private:
67  double a; // The parameter of the wave function
68 
69 };
70 
71 // ========================================================================
72 // JastrowWaveFunction Class
73 // ========================================================================
79 
80 public:
81  JastrowWaveFunction(const Path &, LookupTable &_lookup,string _name="Jastrow");
83 
84  double PsiTrial (const double);
85  double PsiTrial (const int);
86  double delPsiTrial(const double r);
87  double delSqPsiTrial(const double r);
88  double gradSqPsiTrial(const int);
89 
90  double twoBodyPsiTrial (const double);
91 
92 private:
93  double alpha; // The parameter of the wave function
94  double beta; // The parameter of the wave function
95 
96 };
97 
98 
99 
100 // ========================================================================
101 // LiebLinigerWaveFunction Class
102 // ========================================================================
108 
109 public:
110  LiebLinigerWaveFunction(const Path &, LookupTable &_lookup,string _name="LiebLiniger");
112 
113  double PsiTrial (const double);
114  double PsiTrial (const beadLocator &bead1);
115  double PsiTrial (const int);
116 
117  double delPsiTrial(const double r);
118  double delSqPsiTrial(const double r);
119  double gradSqPsiTrial(const int);
120 
121 
122 private:
123  double R; // The parameter length scale of the wave function
124  double k; // The wavevector of the wave function
125 
126 };
127 
128 // ========================================================================
129 // SutherlandWaveFunction Class
130 // ========================================================================
137 
138 public:
139  SutherlandWaveFunction(const Path &, LookupTable &_lookup, double, string _name="Sutherland");
141 
143  double PsiTrial(const double r) {return pow(2.0*sin(pioL*r),lambda);}
144  double PsiTrial (const int);
145 
146 private:
147  double lambda; // Sutherland model \lambda
148  double pioL; // pi / L
149 };
150 
151 
152 
153 #endif
Implementation of a Jastrow trial wave function suitable for He.
Definition: wavefunction.h:78
JastrowWaveFunction(const Path &, LookupTable &_lookup, string _name="Jastrow")
Constructor.
double gradSqPsiTrial(const int)
The value of the N-body trial wave function.
double delSqPsiTrial(const double r)
The derivative of psi over psi.
double PsiTrial(const double)
The value of the 2-body trial wave function.
double delPsiTrial(const double r)
The derivative of psi over psi.
~JastrowWaveFunction()
Destructor.
Implementation of a Jastrow trial wave function suitable for He.
Definition: wavefunction.h:107
double gradSqPsiTrial(const int)
The value of the N-body trial wave function.
double PsiTrial(const double)
The value of the 2-body trial wave function.
double delPsiTrial(const double r)
The derivative of psi over psi.
LiebLinigerWaveFunction(const Path &, LookupTable &_lookup, string _name="LiebLiniger")
Constructor.
~LiebLinigerWaveFunction()
Destructor.
double delSqPsiTrial(const double r)
The derivative of psi over psi.
The particle (bead) lookup table.
Definition: lookuptable.h:29
The space-time trajectories.
Definition: path.h:29
Implementation of the Psi_T = sech(a*x) trial wave function suitable for the simple harmonic osscilat...
Definition: wavefunction.h:58
double PsiTrial(const int)
The value of the trial wave function.
SechWaveFunction(const Path &, LookupTable &_lookup, string _name="SHO sech")
Constructor.
~SechWaveFunction()
Destructor.
Implementation of the Sutherland model exact wavefunction.
Definition: wavefunction.h:136
SutherlandWaveFunction(const Path &, LookupTable &_lookup, double, string _name="Sutherland")
Constructor.
~SutherlandWaveFunction()
Destructor.
double PsiTrial(const double r)
The 2-body trial wavefunction.
Definition: wavefunction.h:143
Holds a base class that all trial wave function classes will be derived from.
Definition: wavefunction.h:26
virtual double PsiTrial(const int)
The Constant Trial Wave Function.
Definition: wavefunction.h:36
LookupTable & lookup
We need a non-constant reference for updates.
Definition: wavefunction.h:45
virtual ~WaveFunctionBase()
Empty base constructor.
string name
Name of the trial wave function.
Definition: wavefunction.h:33
WaveFunctionBase(const Path &, LookupTable &_lookup, string _name="constant")
Setup the path data members for the constant trial wavefunction.
const Path & path
A reference to the paths.
Definition: wavefunction.h:41
TinyVector< int, 2 > beadLocator
time-slice,bead-number world line index
Definition: common.h:117
ConstantParameters class definition.
LookupTable class definition.