QMCPACK
LatticeGaussianProduct.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2016 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
8 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
9 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
10 //
11 // File created by: Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
12 //////////////////////////////////////////////////////////////////////////////////////
13 
14 
15 /** @file LatticeGaussianProduct.h
16  * @brief Simple gaussian functions used for orbitals for ions
17  */
18 #ifndef QMCPLUSPLUS_LATTICE_GAUSSIAN_PRODUCT
19 #define QMCPLUSPLUS_LATTICE_GAUSSIAN_PRODUCT
21 #include "Particle/DistanceTable.h"
22 
23 namespace qmcplusplus
24 {
25 /** A composite Orbital
26  */
28 {
29 private:
33  ///table index
34  int myTableID;
35  ///orbital centers
40 
41 public:
42  std::vector<RealType> ParticleAlpha;
43  std::vector<int> ParticleCenter;
44 
46 
47  ~LatticeGaussianProduct() override;
48 
49  std::string getClassName() const override { return "LatticeGaussianProduct"; }
50 
53  ParticleSet::ParticleLaplacian& L) override;
54 
55  PsiValue ratio(ParticleSet& P, int iat) override;
56 
57  void acceptMove(ParticleSet& P, int iat, bool safe_to_delay = false) override;
58 
59  void restore(int iat) override;
60 
61  void registerData(ParticleSet& P, WFBufferType& buf) override;
62 
63  LogValue updateBuffer(ParticleSet& P, WFBufferType& buf, bool fromscratch) override;
64 
65  void copyFromBuffer(ParticleSet& P, WFBufferType& buf) override;
66 
67  GradType evalGrad(ParticleSet& P, int iat) override;
68 
69  PsiValue ratioGrad(ParticleSet& P, int iat, GradType& grad_iat) override;
70 
71  std::unique_ptr<WaveFunctionComponent> makeClone(ParticleSet& tqp) const override;
72 
74  const opt_variables_type& optvars,
75  Vector<ValueType>& dlogpsi,
76  Vector<ValueType>& dhpsioverpsi) override
77  {}
78 
80 };
81 } // namespace qmcplusplus
82 #endif
ParticleSet & CenterRef
orbital centers
void evaluateLogAndStore(const ParticleSet &P, ParticleSet::ParticleGradient &dG, ParticleSet::ParticleLaplacian &dL)
std::unique_ptr< WaveFunctionComponent > makeClone(ParticleSet &tqp) const override
make clone
Fixed-size array.
Definition: OhmmsTinyMeta.h:30
WaveFunctionComponent::PsiValue PsiValue
Definition: SlaterDet.cpp:25
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
void registerData(ParticleSet &P, WFBufferType &buf) override
equivalent to evalaute with additional data management
LatticeGaussianProduct(ParticleSet &centers, ParticleSet &ptcls)
void restore(int iat) override
If a move for iat-th particle is rejected, restore to the content.
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 evaluateDerivatives(ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi) override
LatticeGaussianProduct::GradType GradType
std::string getClassName() const override
return class name
An abstract class for a component of a many-body trial wave function.
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
PsiValue ratio(ParticleSet &P, int iat) override
evaluate the ratio
void copyFromBuffer(ParticleSet &P, WFBufferType &buf) override
copy the current data from a buffer
class to handle a set of variables that can be modified during optimizations
Definition: VariableSet.h:49
LogValue updateBuffer(ParticleSet &P, WFBufferType &buf, bool fromscratch) override
For particle-by-particle move.
LogValue evaluateLog(const ParticleSet &P, ParticleSet::ParticleGradient &G, ParticleSet::ParticleLaplacian &L) override
GradType evalGrad(ParticleSet &P, int iat) override
return the current gradient for the iat-th particle
Declaration of WaveFunctionComponent.
std::complex< double > LogValue
void acceptMove(ParticleSet &P, int iat, bool safe_to_delay=false) override
a move for iat-th particle is accepted.