Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

FreeParticleNodes Class Reference

Free particle nodes. More...

#include <FreeParticleNodes.h>

Inheritance diagram for FreeParticleNodes:

NodeModel List of all members.

Public Types

typedef tvmet::Matrix< double,
NDIM, NDIM > 
Mat
typedef blitz::Array< double, 2 > Matrix
typedef blitz::Array< Vec, 2 > VMatrix
typedef blitz::Array< Mat, 2 > MMatrix
typedef blitz::Array< double, 1 > Array
typedef blitz::Array< int, 1 > IArray
typedef blitz::ColumnMajorArray< 2 > ColMajor

Public Member Functions

 FreeParticleNodes (const SimulationInfo &, const Species &, const double temperature, const int maxlevel)
 Constructor.

virtual ~FreeParticleNodes ()
 Virtual destructor.

virtual double evaluate (const VArray &r1, const VArray &r2, const int islice)
 Evaluate the density matrix function, returning the value.

virtual void evaluateDistance (const VArray &r1, const VArray &r2, const int islice, Array &d1, Array &d2)
 Evaluate distance to the node in units of $ \sqrt{\tau/2m}$.

virtual void evaluateGradLogDist (const VArray &r1, const VArray &r2, const int islice, VMatrix &gradd1, VMatrix &gradd2, const Array &d1, const Array &d2)
 Evaluate gradient of log of the distance to the node in units of $ \sqrt{\tau/2m}$.


Private Attributes

const double tau
 The time step.

const double mass
 The mass.

const int npart
 Number of particles of this type of fermion.

const int ifirst
 Index of first particle of this type of fermion.

int nslice
 Number of slices.

std::vector< Matrix * > matrix
 The inverse slater matricies.

VMatrix gradmat
 Gradient of the slater determinant.

IArray ipiv
 Matrix diagonalization arrays.

const int lwork
Array work
SuperCellcell
 The SuperCell.

std::vector< PeriodicGaussian * > pg
 A periodic gaussian.

bool notMySpecies
 Flag for checking if this species is being moved.

VArray gradArray1
 Storage for first derivatives needed for forces.

VArray gradArray2
 Storage for first derivatives needed for forces.


Detailed Description

Free particle nodes.

We define the node model as a slater determinant of density matricies of single, free particles,

\[\rho_T(R,R')=\operatorname{det}|\rho(r_j,r_i)|,\]

where

\[\rho(r_j,r_i)=\exp\left(-\frac{m|r_j-r_i|^2}{2\tau}\right).\]

For periodic boundary conditions, we use must use a PeriodicGaussian. Note that the normalization factor is not needed for a NodeModel.

We estimate the distance to the node as the inverse log gradient, $d_i\approx\rho_T/|\nabla_{R_i}\rho_T|$.

The gradient of the distance is given by first and second derivatives of the trial density matrix,

\[ \frac{\nabla_i d}{d}= \frac{\nabla_i \rho}{\rho} -d^2 \sum_j \frac{\overleftarrow{\vec{\nabla}}_{i,j}\rho}{\rho}\cdot \frac{\vec{\nabla}_j\rho}{\rho} -d^2 \sum_j \frac{\overleftarrow{\vec{\nabla}}'_{i,j}\rho}{\rho}\cdot \frac{\vec{\nabla}'_j\rho}{\rho}. \]

where the indicies refer to particles.

Author:
John Shumway

Definition at line 39 of file FreeParticleNodes.h.


Member Typedef Documentation

typedef blitz::Array<double,1> FreeParticleNodes::Array
 

Reimplemented from NodeModel.

Definition at line 45 of file FreeParticleNodes.h.

Referenced by evaluateDistance(), and evaluateGradLogDist().

typedef blitz::ColumnMajorArray<2> FreeParticleNodes::ColMajor
 

Definition at line 47 of file FreeParticleNodes.h.

Referenced by FreeParticleNodes().

typedef blitz::Array<int,1> FreeParticleNodes::IArray
 

Definition at line 46 of file FreeParticleNodes.h.

typedef tvmet::Matrix<double,NDIM,NDIM> FreeParticleNodes::Mat
 

Definition at line 41 of file FreeParticleNodes.h.

Referenced by evaluateGradLogDist().

typedef blitz::Array<double,2> FreeParticleNodes::Matrix
 

Definition at line 42 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), evaluateGradLogDist(), and FreeParticleNodes().

typedef blitz::Array<Mat,2> FreeParticleNodes::MMatrix
 

Definition at line 44 of file FreeParticleNodes.h.

typedef blitz::Array<Vec,2> FreeParticleNodes::VMatrix
 

Reimplemented from NodeModel.

Definition at line 43 of file FreeParticleNodes.h.

Referenced by evaluateGradLogDist().


Constructor & Destructor Documentation

FreeParticleNodes::FreeParticleNodes const SimulationInfo ,
const Species ,
const double  temperature,
const int  maxlevel
 

Constructor.

Definition at line 21 of file FreeParticleNodes.cc.

References SuperCell::a, cell, ColMajor, mass, Matrix, matrix, npart, and pg.

FreeParticleNodes::~FreeParticleNodes  )  [virtual]
 

Virtual destructor.

Definition at line 44 of file FreeParticleNodes.cc.

References pg.


Member Function Documentation

double FreeParticleNodes::evaluate const VArray r1,
const VArray r2,
const int  islice
[virtual]
 

Evaluate the density matrix function, returning the value.

Implements NodeModel.

Definition at line 48 of file FreeParticleNodes.cc.

References cell, DGETRF_F77, DGETRI_F77, ifirst, ipiv, lwork, matrix, Matrix, npart, SuperCell::pbc(), pg, NodeModel::Vec, and work.

void FreeParticleNodes::evaluateDistance const VArray r1,
const VArray r2,
const int  islice,
Array d1,
Array d2
[virtual]
 

Evaluate distance to the node in units of $ \sqrt{\tau/2m}$.

Implements NodeModel.

Definition at line 76 of file FreeParticleNodes.cc.

References Array, cell, gradArray1, gradArray2, ifirst, mass, matrix, Matrix, npart, SuperCell::pbc(), pg, tau, and NodeModel::Vec.

void FreeParticleNodes::evaluateGradLogDist const VArray r1,
const VArray r2,
const int  islice,
VMatrix gradd1,
VMatrix gradd2,
const Array d1,
const Array d2
[virtual]
 

Evaluate gradient of log of the distance to the node in units of $ \sqrt{\tau/2m}$.

Implements NodeModel.

Definition at line 114 of file FreeParticleNodes.cc.

References Array, cell, gradArray1, gradArray2, ifirst, mass, Mat, matrix, Matrix, npart, SuperCell::pbc(), pg, tau, NodeModel::Vec, and VMatrix.


Member Data Documentation

SuperCell& FreeParticleNodes::cell [private]
 

The SuperCell.

Definition at line 84 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), evaluateGradLogDist(), and FreeParticleNodes().

VArray FreeParticleNodes::gradArray1 [mutable, private]
 

Storage for first derivatives needed for forces.

Definition at line 90 of file FreeParticleNodes.h.

Referenced by evaluateDistance(), and evaluateGradLogDist().

VArray FreeParticleNodes::gradArray2 [mutable, private]
 

Storage for first derivatives needed for forces.

Definition at line 90 of file FreeParticleNodes.h.

Referenced by evaluateDistance(), and evaluateGradLogDist().

VMatrix FreeParticleNodes::gradmat [mutable, private]
 

Gradient of the slater determinant.

Definition at line 78 of file FreeParticleNodes.h.

const int FreeParticleNodes::ifirst [private]
 

Index of first particle of this type of fermion.

Definition at line 72 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), and evaluateGradLogDist().

IArray FreeParticleNodes::ipiv [mutable, private]
 

Matrix diagonalization arrays.

Definition at line 80 of file FreeParticleNodes.h.

Referenced by evaluate().

const int FreeParticleNodes::lwork [private]
 

Definition at line 81 of file FreeParticleNodes.h.

Referenced by evaluate().

const double FreeParticleNodes::mass [private]
 

The mass.

Definition at line 68 of file FreeParticleNodes.h.

Referenced by evaluateDistance(), evaluateGradLogDist(), and FreeParticleNodes().

std::vector<Matrix*> FreeParticleNodes::matrix [mutable, private]
 

The inverse slater matricies.

Definition at line 76 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), evaluateGradLogDist(), and FreeParticleNodes().

bool FreeParticleNodes::notMySpecies [private]
 

Flag for checking if this species is being moved.

Definition at line 88 of file FreeParticleNodes.h.

const int FreeParticleNodes::npart [private]
 

Number of particles of this type of fermion.

Definition at line 70 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), evaluateGradLogDist(), and FreeParticleNodes().

int FreeParticleNodes::nslice [private]
 

Number of slices.

Definition at line 74 of file FreeParticleNodes.h.

std::vector<PeriodicGaussian*> FreeParticleNodes::pg [private]
 

A periodic gaussian.

Definition at line 86 of file FreeParticleNodes.h.

Referenced by evaluate(), evaluateDistance(), evaluateGradLogDist(), FreeParticleNodes(), and ~FreeParticleNodes().

const double FreeParticleNodes::tau [private]
 

The time step.

Definition at line 66 of file FreeParticleNodes.h.

Referenced by evaluateDistance(), and evaluateGradLogDist().

Array FreeParticleNodes::work [mutable, private]
 

Definition at line 82 of file FreeParticleNodes.h.

Referenced by evaluate().


The documentation for this class was generated from the following files:
Generated on Thu Jun 22 12:20:01 2006 for PI: Path Integral Monte Carlo Program by doxygen 1.3.4