![]() |
QMCPACK
|
multivalue implementation for OneDimQuintic Real valued only calling any eval method with r >= r_max will throw an exception More...
Public Types | |
using | RealType = T |
using | GridType = OneDimGridBase< T > |
using | CoeffType = Matrix< T, OffloadPinnedAllocator< T > > |
using | OffloadArray2D = Array< T, 2, OffloadPinnedAllocator< T > > |
using | OffloadArray3D = Array< T, 3, OffloadPinnedAllocator< T > > |
using | OffloadArray4D = Array< T, 4, OffloadPinnedAllocator< T > > |
Public Member Functions | |
MultiQuinticSpline1D () | |
MultiQuinticSpline1D (const MultiQuinticSpline1D &in)=default | |
T | rmax () const |
void | evaluate (T r, T *restrict u) const |
void | batched_evaluate (const OffloadArray2D &r, OffloadArray3D &u, T Rmax) const |
evaluate MultiQuinticSpline1D for multiple electrons and multiple pbc images More... | |
void | batched_evaluateVGL (const OffloadArray2D &r, OffloadArray4D &vgl, T Rmax) const |
evaluate value, first deriv, second deriv of MultiQuinticSpline1D for multiple electrons and multiple pbc images More... | |
void | evaluate (T r, T *restrict u, T *restrict du, T *restrict d2u) const |
void | evaluate (T r, T *restrict u, T *restrict du, T *restrict d2u, T *restrict d3u) const |
compute upto 3rd derivatives More... | |
template<typename GT > | |
void | initialize (GT &agrid, int norbs, int order=5) |
initialize grid and container More... | |
template<typename T1 > | |
void | add_spline (int ispline, OneDimQuinticSpline< T1 > &in) |
void | finalize () |
finalize the construction More... | |
int | getNumSplines () const |
void | setNumSplines (int num_splines) |
Private Attributes | |
size_t | num_splines_ |
number of splines More... | |
size_t | spline_order |
order of spline More... | |
T | r_max |
maximum radius More... | |
LogGridLight< T > | myGrid |
will be the real grid More... | |
const std::shared_ptr< CoeffType > | coeffs_ptr_ |
coeffs[6*spline_points][num_splines+padding] More... | |
const std::shared_ptr< Vector< T, OffloadPinnedAllocator< T > > > | first_deriv_ptr_ |
CoeffType & | coeffs_ |
Vector< T, OffloadPinnedAllocator< T > > & | first_deriv_ |
multivalue implementation for OneDimQuintic Real valued only calling any eval method with r >= r_max will throw an exception
Definition at line 97 of file MultiQuinticSpline1D.h.
using CoeffType = Matrix<T, OffloadPinnedAllocator<T> > |
Definition at line 102 of file MultiQuinticSpline1D.h.
using GridType = OneDimGridBase<T> |
Definition at line 101 of file MultiQuinticSpline1D.h.
using OffloadArray2D = Array<T, 2, OffloadPinnedAllocator<T> > |
Definition at line 103 of file MultiQuinticSpline1D.h.
using OffloadArray3D = Array<T, 3, OffloadPinnedAllocator<T> > |
Definition at line 104 of file MultiQuinticSpline1D.h.
using OffloadArray4D = Array<T, 4, OffloadPinnedAllocator<T> > |
Definition at line 105 of file MultiQuinticSpline1D.h.
using RealType = T |
Definition at line 100 of file MultiQuinticSpline1D.h.
|
inline |
Definition at line 126 of file MultiQuinticSpline1D.h.
|
default |
|
inline |
Definition at line 430 of file MultiQuinticSpline1D.h.
References qmcplusplus::Units::distance::A, B(), OneDimQuinticSpline< Td, Tg, CTd, CTg >::B, qmcplusplus::Units::charge::C, MultiQuinticSpline1D< T >::coeffs_, Matrix< T, Alloc >::cols(), OneDimQuinticSpline< Td, Tg, CTd, CTg >::D, Matrix< T, Alloc >::data(), OneDimQuinticSpline< Td, Tg, CTd, CTg >::E, OneDimQuinticSpline< Td, Tg, CTd, CTg >::F, OneDimQuinticSpline< Td, Tg, CTd, CTg >::first_deriv, MultiQuinticSpline1D< T >::first_deriv_, OneDimQuinticSpline< Td, Tg, CTd, CTg >::m_Y, OneDimQuinticSpline< Td, Tg, CTd, CTg >::m_Y2, and OneDimGridFunctor< Td, Tg, CTd, CTg >::size().
Referenced by CuspCorrectionAtomicBasis< T >::addSpline(), A2NTransformer< T, FnIn >::convert(), and qmcplusplus::TEST_CASE().
|
inline |
evaluate MultiQuinticSpline1D for multiple electrons and multiple pbc images
[in] | r | electron distances [Nelec, Npbc] |
[out] | u | value of all splines at all electron distances [Nelec, Npbc, Nsplines] |
Rmax | spline will evaluate to zero for any distance greater than or equal to Rmax |
Definition at line 171 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, Matrix< T, Alloc >::cols(), Array< T, D, ALLOC >::data(), Matrix< T, Alloc >::data(), qmcplusplus::Units::charge::e, MultiQuinticSpline1D< T >::first_deriv_, LogGridLight< T >::getCL(), qmcplusplus::lower_bound(), MultiQuinticSpline1D< T >::myGrid, MultiQuinticSpline1D< T >::num_splines_, Array< T, D, ALLOC >::size(), and Matrix< T, Alloc >::size().
|
inline |
evaluate value, first deriv, second deriv of MultiQuinticSpline1D for multiple electrons and multiple pbc images
r is assumed to be up-to-date on the device when entering this function, and vgl will be up to date on the device when exiting this function
[in] | r | electron distances [Nelec, Npbc] |
[out] | vgl | val/d1/d2 of all splines at all electron distances [3(val,d1,d2), Nelec, Npbc, Nsplines] |
Rmax | spline and derivatives will evaluate to zero for any distance greater than or equal to Rmax |
Definition at line 236 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, Matrix< T, Alloc >::cols(), Array< T, D, ALLOC >::data(), Matrix< T, Alloc >::data(), Array< T, D, ALLOC >::data_at(), qmcplusplus::Units::charge::e, MultiQuinticSpline1D< T >::first_deriv_, LogGridLight< T >::getCL(), qmcplusplus::lower_bound(), MultiQuinticSpline1D< T >::myGrid, MultiQuinticSpline1D< T >::num_splines_, Array< T, D, ALLOC >::size(), and Matrix< T, Alloc >::size().
|
inline |
Definition at line 137 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, qmcplusplus::Units::charge::e, MultiQuinticSpline1D< T >::first_deriv_, MultiQuinticSpline1D< T >::myGrid, and MultiQuinticSpline1D< T >::num_splines_.
Referenced by CuspCorrectionAtomicBasis< T >::evaluate(), CuspCorrectionAtomicBasis< T >::evaluate_vgl(), and qmcplusplus::TEST_CASE().
|
inline |
Definition at line 317 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, qmcplusplus::Units::charge::e, MultiQuinticSpline1D< T >::first_deriv_, MultiQuinticSpline1D< T >::myGrid, and MultiQuinticSpline1D< T >::num_splines_.
|
inline |
compute upto 3rd derivatives
Definition at line 361 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, qmcplusplus::Units::charge::e, MultiQuinticSpline1D< T >::first_deriv_, MultiQuinticSpline1D< T >::myGrid, and MultiQuinticSpline1D< T >::num_splines_.
|
inline |
finalize the construction
Definition at line 457 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, MultiQuinticSpline1D< T >::first_deriv_, and Matrix< T, Alloc >::updateTo().
|
inline |
Definition at line 463 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::num_splines_.
Referenced by CuspCorrectionAtomicBasis< T >::evaluate(), CuspCorrectionAtomicBasis< T >::evaluate_vgl(), and CuspCorrectionAtomicBasis< T >::getNumOrbs().
|
inline |
initialize grid and container
ri | minimum grid point |
rf | maximum grid point |
npts | number of grid points |
n | number of splines |
oreder | 5=quintic and 3=cubic |
Definition at line 416 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::coeffs_, MultiQuinticSpline1D< T >::first_deriv_, MultiQuinticSpline1D< T >::myGrid, MultiQuinticSpline1D< T >::num_splines_, MultiQuinticSpline1D< T >::r_max, Matrix< T, Alloc >::resize(), Matrix< T, Alloc >::size(), and MultiQuinticSpline1D< T >::spline_order.
Referenced by CuspCorrectionAtomicBasis< T >::initializeRadialSet(), and qmcplusplus::TEST_CASE().
|
inline |
Definition at line 135 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::myGrid.
|
inline |
Definition at line 464 of file MultiQuinticSpline1D.h.
References MultiQuinticSpline1D< T >::num_splines_.
|
private |
Definition at line 122 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::add_spline(), MultiQuinticSpline1D< T >::batched_evaluate(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::finalize(), and MultiQuinticSpline1D< T >::initialize().
|
private |
coeffs[6*spline_points][num_splines+padding]
Definition at line 119 of file MultiQuinticSpline1D.h.
|
private |
Definition at line 123 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::add_spline(), MultiQuinticSpline1D< T >::batched_evaluate(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::finalize(), and MultiQuinticSpline1D< T >::initialize().
|
private |
Definition at line 120 of file MultiQuinticSpline1D.h.
|
private |
will be the real grid
Definition at line 116 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::batched_evaluate(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::initialize(), and MultiQuinticSpline1D< T >::rmax().
|
private |
number of splines
Definition at line 109 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::batched_evaluate(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::evaluate(), MultiQuinticSpline1D< T >::getNumSplines(), MultiQuinticSpline1D< T >::initialize(), and MultiQuinticSpline1D< T >::setNumSplines().
|
private |
maximum radius
Definition at line 113 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::initialize().
|
private |
order of spline
Definition at line 111 of file MultiQuinticSpline1D.h.
Referenced by MultiQuinticSpline1D< T >::initialize().