QMCPACK
SHOSet.cpp
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 #include "SHOSet.h"
15 #include "Utilities/string_utils.h"
16 
17 namespace qmcplusplus
18 {
19 SHOSet::SHOSet(const std::string& my_name, RealType l, PosType c, const std::vector<SHOState*>& sho_states)
20  : SPOSet(my_name), length(l), center(c)
21 {
22  state_info.resize(sho_states.size());
23  for (int s = 0; s < sho_states.size(); ++s)
24  state_info[s] = *sho_states[s];
25  initialize();
26 }
27 
28 
30 {
31  using std::sqrt;
32 
33  OrbitalSetSize = state_info.size();
34 
35  qn_max = -1;
36  for (int s = 0; s < state_info.size(); ++s)
37  for (int d = 0; d < DIM; ++d)
38  qn_max[d] = std::max(qn_max[d], state_info[s].quantum_number[d]);
39  qn_max += 1;
40 
41  nmax = -1;
42  for (int d = 0; d < DIM; ++d)
43  nmax = std::max(nmax, qn_max[d]);
44 
45  prefactors.resize(nmax);
48 
49  //d0_values.resize(DIM,nmax);
50  //d1_values.resize(DIM,nmax);
51  //d2_values.resize(DIM,nmax);
52 
53  if (nmax > 0)
54  {
55  prefactors[0] = 1.0 / (sqrt(sqrt(M_PI) * length));
56  for (int n = 1; n < nmax; ++n)
57  prefactors[n] = prefactors[n - 1] / sqrt(2. * n);
58  }
59 }
60 
61 
63 
64 
65 std::unique_ptr<SPOSet> SHOSet::makeClone() const { return std::make_unique<SHOSet>(*this); }
66 
67 
68 void SHOSet::report(const std::string& pad) const
69 {
70  app_log() << pad << "SHOSet report" << std::endl;
71  app_log() << pad << " length = " << length << std::endl;
72  app_log() << pad << " center = " << center << std::endl;
73  app_log() << pad << " nmax = " << nmax << std::endl;
74  app_log() << pad << " qn_max = " << qn_max << std::endl;
75  app_log() << pad << " # states = " << state_info.size() << std::endl;
76  app_log() << pad << " states" << std::endl;
77  for (int s = 0; s < state_info.size(); ++s)
78  state_info[s].sho_report(pad + " " + int2string(s) + " ");
79  app_log() << pad << "end SHOSet report" << std::endl;
80  app_log().flush();
81 }
82 
83 
84 void SHOSet::evaluateValue(const ParticleSet& P, int iat, ValueVector& psi)
85 {
86  const PosType& r(P.activeR(iat));
87  ValueVector p(&psi[0], size());
88  evaluate_v(r, p);
89 }
90 
91 
92 void SHOSet::evaluateVGL(const ParticleSet& P, int iat, ValueVector& psi, GradVector& dpsi, ValueVector& d2psi)
93 {
94  const PosType& r(P.activeR(iat));
95  ValueVector p(&psi[0], size());
96  GradVector dp(&dpsi[0], size());
97  ValueVector d2p(&d2psi[0], size());
98  evaluate_vgl(r, p, dp, d2p);
99 }
100 
101 
103  int first,
104  int last,
105  ValueMatrix& logdet,
106  GradMatrix& dlogdet,
107  ValueMatrix& d2logdet)
108 {
109  for (int iat = first, i = 0; iat < last; ++iat, ++i)
110  {
111  ValueVector p(logdet[i], size());
112  GradVector dp(dlogdet[i], size());
113  ValueVector d2p(d2logdet[i], size());
114  evaluate_vgl(P.R[iat], p, dp, d2p);
115  }
116 }
117 
118 
120 {
121  PosType x = (r - center) / length;
122  evaluate_hermite(x);
123  evaluate_d0(x, psi);
124 }
125 
126 
128 {
129  PosType x = (r - center) / length;
130  evaluate_hermite(x);
131  evaluate_d0(x, psi);
132  evaluate_d1(x, psi, dpsi);
133  evaluate_d2(x, psi, d2psi);
134 }
135 
136 
138 {
139  for (int d = 0; d < DIM; ++d)
140  {
141  int nh = qn_max[d];
142  if (nh > 0)
143  {
144  RealType x = xpos[d];
145  hermite(d, 0) = 1.0;
146  RealType Hnm2 = 0.0;
147  RealType Hnm1 = 1.0;
148  for (int n = 1; n < nh; ++n)
149  {
150  RealType Hn = 2 * (x * Hnm1 - (n - 1) * Hnm2);
151  hermite(d, n) = Hn;
152  Hnm2 = Hnm1;
153  Hnm1 = Hn;
154  }
155  }
156  }
157 }
158 
159 
160 void SHOSet::evaluate_d0(const PosType& xpos, ValueVector& psi)
161 {
162  using std::exp;
163  for (int d = 0; d < DIM; ++d)
164  {
165  RealType x = xpos[d];
166  RealType g = exp(-.5 * x * x);
167  for (int n = 0; n < qn_max[d]; ++n)
168  {
169  bvalues(d, n) = prefactors[n] * g * hermite(d, n);
170  }
171  }
172  for (int s = 0; s < state_info.size(); ++s)
173  {
174  const SHOState& state = state_info[s];
175  RealType phi = 1.0;
176  for (int d = 0; d < DIM; ++d)
177  phi *= bvalues(d, state.quantum_number[d]);
178  psi[s] = phi;
179  }
180 }
181 
182 
183 void SHOSet::evaluate_d1(const PosType& xpos, ValueVector& psi, GradVector& dpsi)
184 {
185  RealType ol = 1.0 / length;
186  for (int d = 0; d < DIM; ++d)
187  {
188  RealType x = xpos[d];
189  RealType Hnm1 = 0.0;
190  for (int n = 0; n < qn_max[d]; ++n)
191  {
192  RealType Hn = hermite(d, n);
193  bvalues(d, n) = (-x + 2 * n * Hnm1 / Hn) * ol;
194  Hnm1 = Hn;
195  }
196  }
197  for (int s = 0; s < state_info.size(); ++s)
198  {
199  const SHOState& state = state_info[s];
201  for (int d = 0; d < DIM; ++d)
202  dphi[d] = bvalues(d, state.quantum_number[d]);
203  dphi *= psi[s];
204  dpsi[s] = dphi;
205  }
206 }
207 
208 
209 void SHOSet::evaluate_d2(const PosType& xpos, ValueVector& psi, ValueVector& d2psi)
210 {
211  RealType ol2 = 1.0 / (length * length);
212  for (int d = 0; d < DIM; ++d)
213  {
214  RealType x = xpos[d];
215  RealType x2 = x * x;
216  for (int n = 0; n < qn_max[d]; ++n)
217  {
218  bvalues(d, n) = (-1.0 + x2 - 2 * n) * ol2;
219  }
220  }
221  for (int s = 0; s < state_info.size(); ++s)
222  {
223  const SHOState& state = state_info[s];
224  ValueType d2phi = 0.0;
225  for (int d = 0; d < DIM; ++d)
226  d2phi += bvalues(d, state.quantum_number[d]);
227  d2phi *= psi[s];
228  d2psi[s] = d2phi;
229  }
230 }
231 
232 
234 {
235  using std::exp;
236  using std::sqrt;
237 
238  evaluate_vgl(r, psi, dpsi, d2psi);
239 
240  const int N = 6;
241  RealType H[N], dH[N], d2H[N], pre[N];
242  RealType p[N], dp[N], d2p[N];
243 
244  pre[0] = 1.0 / (sqrt(sqrt(M_PI) * length));
245  for (int n = 1; n < N; ++n)
246  pre[n] = pre[n - 1] / sqrt(2. * n);
247 
248  for (int d = 0; d < DIM; ++d)
249  {
250  RealType x = (r[d] - center[d]) / length;
251  RealType x2 = x * x, x3 = x * x * x, x4 = x * x * x * x, x5 = x * x * x * x * x;
252  H[0] = 1;
253  dH[0] = 0;
254  d2H[0] = 0;
255  H[1] = 2 * x;
256  dH[1] = 2;
257  d2H[1] = 0;
258  H[2] = 4 * x2 - 2;
259  dH[2] = 8 * x;
260  d2H[2] = 8;
261  H[3] = 8 * x3 - 12 * x;
262  dH[3] = 24 * x2 - 12;
263  d2H[3] = 48 * x;
264  H[4] = 16 * x4 - 48 * x2 + 12;
265  dH[4] = 64 * x3 - 96 * x;
266  d2H[4] = 192 * x2 - 96;
267  H[5] = 32 * x5 - 160 * x3 + 120 * x;
268  dH[5] = 160 * x4 - 480 * x2 + 120;
269  d2H[5] = 640 * x3 - 960 * x;
270  RealType g = exp(-x2 / 2);
271  for (int n = 0; n < N; ++n)
272  {
273  p[n] = pre[n] * g * H[n];
274  dp[n] = pre[n] * g * (-x * H[n] + dH[n]);
275  d2p[n] = pre[n] * g * ((x2 - 1) * H[n] - 2 * x * dH[n] + d2H[n]);
276  }
277  app_log() << "eval check dim = " << d << " x = " << x << std::endl;
278  app_log() << " hermite check" << std::endl;
279  for (int n = 0; n < qn_max[d]; ++n)
280  {
281  app_log() << " " << n << " " << H[n] << std::endl;
282  app_log() << " " << n << " " << hermite(d, n) << std::endl;
283  }
284  app_log() << " phi d0 check" << std::endl;
285  for (int n = 0; n < qn_max[d]; ++n)
286  {
287  app_log() << " " << n << " " << p[n] << std::endl;
288  app_log() << " " << n << " " << d0_values(d, n) << std::endl;
289  }
290  app_log() << " phi d1 check" << std::endl;
291  for (int n = 0; n < qn_max[d]; ++n)
292  {
293  app_log() << " " << n << " " << dp[n] / p[n] << std::endl;
294  app_log() << " " << n << " " << d1_values(d, n) << std::endl;
295  }
296  app_log() << " phi d2 check" << std::endl;
297  for (int n = 0; n < qn_max[d]; ++n)
298  {
299  app_log() << " " << n << " " << d2p[n] / p[n] << std::endl;
300  app_log() << " " << n << " " << d2_values(d, n) << std::endl;
301  }
302  }
303 }
304 
305 
307 {
308  int n = 3;
309  PosType c = 5.123;
310  PosType L = 1.0;
311  PosType drg = L / n;
312  PosType dr = L / 1000;
313  int nphi = state_info.size();
314 
315  PosType o2dr, odr2;
316 
317  ValueVector vpsi, vpsitmp;
318  GradVector vdpsi, vdpsin;
319  ValueVector vd2psi, vd2psin;
320 
321 
322  vpsi.resize(nphi);
323  vdpsi.resize(nphi);
324  vd2psi.resize(nphi);
325 
326  vpsitmp.resize(nphi);
327  vdpsin.resize(nphi);
328  vd2psin.resize(nphi);
329 
330 
331  ValueVector psi(&vpsi[0], size());
332  GradVector dpsi(&vdpsi[0], size());
333  ValueVector d2psi(&vd2psi[0], size());
334 
335  ValueVector psitmp(&vpsitmp[0], size());
336  GradVector dpsin(&vdpsin[0], size());
337  ValueVector d2psin(&vd2psin[0], size());
338 
339 
340  app_log() << " loading dr" << std::endl;
341 
342  RealType odr2sum = 0.0;
343  for (int d = 0; d < DIM; ++d)
344  {
345  RealType odr = 1.0 / dr[d];
346  o2dr[d] = .5 * odr;
347  odr2[d] = odr * odr;
348  odr2sum += odr2[d];
349  }
350 
351  app_log() << "SHOSet::test_derivatives" << std::endl;
352 
353  const SimulationCell simulation_cell;
354  ParticleSet Ps(simulation_cell);
355 
356  int p = 0;
357  PosType r, rtmp;
358  for (int i = 0; i < n; ++i)
359  {
360  r[0] = c[0] + i * drg[0];
361  for (int j = 0; j < n; ++j)
362  {
363  r[1] = c[1] + j * drg[1];
364  for (int k = 0; k < n; ++k)
365  {
366  r[2] = c[2] + k * drg[2];
367 
368  //evaluate_check(r,psi,dpsi,d2psi);
369  //APP_ABORT("SHOSet eval check");
370 
371  evaluate_vgl(r, psi, dpsi, d2psi);
372 
373  for (int m = 0; m < nphi; ++m)
374  d2psin[m] = -2 * odr2sum * psi[m];
375  for (int d = 0; d < DIM; ++d)
376  {
377  rtmp = r;
378  rtmp[d] += dr[d];
379  evaluate_v(rtmp, psitmp);
380  for (int m = 0; m < nphi; ++m)
381  {
382  ValueType phi = psitmp[m];
383  dpsin[m][d] = phi * o2dr[d];
384  d2psin[m] += phi * odr2[d];
385  }
386  rtmp = r;
387  rtmp[d] -= dr[d];
388  evaluate_v(rtmp, psitmp);
389  for (int m = 0; m < nphi; ++m)
390  {
391  ValueType phi = psitmp[m];
392  dpsin[m][d] -= phi * o2dr[d];
393  d2psin[m] += phi * odr2[d];
394  }
395  }
396 
397  RealType dphi_diff = 0.0;
398  RealType d2phi_diff = 0.0;
399  for (int m = 0; m < nphi; ++m)
400  for (int d = 0; d < DIM; ++d)
401  dphi_diff = std::max<RealType>(dphi_diff, std::abs(dpsi[m][d] - dpsin[m][d]) / std::abs(dpsin[m][d]));
402  for (int m = 0; m < nphi; ++m)
403  d2phi_diff = std::max<RealType>(d2phi_diff, std::abs(d2psi[m] - d2psin[m]) / std::abs(d2psin[m]));
404  app_log() << " " << p << " " << dphi_diff << " " << d2phi_diff << std::endl;
405  app_log() << " derivatives" << std::endl;
406  for (int m = 0; m < nphi; ++m)
407  {
408  std::string qn = "";
409  for (int d = 0; d < DIM; ++d)
410  qn += int2string(state_info[m].quantum_number[d]) + " ";
411  app_log() << " " << qn;
412  for (int d = 0; d < DIM; ++d)
413  app_log() << real(dpsi[m][d]) << " ";
414  app_log() << std::endl;
415  app_log() << " " << qn;
416  for (int d = 0; d < DIM; ++d)
417  app_log() << real(dpsin[m][d]) << " ";
418  app_log() << std::endl;
419  }
420  app_log() << " laplacians" << std::endl;
421  PosType x = r / length;
422  for (int m = 0; m < nphi; ++m)
423  {
424  std::string qn = "";
425  for (int d = 0; d < DIM; ++d)
426  qn += int2string(state_info[m].quantum_number[d]) + " ";
427  app_log() << " " << qn << real(d2psi[m] / psi[m]) << std::endl;
428  app_log() << " " << qn << real(d2psin[m] / psi[m]) << std::endl;
429  }
430  p++;
431  }
432  }
433  }
434 
435  app_log() << "end SHOSet::test_derivatives" << std::endl;
436 }
437 
438 
440 {
441  app_log() << "SHOSet::test_overlap" << std::endl;
442 
443 
444  //linear
445  int d = 0;
446 
447  app_log() << " length = " << length << std::endl;
448  app_log() << " prefactors" << std::endl;
449  for (int n = 0; n < qn_max[d]; ++n)
450  app_log() << " " << n << " " << prefactors[n] << std::endl;
451 
452  app_log() << " 1d overlap" << std::endl;
453 
454  ValueVector vpsi;
455  vpsi.resize(size());
456  ValueVector psi(&vpsi[0], size());
457 
458  double xmax = 4.0;
459  double dx = .1;
460  double dr = length * dx;
461 
462  int nphi = qn_max[d];
463  Array<double, 2> omat;
464  omat.resize(nphi, nphi);
465  for (int i = 0; i < nphi; ++i)
466  for (int j = 0; j < nphi; ++j)
467  omat(i, j) = 0.0;
468 
469  PosType xp = 0.0;
470  for (double x = -xmax; x < xmax; x += dx)
471  {
472  xp[d] = x;
473  evaluate_hermite(xp);
474  evaluate_d0(xp, psi);
475 
476  for (int i = 0; i < nphi; ++i)
477  for (int j = 0; j < nphi; ++j)
478  omat(i, j) += bvalues(d, i) * bvalues(d, j) * dr;
479  }
480 
481  for (int i = 0; i < nphi; ++i)
482  {
483  app_log() << std::endl;
484  for (int j = 0; j < nphi; ++j)
485  app_log() << omat(i, j) << " ";
486  }
487  app_log() << std::endl;
488 
489 
490  //volumetric
491  app_log() << " 3d overlap" << std::endl;
492  double dV = dr * dr * dr;
493  nphi = size();
494  omat.resize(nphi, nphi);
495  for (int i = 0; i < nphi; ++i)
496  for (int j = 0; j < nphi; ++j)
497  omat(i, j) = 0.0;
498  for (double x = -xmax; x < xmax; x += dx)
499  for (double y = -xmax; y < xmax; y += dx)
500  for (double z = -xmax; z < xmax; z += dx)
501  {
502  xp[0] = x;
503  xp[1] = y;
504  xp[2] = z;
505  evaluate_hermite(xp);
506  evaluate_d0(xp, psi);
507 
508  for (int i = 0; i < nphi; ++i)
509  for (int j = 0; j < nphi; ++j)
510  omat(i, j) += std::abs(psi[i] * psi[j]) * dV;
511  }
512  for (int i = 0; i < nphi; ++i)
513  {
514  app_log() << std::endl;
515  for (int j = 0; j < nphi; ++j)
516  app_log() << omat(i, j) << " ";
517  }
518  app_log() << std::endl;
519 
520 
521  app_log() << "end SHOSet::test_overlap" << std::endl;
522 }
523 
524 
525 void SHOSet::evaluateThirdDeriv(const ParticleSet& P, int first, int last, GGGMatrix& grad_grad_grad_logdet)
526 {
527  not_implemented("evaluateThirdDeriv(P,first,last,dddlogdet)");
528 }
529 
531  int first,
532  int last,
533  ValueMatrix& logdet,
534  GradMatrix& dlogdet,
535  HessMatrix& grad_grad_logdet)
536 {
537  not_implemented("evaluate_notranspose(P,first,last,logdet,dlogdet,ddlogdet)");
538 }
539 
541  int first,
542  int last,
543  ValueMatrix& logdet,
544  GradMatrix& dlogdet,
545  HessMatrix& grad_grad_logdet,
546  GGGMatrix& grad_grad_grad_logdet)
547 {
548  not_implemented("evaluate_notranspose(P,first,last,logdet,dlogdet,ddlogdet,dddlogdet)");
549 }
550 
552  int first,
553  int last,
554  const ParticleSet& source,
555  int iat_src,
556  GradMatrix& gradphi)
557 {
558  not_implemented("evaluateGradSource(P,first,last,source,iat,dphi)");
559 }
560 
562  int first,
563  int last,
564  const ParticleSet& source,
565  int iat_src,
566  GradMatrix& grad_phi,
567  HessMatrix& grad_grad_phi,
568  GradMatrix& grad_lapl_phi)
569 {
570  not_implemented("evaluateGradSource(P,first,last,source,iat,dphi,ddphi,dd2phi)");
571 }
572 
573 } // namespace qmcplusplus
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 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
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
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
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
std::string int2string(const int &i)
Definition: string_utils.h:119
float real(const float &c)
real part of a scalar. Cannot be replaced by std::real due to AFQMC specific needs.
int size() const
return the size of the orbital set Ye: this needs to be replaced by getOrbitalSetSize(); ...
Definition: SPOSet.h:75
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
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65
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
OrbitalSetTraits< ValueType >::GradMatrix GradMatrix
Definition: SPOSet.h:52
Array< RealType, 2 > d0_values
Definition: SHOSet.h:62
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
QTBase::ValueType ValueType
Definition: Configuration.h:60
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
OrbitalSetTraits< ValueType >::ValueVector ValueVector
Definition: SPOSet.h:49
IndexType OrbitalSetSize
number of Single-particle orbitals
Definition: SPOSet.h:566
ParticlePos R
Position.
Definition: ParticleSet.h:79
void evaluate_check(PosType r, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi)
Definition: SHOSet.cpp:233
~SHOSet() override
Definition: SHOSet.cpp:62
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
const PosType & activeR(int iat) const
return the active position if the particle is active or the return current position if not ...
Definition: ParticleSet.h:265
void evaluate_d1(const PosType &xpos, ValueVector &psi, GradVector &dpsi)
Definition: SHOSet.cpp:183
RealType length
Definition: SHOSet.h:53
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
void evaluate_hermite(const PosType &xpos)
Definition: SHOSet.cpp:137
OrbitalSetTraits< ValueType >::GradVector GradVector
Definition: SPOSet.h:51
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
TinyVector< int, DIM > qn_max
Definition: SHOSet.h:57
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