QMCPACK
ForceCeperley.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: John R. Gergely, University of Illinois at Urbana-Champaign
8 // Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
9 // Raymond Clay III, j.k.rofling@gmail.com, Lawrence Livermore National Laboratory
10 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
11 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
12 //
13 // File created by: John R. Gergely, University of Illinois at Urbana-Champaign
14 //////////////////////////////////////////////////////////////////////////////////////
15 
16 
17 #ifndef QMCPLUSPLUS_FORCE_CEPERLEY_HAMILTONIAN_H
18 #define QMCPLUSPLUS_FORCE_CEPERLEY_HAMILTONIAN_H
25 
26 namespace qmcplusplus
27 {
28 struct ForceCeperley : public OperatorBase, public ForceBase
29 {
30 private:
31  const int d_aa_ID;
32  const int d_ei_ID;
33 
34 public:
35  double Rcut; // parameter: radial distance within which estimator is used
36  int m_exp; // parameter: exponent in polynomial fit
37  int N_basis; // parameter: size of polynomial basis set
38  Matrix<FullPrecRealType> Sinv; // terms in fitting polynomial
39  Vector<FullPrecRealType> h; // terms in fitting polynomial
40  Vector<FullPrecRealType> c; // polynomial coefficients
41  // container for short-range force estimator
42 
44 
45  std::string getClassName() const override { return "ForceCeperley"; }
46 
47  Return_t evaluate(ParticleSet& P) override;
48 
49  void InitMatrix();
50 
51  void registerObservables(std::vector<ObservableHelper>& h5list, hdf_archive& file) const override
52  {
53  registerObservablesF(h5list, file);
54  }
55 
56  void addObservables(PropertySetType& plist, BufferType& collectables) override { addObservablesF(plist); }
57 
58  void setObservables(PropertySetType& plist) override { setObservablesF(plist); }
59 
60  void resetTargetParticleSet(ParticleSet& P) override {}
61 
62  // Compute ion-ion forces at construction to include in the total forces
63  void evaluate_IonIon(ParticleSet::ParticlePos& forces) const;
64 
65  void setParticlePropertyList(PropertySetType& plist, int offset) override { setParticleSetF(plist, offset); }
66  std::unique_ptr<OperatorBase> makeClone(ParticleSet& qp, TrialWaveFunction& psi) final;
67 
68  bool put(xmlNodePtr cur) override;
69 
70  bool get(std::ostream& os) const override
71  {
72  os << "Ceperley Force Estimator Hamiltonian: " << pair_name_;
73  return true;
74  }
75 };
76 
77 } // namespace qmcplusplus
78 #endif
ForceCeperley(ParticleSet &ions, ParticleSet &elns)
void addObservables(PropertySetType &plist, BufferType &collectables) override
named values to the property list Default implementaton uses addValue(plist_)
Definition: ForceCeperley.h:56
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Matrix< FullPrecRealType > Sinv
Definition: ForceCeperley.h:38
void registerObservables(std::vector< ObservableHelper > &h5list, hdf_archive &file) const override
add to observable descriptor for hdf5 The default implementation is to register a scalar for this->va...
Definition: ForceCeperley.h:51
Declaration of OperatorBase.
void addObservablesF(QMCTraits::PropertySetType &plist)
Definition: ForceBase.cpp:47
class to handle hdf file
Definition: hdf_archive.h:51
Vectorized record engine for scalar properties.
Attaches a unit to a Vector for IO.
void setParticlePropertyList(PropertySetType &plist, int offset) override
Definition: ForceCeperley.h:65
void registerObservablesF(std::vector< ObservableHelper > &h5list, hdf_archive &file) const
Definition: ForceBase.cpp:75
Decalaration of One-Dimesional grids.
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
Return_t evaluate(ParticleSet &P) override
Evaluate the local energy contribution of this component.
void setParticleSetF(QMCTraits::PropertySetType &plist, int offset)
Definition: ForceBase.cpp:113
std::string pair_name_
Definition: ForceBase.h:97
std::string getClassName() const override
return class name
Definition: ForceCeperley.h:45
An abstract class for Local Energy operators.
Definition: OperatorBase.h:59
void setObservablesF(QMCTraits::PropertySetType &plist)
Definition: ForceBase.cpp:86
void resetTargetParticleSet(ParticleSet &P) override
Reset the data with the target ParticleSet.
Definition: ForceCeperley.h:60
Class to represent a many-body trial wave function.
std::unique_ptr< OperatorBase > makeClone(ParticleSet &qp, TrialWaveFunction &psi) final
Vector< FullPrecRealType > h
Definition: ForceCeperley.h:39
Define a LRHandler with two template parameters.
void setObservables(PropertySetType &plist) override
Set the values evaluated by this object to plist Default implementation is to assign Value which is u...
Definition: ForceCeperley.h:58
void evaluate_IonIon(ParticleSet::ParticlePos &forces) const
Vector< FullPrecRealType > c
Definition: ForceCeperley.h:40
BareKineticEnergy::Return_t Return_t
bool put(xmlNodePtr cur) override
Read the input parameter.