16 #ifndef QMCPLUSPLUS_SLATERDETERMINANT_WITHBACKFLOW_H 17 #define QMCPLUSPLUS_SLATERDETERMINANT_WITHBACKFLOW_H 34 std::vector<std::unique_ptr<Determinant_t>> dets,
35 std::unique_ptr<BackflowTransformation> BF);
40 std::string
getClassName()
const override {
return "SlaterDetWithBackflow"; }
51 BFTrans->checkOutVariables(active);
52 for (
int i = 0; i <
Dets.size(); i++)
67 BFTrans->evaluatePbyPWithGrad(P, iat);
70 for (
int i = 0; i <
Dets.size(); ++i)
78 for (
int i = 0; i <
Dets.size(); ++i)
85 APP_ABORT(
"Need to implement SlaterDetWithBackflow::evalGradSource() \n");
95 APP_ABORT(
"Need to implement SlaterDetWithBackflow::evalGradSource() \n");
102 for (
int i = 0; i <
Dets.size(); i++)
109 for (
int i = 0; i <
Dets.size(); i++)
119 for (
int i = 0; i <
Dets.size(); ++i)
139 const std::vector<std::unique_ptr<Determinant_t>>
Dets;
141 const std::unique_ptr<BackflowTransformation>
BFTrans;
base class for Single-particle orbital sets
SPOSetPtr getPhi(int i=0) const
void extractOptimizableObjectRefs(UniqueOptObjRefs &opt_obj_refs) override
extract underlying OptimizableObject references
helper functions for EinsplineSetBuilder
QTBase::GradType GradType
void evaluateDerivatives(ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi) override
Compute the derivatives of both the log of the wavefunction and kinetic energy with respect to optimi...
void checkOutVariables(const opt_variables_type &active) override
check out variational optimizable variables
void copyFromBuffer(ParticleSet &P, WFBufferType &buf) override
For particle-by-particle move.
Walker_t::WFBuffer_t WFBufferType
PsiValue ratio(ParticleSet &P, int iat) override
evaluate the ratio of the new to old WaveFunctionComponent value
void acceptMove(ParticleSet &P, int iat, bool safe_to_delay=false) override
a move for iat-th particle is accepted.
~SlaterDetWithBackflow() override
destructor
GradType evalGradSource(ParticleSet &P, ParticleSet &src, int iat, TinyVector< ParticleSet::ParticleGradient, OHMMS_DIM > &grad_grad, TinyVector< ParticleSet::ParticleLaplacian, OHMMS_DIM > &lapl_grad) override
Adds the gradient w.r.t.
Attaches a unit to a Vector for IO.
std::unique_ptr< WaveFunctionComponent > makeClone(ParticleSet &tqp) const override
make clone
void evaluateRatiosAlltoOne(ParticleSet &P, std::vector< ValueType > &ratios) override
evaluate the ratios of one virtual move with respect to all the particles
void restore(int iat) override
If a move for iat-th particle is rejected, restore to the content.
An abstract class for a component of a many-body trial wave function.
Specialized paritlce class for atomistic simulations.
std::string getClassName() const override
return class name
const std::unique_ptr< BackflowTransformation > BFTrans
backflow transformation
LogValue updateBuffer(ParticleSet &P, WFBufferType &buf, bool fromscratch=false) override
For particle-by-particle move.
QTBase::ValueType ValueType
void testDerivGL(ParticleSet &P)
SlaterDetWithBackflow(ParticleSet &targetPtcl, std::vector< std::unique_ptr< Determinant_t >> dets, std::unique_ptr< BackflowTransformation > BF)
constructor
bool isFermionic() const final
true, if this component is fermionic
bool isOptimizable() const override
if true, this contains optimizable components
class to handle a set of variables that can be modified during optimizations
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
QTFull::ValueType PsiValue
void registerData(ParticleSet &P, WFBufferType &buf) override
For particle-by-particle move.
class to handle determinants with backflow
GradType evalGradSource(ParticleSet &P, ParticleSet &src, int iat) override
return the logarithmic gradient for the iat-th particle of the source particleset ...
std::complex< double > LogValue
Declaration of DiracDeterminantWithBackflow with a S(ingle)P(article)O(rbital)Set.
GradType evalGrad(ParticleSet &P, int iat) override
return the current gradient for the iat-th particle
LogValue evaluateLog(const ParticleSet &P, ParticleSet::ParticleGradient &G, ParticleSet::ParticleLaplacian &L) override
evaluate the value of the WaveFunctionComponent from scratch
const std::vector< std::unique_ptr< Determinant_t > > Dets
container for the DiracDeterminants
PsiValue ratioGrad(ParticleSet &P, int iat, GradType &grad_iat) override
evaluate the ratio of the new to old WaveFunctionComponent value and the new gradient ...