QMCPACK
SHOSet.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: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
8 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
9 //
10 // File created by: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
11 //////////////////////////////////////////////////////////////////////////////////////
12 
13 
14 #ifndef QMCPLUSPLUS_SHOSET_H
15 #define QMCPLUSPLUS_SHOSET_H
16 
19 
20 
21 namespace qmcplusplus
22 {
23 struct SHOState : public SPOInfo
24 {
26 
28  {
29  quantum_number = -1;
30  energy = 0.0;
31  }
32 
33  ~SHOState() override {}
34 
35  inline void set(TinyVector<int, DIM> qn, RealType e)
36  {
37  quantum_number = qn;
38  energy = e;
39  }
40 
41  inline void sho_report(const std::string& pad = "") const
42  {
43  app_log() << pad << "qn=" << quantum_number << " e=" << energy << std::endl;
44  }
45 };
46 
47 
48 struct SHOSet : public SPOSet
49 {
52 
55 
56  int nmax;
58  std::vector<SHOState> state_info;
59  std::vector<RealType> prefactors;
65 
66  //construction/destruction
67  SHOSet(const std::string& my_name, RealType l, PosType c, const std::vector<SHOState*>& sho_states);
68 
69  ~SHOSet() override;
70 
71  std::string getClassName() const override { return "SHOSet"; }
72 
73  void initialize();
74 
75  //SPOSet interface methods
76  std::unique_ptr<SPOSet> makeClone() const override;
77 
78  void evaluateValue(const ParticleSet& P, int iat, ValueVector& psi) override;
79 
80  void evaluateVGL(const ParticleSet& P, int iat, ValueVector& psi, GradVector& dpsi, ValueVector& d2psi) override;
81 
82  void evaluate_notranspose(const ParticleSet& P,
83  int first,
84  int last,
85  ValueMatrix& logdet,
86  GradMatrix& dlogdet,
87  ValueMatrix& d2logdet) override;
88 
89 
90  //local functions
91  void evaluate_v(PosType r, ValueVector& psi);
92  void evaluate_vgl(PosType r, ValueVector& psi, GradVector& dpsi, ValueVector& d2psi);
93  void evaluate_hermite(const PosType& xpos);
94  void evaluate_d0(const PosType& xpos, ValueVector& psi);
95  void evaluate_d1(const PosType& xpos, ValueVector& psi, GradVector& dpsi);
96  void evaluate_d2(const PosType& xpos, ValueVector& psi, ValueVector& d2psi);
97  void report(const std::string& pad = "") const override;
98  void test_derivatives();
99  void test_overlap();
100  void evaluate_check(PosType r, ValueVector& psi, GradVector& dpsi, ValueVector& d2psi);
101 
102  //empty methods
103  /// number of orbitals is determined only by initial request
104  inline void setOrbitalSetSize(int norbs) override {}
105 
106  ///unimplemented functions call this to abort
107  inline void not_implemented(const std::string& method)
108  {
109  APP_ABORT("SHOSet::" + method + " has not been implemented.");
110  }
111 
112 
113  //methods to be implemented in the future (possibly)
114  void evaluateThirdDeriv(const ParticleSet& P, int first, int last, GGGMatrix& dddlogdet) override;
115  void evaluate_notranspose(const ParticleSet& P,
116  int first,
117  int last,
118  ValueMatrix& logdet,
119  GradMatrix& dlogdet,
120  HessMatrix& ddlogdet) override;
121  void evaluate_notranspose(const ParticleSet& P,
122  int first,
123  int last,
124  ValueMatrix& logdet,
125  GradMatrix& dlogdet,
126  HessMatrix& ddlogdet,
127  GGGMatrix& dddlogdet) override;
128  void evaluateGradSource(const ParticleSet& P,
129  int first,
130  int last,
131  const ParticleSet& source,
132  int iat_src,
133  GradMatrix& gradphi) override;
134  void evaluateGradSource(const ParticleSet& P,
135  int first,
136  int last,
137  const ParticleSet& source,
138  int iat_src,
139  GradMatrix& dphi,
140  HessMatrix& ddphi,
141  GradMatrix& dlapl_phi) override;
142 };
143 
144 } // namespace qmcplusplus
145 
146 
147 #endif
void report(const std::string &pad="") const override
print SPOSet information
Definition: SHOSet.cpp:68
base class for Single-particle orbital sets
Definition: SPOSet.h:46
void setOrbitalSetSize(int norbs) override
number of orbitals is determined only by initial request
Definition: SHOSet.h:104
void evaluate_d2(const PosType &xpos, ValueVector &psi, ValueVector &d2psi)
Definition: SHOSet.cpp:209
Array< RealType, 2 > d2_values
Definition: SHOSet.h:64
void test_derivatives()
Definition: SHOSet.cpp:306
Array< RealType, 2 > hermite
Definition: SHOSet.h:60
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Array< RealType, 2 > d1_values
Definition: SHOSet.h:63
std::ostream & app_log()
Definition: OutputManager.h:65
void evaluateVGL(const ParticleSet &P, int iat, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi) override
evaluate the values, gradients and laplacians of this single-particle orbital set ...
Definition: SHOSet.cpp:92
std::vector< SHOState > state_info
Definition: SHOSet.h:58
std::string getClassName() const override
return class name
Definition: SHOSet.h:71
OrbitalSetTraits< ValueType >::ValueMatrix ValueMatrix
Definition: SPOSet.h:50
std::vector< RealType > prefactors
Definition: SHOSet.h:59
void evaluateThirdDeriv(const ParticleSet &P, int first, int last, GGGMatrix &dddlogdet) override
evaluate the third derivatives of this single-particle orbital set
Definition: SHOSet.cpp:525
void evaluate_d0(const PosType &xpos, ValueVector &psi)
Definition: SHOSet.cpp:160
TinyVector< int, DIM > quantum_number
Definition: SHOSet.h:25
void evaluate_notranspose(const ParticleSet &P, int first, int last, ValueMatrix &logdet, GradMatrix &dlogdet, ValueMatrix &d2logdet) override
evaluate the values, gradients and laplacians of this single-particle orbital for [first...
Definition: SHOSet.cpp:102
OrbitalSetTraits< ValueType >::ValueVector ValueVector
SHOSet(const std::string &my_name, RealType l, PosType c, const std::vector< SHOState *> &sho_states)
Definition: SHOSet.cpp:19
void evaluate_vgl(PosType r, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi)
Definition: SHOSet.cpp:127
RealType energy
energy of the orbital (in Hartree units)
Definition: SPOInfo.h:43
OrbitalSetTraits< ValueType >::GradMatrix GradMatrix
Definition: SPOSet.h:52
ValueMatrix::value_type value_type
Definition: SHOSet.h:50
Array< RealType, 2 > d0_values
Definition: SHOSet.h:62
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
base class to describe a single orbital in an SPOSet
Definition: SPOInfo.h:23
void evaluate_v(PosType r, ValueVector &psi)
Definition: SHOSet.cpp:119
Array< RealType, 2 > bvalues
Definition: SHOSet.h:61
void evaluateGradSource(const ParticleSet &P, int first, int last, const ParticleSet &source, int iat_src, GradMatrix &gradphi) override
evaluate the gradients of this single-particle orbital for [first,last) target particles with respect...
Definition: SHOSet.cpp:551
std::unique_ptr< SPOSet > makeClone() const override
make a clone of itself every derived class must implement this to have threading working correctly...
Definition: SHOSet.cpp:65
PosType center
Definition: SHOSet.h:54
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
Definition: AppAbort.h:27
void evaluate_check(PosType r, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi)
Definition: SHOSet.cpp:233
~SHOSet() override
Definition: SHOSet.cpp:62
void evaluate_d1(const PosType &xpos, ValueVector &psi, GradVector &dpsi)
Definition: SHOSet.cpp:183
RealType length
Definition: SHOSet.h:53
~SHOState() override
Definition: SHOSet.h:33
void sho_report(const std::string &pad="") const
Definition: SHOSet.h:41
void evaluate_hermite(const PosType &xpos)
Definition: SHOSet.cpp:137
OrbitalSetTraits< ValueType >::GradVector GradVector
Definition: SPOSet.h:51
QMCTraits::RealType RealType
Definition: SPOInfo.h:25
void not_implemented(const std::string &method)
unimplemented functions call this to abort
Definition: SHOSet.h:107
OrbitalSetTraits< ValueType >::GradHessMatrix GGGMatrix
Definition: SPOSet.h:56
GradMatrix::value_type grad_type
Definition: SHOSet.h:51
TinyVector< int, DIM > qn_max
Definition: SHOSet.h:57
QMCTraits::FullPrecRealType value_type
void evaluateValue(const ParticleSet &P, int iat, ValueVector &psi) override
evaluate the values of this single-particle orbital set
Definition: SHOSet.cpp:84
OrbitalSetTraits< ValueType >::HessMatrix HessMatrix
Definition: SPOSet.h:54