![]() |
QMCPACK
|
A composite Orbital. More...
Public Member Functions | |
LatticeGaussianProduct (ParticleSet ¢ers, ParticleSet &ptcls) | |
~LatticeGaussianProduct () override | |
std::string | getClassName () const override |
return class name More... | |
LogValue | evaluateLog (const ParticleSet &P, ParticleSet::ParticleGradient &G, ParticleSet::ParticleLaplacian &L) override |
PsiValue | ratio (ParticleSet &P, int iat) override |
evaluate the ratio ![]() | |
void | acceptMove (ParticleSet &P, int iat, bool safe_to_delay=false) override |
a move for iat-th particle is accepted. More... | |
void | restore (int iat) override |
If a move for iat-th particle is rejected, restore to the content. More... | |
void | registerData (ParticleSet &P, WFBufferType &buf) override |
equivalent to evalaute with additional data management More... | |
LogValue | updateBuffer (ParticleSet &P, WFBufferType &buf, bool fromscratch) override |
For particle-by-particle move. More... | |
void | copyFromBuffer (ParticleSet &P, WFBufferType &buf) override |
copy the current data from a buffer More... | |
GradType | evalGrad (ParticleSet &P, int iat) override |
return the current gradient for the iat-th particle More... | |
PsiValue | ratioGrad (ParticleSet &P, int iat, GradType &grad_iat) override |
evaluate the ratio of the new to old WaveFunctionComponent value and the new gradient More... | |
std::unique_ptr< WaveFunctionComponent > | makeClone (ParticleSet &tqp) const override |
make clone More... | |
void | evaluateDerivatives (ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi) override |
void | evaluateLogAndStore (const ParticleSet &P, ParticleSet::ParticleGradient &dG, ParticleSet::ParticleLaplacian &dL) |
![]() | |
const LogValue & | get_log_value () const |
WaveFunctionComponent (const std::string &obj_name="") | |
default constructor More... | |
virtual | ~WaveFunctionComponent () |
default destructor More... | |
virtual void | checkSanity () const |
Validate the internal consistency of the object. More... | |
const std::string & | getName () const |
return object name More... | |
PsiValue | getValue () const |
assembles the full value More... | |
virtual bool | isFermionic () const |
true, if this component is fermionic More... | |
virtual bool | isMultiDet () const |
true, if this component is multi-determinant More... | |
virtual void | checkOutVariables (const opt_variables_type &active) |
check out variational optimizable variables More... | |
virtual void | registerTWFFastDerivWrapper (const ParticleSet &P, TWFFastDerivWrapper &twf) const |
Register the component with the TWFFastDerivWrapper wrapper. More... | |
virtual void | mw_evaluateLog (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, const RefVector< ParticleSet::ParticleGradient > &G_list, const RefVector< ParticleSet::ParticleLaplacian > &L_list) const |
evaluate from scratch the same type WaveFunctionComponent of multiple walkers More... | |
virtual void | recompute (const ParticleSet &P) |
recompute the value of the WaveFunctionComponents which require critical accuracy. More... | |
virtual void | mw_recompute (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, const std::vector< bool > &recompute) const |
virtual void | evaluateHessian (ParticleSet &P, HessVector &grad_grad_psi_all) |
virtual void | prepareGroup (ParticleSet &P, int ig) |
Prepare internal data for updating WFC correspond to a particle group It should be called before moving particles of a given group. More... | |
virtual void | mw_prepareGroup (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int ig) const |
virtual GradType | evalGradWithSpin (ParticleSet &P, int iat, ComplexType &spingrad) |
return the current spin gradient for the iat-th particle Default implementation assumes that WaveFunctionComponent does not explicitly depend on Spin. More... | |
template<CoordsType CT> | |
void | mw_evalGrad (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, const int iat, TWFGrads< CT > &grads_now) const |
compute the current gradients for the iat-th particle of multiple walkers More... | |
virtual void | mw_evalGrad (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< GradType > &grad_now) const |
compute the current gradients for the iat-th particle of multiple walkers More... | |
virtual GradType | evalGradSource (ParticleSet &P, ParticleSet &source, int iat) |
return the logarithmic gradient for the iat-th particle of the source particleset More... | |
virtual GradType | evalGradSource (ParticleSet &P, ParticleSet &source, int iat, TinyVector< ParticleSet::ParticleGradient, OHMMS_DIM > &grad_grad, TinyVector< ParticleSet::ParticleLaplacian, OHMMS_DIM > &lapl_grad) |
Adds the gradient w.r.t. More... | |
virtual PsiValue | ratioGradWithSpin (ParticleSet &P, int iat, GradType &grad_iat, ComplexType &spingrad_iat) |
evaluate the ratio of the new to old WaveFunctionComponent value and the new spin gradient Default implementation assumes that WaveFunctionComponent does not explicitly depend on Spin. More... | |
template<CoordsType CT> | |
void | mw_ratioGrad (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, TWFGrads< CT > &grad_new) const |
virtual void | mw_ratioGrad (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, std::vector< GradType > &grad_new) const |
compute the ratio of the new to old WaveFunctionComponent value and the new gradient of multiple walkers More... | |
virtual void | mw_accept_rejectMove (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, const std::vector< bool > &isAccepted, bool safe_to_delay=false) const |
moves of the iat-th particle on some walkers in a batch is accepted. More... | |
virtual void | completeUpdates () |
complete all the delayed or asynchronous operations before leaving the p-by-p move region. More... | |
virtual void | mw_completeUpdates (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list) const |
complete all the delayed or asynchronous operations for all the walkers in a batch before leaving the p-by-p move region. More... | |
virtual void | mw_calcRatio (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios) const |
compute the ratio of the new to old WaveFunctionComponent value of multiple walkers More... | |
virtual LogValue | evaluateGL (const ParticleSet &P, ParticleSet::ParticleGradient &G, ParticleSet::ParticleLaplacian &L, bool fromscratch) |
compute gradients and laplacian of the TWF with respect to each particle. More... | |
virtual void | mw_evaluateGL (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, const RefVector< ParticleSet::ParticleGradient > &G_list, const RefVector< ParticleSet::ParticleLaplacian > &L_list, bool fromscratch) const |
evaluate gradients and laplacian of the same type WaveFunctionComponent of multiple walkers More... | |
virtual void | createResource (ResourceCollection &collection) const |
initialize a shared resource and hand it to a collection More... | |
virtual void | acquireResource (ResourceCollection &collection, const RefVectorWithLeader< WaveFunctionComponent > &wfc_list) const |
acquire a shared resource from a collection More... | |
virtual void | releaseResource (ResourceCollection &collection, const RefVectorWithLeader< WaveFunctionComponent > &wfc_list) const |
return a shared resource to a collection More... | |
virtual RealType | KECorrection () |
Return the Chiesa kinetic energy correction. More... | |
virtual bool | isOptimizable () const |
if true, this contains optimizable components More... | |
virtual void | extractOptimizableObjectRefs (UniqueOptObjRefs &opt_obj_refs) |
extract underlying OptimizableObject references More... | |
virtual void | evaluateDerivatives (ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi)=0 |
Compute the derivatives of both the log of the wavefunction and kinetic energy with respect to optimizable parameters. More... | |
virtual void | evaluateDerivativesWF (ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi) |
Compute the derivatives of the log of the wavefunction with respect to optimizable parameters. More... | |
virtual void | evaluateGradDerivatives (const ParticleSet::ParticleGradient &G_in, std::vector< ValueType > &dgradlogpsi) |
Calculates the derivatives of ![]() | |
virtual void | finalizeOptimization () |
virtual void | evaluateRatiosAlltoOne (ParticleSet &P, std::vector< ValueType > &ratios) |
evaluate the ratios of one virtual move with respect to all the particles More... | |
virtual void | evaluateRatios (const VirtualParticleSet &VP, std::vector< ValueType > &ratios) |
evaluate ratios to evaluate the non-local PP More... | |
virtual void | evaluateSpinorRatios (const VirtualParticleSet &VP, const std::pair< ValueVector, ValueVector > &spinor_multiplier, std::vector< ValueType > &ratios) |
Used by SOECPComponent for faster SOC evaluation. More... | |
virtual void | mw_evaluateRatios (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< const VirtualParticleSet > &vp_list, std::vector< std::vector< ValueType >> &ratios) const |
evaluate ratios to evaluate the non-local PP multiple walkers More... | |
virtual void | evaluateDerivRatios (const VirtualParticleSet &VP, const opt_variables_type &optvars, std::vector< ValueType > &ratios, Matrix< ValueType > &dratios) |
evaluate ratios to evaluate the non-local PP More... | |
virtual void | mw_evalGradWithSpin (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< GradType > &grad_now, std::vector< ComplexType > &spingrad_now) const |
compute the current gradients and spin gradients for the iat-th particle of multiple walkers More... | |
virtual void | mw_ratioGradWithSpin (const RefVectorWithLeader< WaveFunctionComponent > &wfc_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, std::vector< GradType > &grad_new, std::vector< ComplexType > &spingrad_new) const |
compute the ratio of the new to old WaveFunctionComponent value and the new gradient/spingradient of multiple walkers More... | |
Public Attributes | |
std::vector< RealType > | ParticleAlpha |
std::vector< int > | ParticleCenter |
![]() | |
int | UpdateMode |
current update mode More... | |
opt_variables_type | myVars |
list of variables this WaveFunctionComponent handles More... | |
size_t | Bytes_in_WFBuffer |
Bytes in WFBuffer. More... | |
Private Attributes | |
ParticleAttrib< RealType > | U |
ParticleAttrib< RealType > | d2U |
ParticleAttrib< PosType > | dU |
RealType * | FirstAddressOfdU |
RealType * | LastAddressOfdU |
int | myTableID |
table index More... | |
ParticleSet & | CenterRef |
orbital centers More... | |
int | NumTargetPtcls |
int | NumCenters |
RealType | curVal |
RealType | curLap |
PosType | curGrad |
A composite Orbital.
Definition at line 27 of file LatticeGaussianProduct.h.
LatticeGaussianProduct | ( | ParticleSet & | centers, |
ParticleSet & | ptcls | ||
) |
Definition at line 24 of file LatticeGaussianProduct.cpp.
References ParticleSet::addTable(), LatticeGaussianProduct::CenterRef, LatticeGaussianProduct::d2U, LatticeGaussianProduct::dU, LatticeGaussianProduct::FirstAddressOfdU, ParticleSet::getTotalNum(), LatticeGaussianProduct::LastAddressOfdU, LatticeGaussianProduct::myTableID, LatticeGaussianProduct::NumCenters, LatticeGaussianProduct::NumTargetPtcls, OHMMS_DIM, Vector< T, Alloc >::resize(), and LatticeGaussianProduct::U.
|
overridedefault |
|
overridevirtual |
a move for iat-th particle is accepted.
Update the current content.
P | target ParticleSet |
iat | index of the particle whose new position was proposed |
safe_to_delay | if true, delayed accept is safe. |
Implements WaveFunctionComponent.
Definition at line 127 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::curGrad, LatticeGaussianProduct::curLap, LatticeGaussianProduct::curVal, LatticeGaussianProduct::d2U, LatticeGaussianProduct::dU, and LatticeGaussianProduct::U.
|
overridevirtual |
copy the current data from a buffer
P | the ParticleSet to operate on |
buf | PooledData which stores the data for each walker |
copyFromBuffer uses the data stored by registerData
Implements WaveFunctionComponent.
Definition at line 191 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::d2U, Vector< T, Alloc >::first_address(), LatticeGaussianProduct::FirstAddressOfdU, PooledMemory< T_scalar, Alloc >::get(), Vector< T, Alloc >::last_address(), LatticeGaussianProduct::LastAddressOfdU, and LatticeGaussianProduct::U.
|
overridevirtual |
return the current gradient for the iat-th particle
P | quantum particle set |
iat | particle index |
Reimplemented from WaveFunctionComponent.
Definition at line 97 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::curGrad, ParticleSet::getDistTableAB(), LatticeGaussianProduct::myTableID, LatticeGaussianProduct::ParticleAlpha, and LatticeGaussianProduct::ParticleCenter.
|
inlineoverride |
Definition at line 73 of file LatticeGaussianProduct.h.
|
overridevirtual |
P | input configuration containing N particles |
G | a vector containing N gradients |
L | a vector containing N laplacians |
Upon exit, the gradient and the laplacian
are accumulated. While evaluating the value of the Jastrow for a set of particles add the gradient and laplacian contribution of the Jastrow to G(radient) and L(aplacian) for local energy calculations such that
and
Implements WaveFunctionComponent.
Definition at line 52 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::d2U, LatticeGaussianProduct::dU, ParticleSet::getDistTableAB(), WaveFunctionComponent::log_value_, LatticeGaussianProduct::myTableID, LatticeGaussianProduct::NumTargetPtcls, LatticeGaussianProduct::ParticleAlpha, and LatticeGaussianProduct::U.
void evaluateLogAndStore | ( | const ParticleSet & | P, |
ParticleSet::ParticleGradient & | dG, | ||
ParticleSet::ParticleLaplacian & | dL | ||
) |
Definition at line 134 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::d2U, LatticeGaussianProduct::dU, ParticleSet::getDistTableAB(), WaveFunctionComponent::log_value_, LatticeGaussianProduct::myTableID, LatticeGaussianProduct::NumTargetPtcls, LatticeGaussianProduct::ParticleAlpha, and LatticeGaussianProduct::U.
Referenced by LatticeGaussianProduct::registerData(), and LatticeGaussianProduct::updateBuffer().
|
inlineoverridevirtual |
return class name
Implements WaveFunctionComponent.
Definition at line 49 of file LatticeGaussianProduct.h.
|
overridevirtual |
make clone
tqp | target Quantum ParticleSet |
deepcopy | if true, make a decopy |
If not true, return a proxy class
Reimplemented from WaveFunctionComponent.
Definition at line 198 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::CenterRef, LatticeGaussianProduct::ParticleAlpha, and LatticeGaussianProduct::ParticleCenter.
|
overridevirtual |
evaluate the ratio
P | active particle set |
iat | particle that has been moved. |
Implements WaveFunctionComponent.
Definition at line 85 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::curVal, qmcplusplus::exp(), ParticleSet::getDistTableAB(), LatticeGaussianProduct::myTableID, LatticeGaussianProduct::ParticleAlpha, LatticeGaussianProduct::ParticleCenter, and LatticeGaussianProduct::U.
|
overridevirtual |
evaluate the ratio of the new to old WaveFunctionComponent value and the new gradient
P | the active ParticleSet |
iat | the index of a particle |
grad_iat | Gradient for the active particle |
Reimplemented from WaveFunctionComponent.
Definition at line 110 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::curGrad, LatticeGaussianProduct::curVal, qmcplusplus::exp(), ParticleSet::getDistTableAB(), LatticeGaussianProduct::myTableID, LatticeGaussianProduct::ParticleAlpha, LatticeGaussianProduct::ParticleCenter, and LatticeGaussianProduct::U.
|
overridevirtual |
equivalent to evalaute with additional data management
Implements WaveFunctionComponent.
Definition at line 165 of file LatticeGaussianProduct.cpp.
References PooledMemory< T_scalar, Alloc >::add(), Vector< T, Alloc >::begin(), LatticeGaussianProduct::d2U, Vector< T, Alloc >::end(), LatticeGaussianProduct::evaluateLogAndStore(), LatticeGaussianProduct::FirstAddressOfdU, ParticleSet::G, ParticleSet::L, LatticeGaussianProduct::LastAddressOfdU, and LatticeGaussianProduct::U.
|
overridevirtual |
If a move for iat-th particle is rejected, restore to the content.
iat | index of the particle whose new position was proposed |
Ye: hopefully we can gradually move away from restore
Implements WaveFunctionComponent.
Definition at line 125 of file LatticeGaussianProduct.cpp.
|
overridevirtual |
For particle-by-particle move.
Put the objects of this class in the walker buffer or forward the memory cursor.
P | particle set |
buf | Anonymous storage |
fromscratch | request recomputing the precision critical pieces of wavefunction from scratch |
Implements WaveFunctionComponent.
Definition at line 174 of file LatticeGaussianProduct.cpp.
References LatticeGaussianProduct::d2U, LatticeGaussianProduct::evaluateLogAndStore(), Vector< T, Alloc >::first_address(), LatticeGaussianProduct::FirstAddressOfdU, ParticleSet::G, ParticleSet::L, Vector< T, Alloc >::last_address(), LatticeGaussianProduct::LastAddressOfdU, WaveFunctionComponent::log_value_, PooledMemory< T_scalar, Alloc >::put(), and LatticeGaussianProduct::U.
|
private |
orbital centers
Definition at line 36 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::LatticeGaussianProduct(), and LatticeGaussianProduct::makeClone().
|
private |
Definition at line 39 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove(), LatticeGaussianProduct::evalGrad(), and LatticeGaussianProduct::ratioGrad().
|
private |
Definition at line 38 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove().
|
private |
Definition at line 38 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove(), LatticeGaussianProduct::ratio(), and LatticeGaussianProduct::ratioGrad().
|
private |
Definition at line 30 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove(), LatticeGaussianProduct::copyFromBuffer(), LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), LatticeGaussianProduct::LatticeGaussianProduct(), LatticeGaussianProduct::registerData(), and LatticeGaussianProduct::updateBuffer().
|
private |
Definition at line 31 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove(), LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), and LatticeGaussianProduct::LatticeGaussianProduct().
|
private |
Definition at line 32 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::copyFromBuffer(), LatticeGaussianProduct::LatticeGaussianProduct(), LatticeGaussianProduct::registerData(), and LatticeGaussianProduct::updateBuffer().
|
private |
Definition at line 32 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::copyFromBuffer(), LatticeGaussianProduct::LatticeGaussianProduct(), LatticeGaussianProduct::registerData(), and LatticeGaussianProduct::updateBuffer().
|
private |
table index
Definition at line 34 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::evalGrad(), LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), LatticeGaussianProduct::LatticeGaussianProduct(), LatticeGaussianProduct::ratio(), and LatticeGaussianProduct::ratioGrad().
|
private |
Definition at line 37 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::LatticeGaussianProduct().
|
private |
Definition at line 37 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), and LatticeGaussianProduct::LatticeGaussianProduct().
std::vector<RealType> ParticleAlpha |
Definition at line 42 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::evalGrad(), LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), LatticeGaussianProduct::makeClone(), LatticeGaussianProduct::ratio(), and LatticeGaussianProduct::ratioGrad().
std::vector<int> ParticleCenter |
Definition at line 43 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::evalGrad(), LatticeGaussianProduct::makeClone(), LatticeGaussianProduct::ratio(), and LatticeGaussianProduct::ratioGrad().
|
private |
Definition at line 30 of file LatticeGaussianProduct.h.
Referenced by LatticeGaussianProduct::acceptMove(), LatticeGaussianProduct::copyFromBuffer(), LatticeGaussianProduct::evaluateLog(), LatticeGaussianProduct::evaluateLogAndStore(), LatticeGaussianProduct::LatticeGaussianProduct(), LatticeGaussianProduct::ratio(), LatticeGaussianProduct::ratioGrad(), LatticeGaussianProduct::registerData(), and LatticeGaussianProduct::updateBuffer().