18 #ifndef QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H 19 #define QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H 29 class BackflowTransformation;
58 std::string
getClassName()
const override {
return "DiracDeterminantWithBackflow"; }
68 std::vector<RealType>& dlogpsi,
69 std::vector<RealType>& dhpsioverpsi,
111 void restore(
int iat)
override;
124 std::unique_ptr<DiracDeterminantWithBackflow>
makeCopyWithBF(std::unique_ptr<SPOSet>&& spo,
126 [[noreturn]] std::unique_ptr<DiracDeterminantBase>
makeCopy(std::unique_ptr<SPOSet>&& spo)
const override 128 throw std::runtime_error(
"makeCopy spo should not be called.");
141 void resize(
int nel,
int morb);
147 ret += lhs[i] * rhs[i];
156 ret += lhs[i] * rhs[i];
SPOSet::GradVector GradVector
OrbitalSetTraits< ValueType >::HessVector HessVector
Declaration of DiracDeterminantBase with a S(ingle)P(article)O(rbital)Set.
ParticleSet::ParticleGradient myG_temp
GradType evalGradSource(ParticleSet &P, ParticleSet &source, int iat) override
return the logarithmic gradient for the iat-th particle of the source particleset ...
void evaluateDerivatives(ParticleSet &P, const opt_variables_type &active, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi) override
Compute the derivatives of both the log of the wavefunction and kinetic energy with respect to optimi...
DiracDeterminantWithBackflow & operator=(const DiracDeterminantWithBackflow &s)=delete
ParticleSet::ParticleGradient myG
WaveFunctionComponent::PsiValue PsiValue
GradType evalGrad(ParticleSet &P, int iat) override
return the current gradient for the iat-th particle
helper functions for EinsplineSetBuilder
ValueType * LastAddressOfdV
ValueType * FirstAddressOfGGG
ValueVector psiV
value of single-particle orbital for particle-by-particle update
Walker_t::WFBuffer_t WFBufferType
void dummyEvalLi(ValueType &L1, ValueType &L2, ValueType &L3)
std::unique_ptr< DiracDeterminantWithBackflow > makeCopyWithBF(std::unique_ptr< SPOSet > &&spo, BackflowTransformation &BF) const
cloning function
OrbitalSetTraits< ValueType >::ValueMatrix ValueMatrix
ParticleSet::ParticleGradient Gtemp
ParticleAttrib< QTFull::ValueType > ParticleLaplacian
LatticeGaussianProduct::GradType GradType
ValueType * FirstAddressOfFm
ValueMatrix psiMinv
temporary container for testing
Attaches a unit to a Vector for IO.
GradMatrix dpsiM
dpsiM(i,j)
QTFull::ValueType SingleParticleValue
void testDerivFjj(ParticleSet &P, int pa)
ValueType * FirstAddressOfdV
void evaluate_SPO(ValueMatrix &logdet, GradMatrix &dlogdet, HessMatrix &grad_grad_logdet)
replace of SPOSet::evaluate function with the removal of t_logpsi
ValueType * LastAddressOfFm
OrbitalSetTraits< ValueType >::GradMatrix GradMatrix
Specialized paritlce class for atomistic simulations.
SPOSet::HessVector HessVector
void testGGG(ParticleSet &P)
ParticleSet::ParticleLaplacian myL
void testL(ParticleSet &P)
std::string getClassName() const override
return class name
DiracDeterminantWithBackflow(std::unique_ptr< SPOSet > &&spos, BackflowTransformation &BF, int first, int last)
constructor
SPOSet::GGGMatrix GGGMatrix
std::unique_ptr< DiracDeterminantBase > makeCopy(std::unique_ptr< SPOSet > &&spo) const override
cloning function
Vector< IndexType > Pivot
BackflowTransformation & BFTrans_
OrbitalSetTraits< ValueType >::ValueVector ValueVector
class to handle a set of variables that can be modified during optimizations
PsiValue ratio(ParticleSet &P, int iat) override
return the ratio only for the iat-th partcle move
ParticleSet::ParticleLaplacian myL_temp
QTFull::ValueType PsiValue
void acceptMove(ParticleSet &P, int iat, bool safe_to_delay=false) override
move was accepted, update the real container
HessMatrix grad_grad_psiM_temp
class to handle determinants with backflow
ParticleSet::SingleParticleValue * LastAddressOfG
Vector< ValueType > WorkSpace
~DiracDeterminantWithBackflow() override
default destructor
SPOSet::ValueVector ValueVector
GGGMatrix grad_grad_grad_psiM
OrbitalSetTraits< ValueType >::GradVector GradVector
ValueMatrix psiM
psiM(j,i)
HessMatrix grad_grad_psiM
void registerData(ParticleSet &P, WFBufferType &buf) override
For particle-by-particle move.
LatticeGaussianProduct::ValueType ValueType
ParticleAttrib< QTFull::GradType > ParticleGradient
PsiValue ratioGrad(ParticleSet &P, int iat, GradType &grad_iat) override
evaluate the ratio of the new to old WaveFunctionComponent value and the new gradient ...
void testDerivLi(ParticleSet &P, int pa)
LogValue updateBuffer(ParticleSet &P, WFBufferType &buf, bool fromscratch=false) override
For particle-by-particle move.
void resize(int nel, int morb)
reset the size: with the number of particles and number of orbtials
Declaration of WaveFunctionComponent.
std::complex< double > LogValue
ValueType * LastAddressOfGGG
SPOSet::GradMatrix GradMatrix
OrbitalSetTraits< ValueType >::GradHessMatrix GGGMatrix
A D-dimensional Array class based on PETE.
void evaluateRatiosAlltoOne(ParticleSet &P, std::vector< ValueType > &ratios) override
evaluate the ratios of one virtual move with respect to all the particles
SPOSet::HessMatrix HessMatrix
void copyFromBuffer(ParticleSet &P, WFBufferType &buf) override
For particle-by-particle move.
void restore(int iat) override
move was rejected.
void testGG(ParticleSet &P)
LogValue evaluateLog(const ParticleSet &P, ParticleSet::ParticleGradient &G, ParticleSet::ParticleLaplacian &L) override
Calculate the log value of the Dirac determinant for particles.
ParticleSet::SingleParticleValue * FirstAddressOfG
ValueType rcdot(TinyVector< RealType, OHMMS_DIM > &lhs, TinyVector< ValueType, OHMMS_DIM > &rhs)
OrbitalSetTraits< ValueType >::HessMatrix HessMatrix
SPOSet::ValueMatrix ValueMatrix
int NP
total number of particles. Ye: used to track first time allocation but I still feel it very strange...