QMCPACK
CuspCorrectionAtomicBasis< T > Class Template Reference

Handles a set of correction orbitals per atom. More...

+ Collaboration diagram for CuspCorrectionAtomicBasis< T >:

Public Member Functions

 CuspCorrectionAtomicBasis ()=default
 
auto getNumOrbs () const
 
 CuspCorrectionAtomicBasis (const CuspCorrectionAtomicBasis &a)=default
 copy constructor More...
 
void initializeRadialSet (LogGrid< T > &radial_grid, QMCT::IndexType orbital_set_size)
 
template<class T1 >
void addSpline (int mo_idx, OneDimQuinticSpline< T1 > &radial_spline)
 
void evaluate (const T r, T *restrict vals) const
 
void evaluate_vgl (const T r, const PosType &dr, T *restrict u, T *restrict du_x, T *restrict du_y, T *restrict du_z, T *restrict d2u) const
 

Private Types

using QMCT = QMCTraits
 
using RadialSetType = MultiQuinticSpline1D< T >
 
using PosType = ParticleSet::PosType
 

Private Attributes

QMCT::RealType r_max_ = 100
 
RadialSetType AOs
 
aligned_vector< size_t > ID
 

Detailed Description

template<typename T>
class qmcplusplus::CuspCorrectionAtomicBasis< T >

Handles a set of correction orbitals per atom.

Reduction over the orbitals - beware of the reduction problem

Definition at line 24 of file SoaCuspCorrection.h.

Member Typedef Documentation

◆ PosType

using PosType = ParticleSet::PosType
private

Definition at line 36 of file SoaCuspCorrectionBasisSet.h.

◆ QMCT

using QMCT = QMCTraits
private

Definition at line 34 of file SoaCuspCorrectionBasisSet.h.

◆ RadialSetType

using RadialSetType = MultiQuinticSpline1D<T>
private

Definition at line 35 of file SoaCuspCorrectionBasisSet.h.

Constructor & Destructor Documentation

◆ CuspCorrectionAtomicBasis() [1/2]

◆ CuspCorrectionAtomicBasis() [2/2]

copy constructor

Member Function Documentation

◆ addSpline()

void addSpline ( int  mo_idx,
OneDimQuinticSpline< T1 > &  radial_spline 
)
inline

Definition at line 57 of file SoaCuspCorrectionBasisSet.h.

References MultiQuinticSpline1D< T >::add_spline(), and CuspCorrectionAtomicBasis< T >::AOs.

58  {
59  AOs.add_spline(mo_idx, radial_spline);
60  }
void add_spline(int ispline, OneDimQuinticSpline< T1 > &in)

◆ evaluate()

void evaluate ( const T  r,
T *restrict  vals 
) const
inline

Definition at line 62 of file SoaCuspCorrectionBasisSet.h.

References CuspCorrectionAtomicBasis< T >::AOs, MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::getNumSplines(), and CuspCorrectionAtomicBasis< T >::r_max_.

63  {
64  //assume output vars are zero'd
65  if (r >= r_max_)
66  return;
67 
68  size_t nr = AOs.getNumSplines();
69  //FIXME ad-hoc allocation for performance
70  std::vector<T> phi(nr);
71 
72  AOs.evaluate(r, phi.data());
73  for (size_t i = 0; i < nr; ++i)
74  //vals[ID[i]]+=phi[i];
75  vals[i] += phi[i];
76  }
void evaluate(T r, T *restrict u) const

◆ evaluate_vgl()

void evaluate_vgl ( const T  r,
const PosType dr,
T *restrict  u,
T *restrict  du_x,
T *restrict  du_y,
T *restrict  du_z,
T *restrict  d2u 
) const
inline

Definition at line 78 of file SoaCuspCorrectionBasisSet.h.

References CuspCorrectionAtomicBasis< T >::AOs, MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::getNumSplines(), and CuspCorrectionAtomicBasis< T >::r_max_.

85  {
86  //assume output vars are zero'd
87  if (r >= r_max_)
88  return;
89 
90  size_t nr = AOs.getNumSplines();
91  //FIXME ad-hoc allocation for performance
92  std::vector<T> phi(nr);
93  std::vector<T> dphi(nr);
94  std::vector<T> d2phi(nr);
95 
96  AOs.evaluate(r, phi.data(), dphi.data(), d2phi.data());
97  for (size_t i = 0; i < nr; ++i)
98  {
99  const size_t j = i; //ID[i];
100  u[j] += phi[i];
101  du_x[j] -= dphi[i] * dr[0] / r; // Displacements have opposite sign (relative to AOS)
102  du_y[j] -= dphi[i] * dr[1] / r;
103  du_z[j] -= dphi[i] * dr[2] / r;
104  d2u[j] += d2phi[i] + 2 * dphi[i] / r;
105  }
106  }
void evaluate(T r, T *restrict u) const

◆ getNumOrbs()

◆ initializeRadialSet()

void initializeRadialSet ( LogGrid< T > &  radial_grid,
QMCT::IndexType  orbital_set_size 
)
inline

Definition at line 50 of file SoaCuspCorrectionBasisSet.h.

References CuspCorrectionAtomicBasis< T >::AOs, MultiQuinticSpline1D< T >::initialize(), CuspCorrectionAtomicBasis< T >::r_max_, and OneDimGridBase< T, CT >::rmax().

51  {
52  r_max_ = radial_grid.rmax();
53  AOs.initialize(radial_grid, orbital_set_size);
54  }
void initialize(GT &agrid, int norbs, int order=5)
initialize grid and container

Member Data Documentation

◆ AOs

◆ ID

aligned_vector<size_t> ID
private

Definition at line 40 of file SoaCuspCorrectionBasisSet.h.

◆ r_max_


The documentation for this class was generated from the following files: