#include <QMCThreeBodyJastrow.h>
Public Member Functions | |
QMCThreeBodyJastrow () | |
~QMCThreeBodyJastrow () | |
void | initialize (QMCInput *input) |
Initializes the class with the data controlling the calculation. | |
void | evaluate (QMCJastrowParameters &JP, QMCWalkerData *wData, Array2D< double > &X) |
Evaluates the three body Jastrow function and its derivatives at X using a given set of QMCJastrowParameters. | |
double | get_p_a_ln (int ai) |
Partial derivative of the natural log of this function with respect to parameter ai. | |
Array2D< double > * | get_p2_xa_ln (int ai) |
Second partial derivative of the natural log of this function with respect to parameters x and ai. | |
double | get_p3_xxa_ln (int ai) |
Third partial derivative of the natural log of this function with respect to parameters x, x, and ai. | |
double | jastrowOnGrid (QMCJastrowParameters &JP, int E, Array2D< double > &R, Array2D< double > &grid, Array1D< double > &integrand) |
When calculating the overlap integral for psuedopotentials, we need to evaluate the ratio of the Jastrow at each grid point to the Jastrow at its original position. | |
Protected Attributes | |
QMCWalkerData * | wd |
Array1D< double > | p_a |
Array1D< Array2D< double > > | p2_xa |
Array1D< double > | p3_xxa |
Array1D < QMCThreeBodyCorrelationFunctionParameters > * | EupEdnNuclear |
Array1D < QMCThreeBodyCorrelationFunctionParameters > * | EupEupNuclear |
Array1D < QMCThreeBodyCorrelationFunctionParameters > * | EdnEdnNuclear |
Private Member Functions | |
void | packageDerivatives () |
void | updateOne (QMCJastrowParameters &JP, Array2D< double > &X) |
void | updateAll (QMCJastrowParameters &JP, Array2D< double > &X) |
void | collectForPair (int Electron1, int Electron2, int Nuclei, QMCThreeBodyCorrelationFunctionParameters *paramset) |
The wavefunction is assumed to be of the form
where is a wavefunction calculated using a standard QM method and
is a Jastrow type correlation function. are QMCCorrelationFunction describing the interactions of particles and . The sum can be broken up into electron-electron and electron-nuclear components. This class contains functions describing correlations between a nucleus and two electrons.
Definition at line 47 of file QMCThreeBodyJastrow.h.
QMCThreeBodyJastrow::QMCThreeBodyJastrow | ( | ) |
Definition at line 16 of file QMCThreeBodyJastrow.cpp.
QMCThreeBodyJastrow::~QMCThreeBodyJastrow | ( | ) |
Definition at line 20 of file QMCThreeBodyJastrow.cpp.
void QMCThreeBodyJastrow::initialize | ( | QMCInput * | input | ) |
Initializes the class with the data controlling the calculation.
input | input data for the calculation |
Definition at line 24 of file QMCThreeBodyJastrow.cpp.
Referenced by QMCJastrow::initialize().
void QMCThreeBodyJastrow::evaluate | ( | QMCJastrowParameters & | JP, | |
QMCWalkerData * | wData, | |||
Array2D< double > & | X | |||
) |
Evaluates the three body Jastrow function and its derivatives at X using a given set of QMCJastrowParameters.
JP | Jastrow parameters to use during the evaluation | |
X | dimensional configuration of electrons represented by a matrix |
Definition at line 43 of file QMCThreeBodyJastrow.cpp.
References updateAll(), updateOne(), wd, and QMCWalkerData::whichE.
Referenced by QMCJastrow::evaluate().
double QMCThreeBodyJastrow::get_p_a_ln | ( | int | ai | ) |
Partial derivative of the natural log of this function with respect to parameter ai.
Definition at line 38 of file QMCThreeBodyJastrow.cpp.
References p_a.
Referenced by QMCJastrow::evaluate().
Array2D< double > * QMCThreeBodyJastrow::get_p2_xa_ln | ( | int | ai | ) |
Second partial derivative of the natural log of this function with respect to parameters x and ai.
Definition at line 33 of file QMCThreeBodyJastrow.cpp.
References p2_xa.
Referenced by QMCJastrow::evaluate().
double QMCThreeBodyJastrow::get_p3_xxa_ln | ( | int | ai | ) |
Third partial derivative of the natural log of this function with respect to parameters x, x, and ai.
Definition at line 28 of file QMCThreeBodyJastrow.cpp.
References p3_xxa.
Referenced by QMCJastrow::evaluate().
double QMCThreeBodyJastrow::jastrowOnGrid | ( | QMCJastrowParameters & | JP, | |
int | E, | |||
Array2D< double > & | R, | |||
Array2D< double > & | grid, | |||
Array1D< double > & | integrand | |||
) |
When calculating the overlap integral for psuedopotentials, we need to evaluate the ratio of the Jastrow at each grid point to the Jastrow at its original position.
E | is the index of the electron being moved to the different grid points | |
R | the array of all electron positions | |
grid | the grid points for electron E | |
integrand | the value of the Jastrow at each of the grid points |
Definition at line 190 of file QMCThreeBodyJastrow.cpp.
References QMCMolecule::Atom_Labels, QMCMolecule::Atom_Positions, Array2D< T >::dim1(), Array1D< T >::dim1(), EdnEdnNuclear, EupEdnNuclear, EupEupNuclear, QMCJastrowParameters::getElectronDownElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronUpNuclearParameters(), QMCThreeBodyCorrelationFunction::getFunctionValue(), QMCJastrowParameters::getNucleiTypes(), QMCMolecule::getNumberAtoms(), QMCWavefunction::getNumberElectrons(), globalInput, QMCInput::Molecule, MathFunctions::rij(), and QMCInput::WF.
Referenced by QMCPotential_Energy::evaluatePsuedoPotential().
void QMCThreeBodyJastrow::packageDerivatives | ( | ) | [private] |
Definition at line 468 of file QMCThreeBodyJastrow.cpp.
References Array1D< T >::allocate(), QMCFlags::calculate_Derivatives, Array1D< T >::dim1(), EdnEdnNuclear, EupEdnNuclear, EupEupNuclear, QMCInput::flags, QMCWavefunction::getNumberElectrons(), QMCJastrowParameters::getNumberNEdnEdnParameters(), QMCJastrowParameters::getNumberNEupEdnParameters(), QMCJastrowParameters::getNumberNEupEupParameters(), globalInput, QMCInput::JP, QMCFlags::link_NEE_Jastrows, QMCFlags::optimize_NEE_Jastrows, p2_xa, p3_xxa, p_a, QMCThreeBodyCorrelationFunctionParameters::totalDerivativesAccumulate(), QMCThreeBodyCorrelationFunctionParameters::totalDerivativesToFree(), and QMCInput::WF.
Referenced by updateAll().
void QMCThreeBodyJastrow::updateOne | ( | QMCJastrowParameters & | JP, | |
Array2D< double > & | X | |||
) | [private] |
Definition at line 54 of file QMCThreeBodyJastrow.cpp.
References QMCMolecule::Atom_Labels, collectForPair(), Array1D< T >::deallocate(), Array1D< T >::dim1(), Array2D< T >::dim1(), EdnEdnNuclear, EupEdnNuclear, EupEupNuclear, QMCJastrowParameters::getElectronDownElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronUpNuclearParameters(), QMCJastrowParameters::getNucleiTypes(), QMCMolecule::getNumberAtoms(), QMCWavefunction::getNumberElectrons(), globalInput, QMCInput::Molecule, QMCWalkerData::riA, QMCWalkerData::riA_uvec, QMCWalkerData::U, QMCWalkerData::U_x, QMCWalkerData::U_xx, QMCWalkerData::UijA, QMCWalkerData::UijA_x1, QMCWalkerData::UijA_x2, QMCWalkerData::UijA_xx, wd, QMCInput::WF, and QMCWalkerData::whichE.
Referenced by evaluate().
void QMCThreeBodyJastrow::updateAll | ( | QMCJastrowParameters & | JP, | |
Array2D< double > & | X | |||
) | [private] |
Definition at line 289 of file QMCThreeBodyJastrow.cpp.
References QMCMolecule::Atom_Labels, collectForPair(), Array1D< T >::deallocate(), Array1D< T >::dim1(), Array2D< T >::dim1(), EdnEdnNuclear, EupEdnNuclear, EupEupNuclear, QMCJastrowParameters::getElectronDownElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronDownNuclearParameters(), QMCJastrowParameters::getElectronUpElectronUpNuclearParameters(), QMCJastrowParameters::getNucleiTypes(), QMCMolecule::getNumberAtoms(), QMCWavefunction::getNumberElectrons(), globalInput, QMCInput::Molecule, packageDerivatives(), QMCWalkerData::riA, QMCWalkerData::riA_uvec, QMCWalkerData::U, QMCWalkerData::U_x, QMCWalkerData::U_xx, QMCWalkerData::UijA, QMCWalkerData::UijA_x1, QMCWalkerData::UijA_x2, QMCWalkerData::UijA_xx, wd, and QMCInput::WF.
Referenced by evaluate().
void QMCThreeBodyJastrow::collectForPair | ( | int | Electron1, | |
int | Electron2, | |||
int | Nuclei, | |||
QMCThreeBodyCorrelationFunctionParameters * | paramset | |||
) | [inline, private] |
Definition at line 405 of file QMCThreeBodyJastrow.cpp.
References QMCFlags::calculate_Derivatives, QMCThreeBodyCorrelationFunction::evaluate(), QMCInput::flags, QMCThreeBodyCorrelationFunction::get_p2_xa(), QMCThreeBodyCorrelationFunction::get_p3_xxa(), QMCThreeBodyCorrelationFunction::get_p_a(), QMCThreeBodyCorrelationFunction::getElectron1Gradient(), QMCThreeBodyCorrelationFunction::getElectron2Gradient(), QMCThreeBodyCorrelationFunction::getFunctionValue(), QMCThreeBodyCorrelationFunction::getLaplacianValue(), QMCThreeBodyCorrelationFunctionParameters::getNumberOfTotalParameters(), QMCThreeBodyCorrelationFunctionParameters::getThreeBodyCorrelationFunction(), globalInput, IeeeMath::isNaN(), QMCThreeBodyCorrelationFunctionParameters::isUsed(), QMCFlags::optimize_NEE_Jastrows, QMCThreeBodyCorrelationFunction::print(), QMCThreeBodyCorrelationFunctionParameters::pt2_xa, QMCThreeBodyCorrelationFunctionParameters::pt3_xxa, QMCThreeBodyCorrelationFunctionParameters::pt_a, QMCWalkerData::riA, QMCWalkerData::riA_uvec, QMCWalkerData::rij, QMCWalkerData::rij_uvec, QMCThreeBodyCorrelationFunction::setElectron(), QMCWalkerData::UijA, QMCWalkerData::UijA_x1, QMCWalkerData::UijA_x2, QMCWalkerData::UijA_xx, and wd.
Referenced by updateAll(), and updateOne().
QMCWalkerData* QMCThreeBodyJastrow::wd [protected] |
Definition at line 108 of file QMCThreeBodyJastrow.h.
Referenced by collectForPair(), evaluate(), updateAll(), and updateOne().
Array1D<double> QMCThreeBodyJastrow::p_a [protected] |
Definition at line 110 of file QMCThreeBodyJastrow.h.
Referenced by get_p_a_ln(), and packageDerivatives().
Array1D< Array2D<double> > QMCThreeBodyJastrow::p2_xa [protected] |
Definition at line 111 of file QMCThreeBodyJastrow.h.
Referenced by get_p2_xa_ln(), and packageDerivatives().
Array1D<double> QMCThreeBodyJastrow::p3_xxa [protected] |
Definition at line 112 of file QMCThreeBodyJastrow.h.
Referenced by get_p3_xxa_ln(), and packageDerivatives().
Definition at line 114 of file QMCThreeBodyJastrow.h.
Referenced by jastrowOnGrid(), packageDerivatives(), updateAll(), and updateOne().
Definition at line 115 of file QMCThreeBodyJastrow.h.
Referenced by jastrowOnGrid(), packageDerivatives(), updateAll(), and updateOne().
Definition at line 116 of file QMCThreeBodyJastrow.h.
Referenced by jastrowOnGrid(), packageDerivatives(), updateAll(), and updateOne().