Path Integral Quantum Monte Carlo
Public Member Functions
AzizPotential Class Reference

Computes the value of the semi-empircal Aziz potential that is known to be accurate for He-4. More...

#include <potential.h>

+ Inheritance diagram for AzizPotential:
+ Collaboration diagram for AzizPotential:

Public Member Functions

 AzizPotential (const Container *)
 Constructor. More...
 
 ~AzizPotential ()
 Destructor.
 
double V (const dVec &)
 Return the aziz potential for separation r using a lookup table.
 
dVec gradV (const dVec &)
 Return the gradient of aziz potential for separation r using a lookup table.
 
double grad2V (const dVec &)
 Return the Laplacian of aziz potential for separation r using a lookup table.
 
- Public Member Functions inherited from PotentialBase
 PotentialBase ()
 Constructor.
 
virtual ~PotentialBase ()
 Destructor.
 
virtual double V (const dVec &, const dVec &)
 The effective potential for the pair product approximation.
 
virtual double dVdlambda (const dVec &, const dVec &)
 The derivative of the effective potential with respect to lambda and tau.
 
virtual double dVdtau (const dVec &, const dVec &)
 
virtual Array< dVec, 1 > initialConfig (const Container *, MTRand &, const int)
 Default Initial configuration of particles. More...
 
void output (const double)
 A debug method that output's the potential to a supplied separation. More...
 
virtual Array< double, 1 > getExcLen ()
 Array to hold data elements. More...
 
- Public Member Functions inherited from TabulatedPotential
 TabulatedPotential ()
 Constructor.
 
virtual ~TabulatedPotential ()
 Destructor.
 

Additional Inherited Members

- Data Fields inherited from PotentialBase
double tailV
 Tail correction factor.
 
- Protected Member Functions inherited from PotentialBase
double deltaSeparation (double sep1, double sep2) const
 Return the minimum image difference for 1D separations.
 
- Protected Member Functions inherited from TabulatedPotential
void initLookupTable (const double, const double)
 Given a discretization factor and the system size, create and fill the lookup tables for the potential and its derivative.
 
virtual double newtonGregory (const Array< double, 1 > &, const TinyVector< double, 2 > &, const double)
 Use the Newton-Gregory forward difference method to do a 2-point lookup on the potential table. More...
 
virtual double direct (const Array< double, 1 > &, const TinyVector< double, 2 > &, const double)
 Use a direct lookup for the potential table. More...
 
- Protected Attributes inherited from TabulatedPotential
Array< double, 1 > lookupV
 A potential lookup table.
 
Array< double, 1 > lookupdVdr
 A lookup table for dVint/dr.
 
Array< double, 1 > lookupd2Vdr2
 A lookup table for d2Vint/dr2.
 
double dr
 The discretization for the lookup table.
 
int tableLength
 The number of elements in the lookup table.
 
TinyVector< double, 2 > extV
 Extremal value of V.
 
TinyVector< double, 2 > extdVdr
 Extremal value of dV/dr.
 
TinyVector< double, 2 > extd2Vdr2
 Extremal value of d2V/dr2.
 

Detailed Description

Computes the value of the semi-empircal Aziz potential that is known to be accurate for He-4.

Definition at line 678 of file potential.h.

Constructor & Destructor Documentation

◆ AzizPotential()

AzizPotential::AzizPotential ( const Container _boxPtr)

Constructor.

Create the Aziz interaction potential. We use the standard 1979 values.

See also
R.A. Aziz et al. J. Chem. Phys. 70, 4330 (1979).

Definition at line 1475 of file potential.cpp.

1476 {
1477  /* Define all variables for the Aziz potential */
1478  /* R.A. Aziz et al. J. Chem. Phys. 70, 4330 (1979) */
1479  rm = 2.9673; // A
1480  A = 0.5448504E6;
1481  epsilon = 10.8; // K
1482  alpha = 13.353384;
1483  D = 1.241314;
1484  C6 = 1.3732412;
1485  C8 = 0.4253785;
1486  C10 = 0.1781;
1487 
1488  /* The extremal values are all zero here */
1489  extV = 0.0;
1490  extdVdr = 0.0;
1491  extd2Vdr2 = 0.0;
1492 
1493  /* We take the maximum possible separation */
1494  double L = _boxPtr->maxSep;
1495 
1496  /* Create the potential lookup tables */
1497  // initLookupTable(0.00005*rm,L);
1498  initLookupTable((1.0E-6)*rm,L);
1499 
1500  /* Now we compute the tail correction */
1501  double rmoL = rm / L;
1502  double rm3 = rm*rm*rm;
1503  double t1 = A*exp(-alpha*L/(2.0*rm))*rm*(8.0*rm*rm + 4.0*L*rm * alpha + L*L*alpha*alpha)
1504  / (4.0*alpha*alpha*alpha);
1505  double t2 = 8.0*C6*pow(rmoL,3.0)/3.0;
1506  double t3 = 32.0*C8*pow(rmoL,5.0)/5.0;
1507  double t4 = 128.0*C10*pow(rmoL,7.0)/7.0;
1508 
1509  tailV = 2.0*M_PI*epsilon*(t1 - rm3*(t2+t3+t4));
1510 }
double maxSep
The maximum possible separation for 2 beads on the same timeslice.
Definition: container.h:37
PotentialBase()
Constructor.
Definition: potential.cpp:25
double tailV
Tail correction factor.
Definition: potential.h:61
TabulatedPotential()
Constructor.
Definition: potential.cpp:149
TinyVector< double, 2 > extdVdr
Extremal value of dV/dr.
Definition: potential.h:94
TinyVector< double, 2 > extV
Extremal value of V.
Definition: potential.h:93
void initLookupTable(const double, const double)
Given a discretization factor and the system size, create and fill the lookup tables for the potentia...
Definition: potential.cpp:168
TinyVector< double, 2 > extd2Vdr2
Extremal value of d2V/dr2.
Definition: potential.h:95
+ Here is the call graph for this function:

The documentation for this class was generated from the following files: