QMCPACK
CubicSplineSingle< RT, FNOUT > Struct Template Reference

A numerical functor. More...

+ Inheritance diagram for CubicSplineSingle< RT, FNOUT >:
+ Collaboration diagram for CubicSplineSingle< RT, FNOUT >:

Public Types

using value_type = RT
 typedef for the value_type More...
 
using FNIN = OptimizableFunctorBase
 typedef of the source functor More...
 
using grid_type = OneDimGridBase< real_type >
 typedef for the grid More...
 
- Public Types inherited from OptimizableFunctorBase
using real_type = optimize::VariableSet::real_type
 typedef for real values More...
 
using opt_variables_type = optimize::VariableSet
 typedef for variableset: this is going to be replaced More...
 

Public Member Functions

 CubicSplineSingle ()
 constructor More...
 
 CubicSplineSingle (const CubicSplineSingle &old)
 
OptimizableFunctorBasemakeClone () const override
 create a clone of this object More...
 
 CubicSplineSingle (FNIN *in_, grid_type *agrid)
 constructor with arguments More...
 
 CubicSplineSingle (FNIN *in_, real_type rc, int npts)
 constructor with arguments More...
 
void setInFunc (FNIN *in_)
 set the input, analytic function More...
 
void reportStatus (std::ostream &os) override
 print the state, e.g., optimizables More...
 
bool isOptimizable ()
 
real_type evaluate (real_type r, real_type &dudr, real_type &d2udr2, real_type &d3udr3)
 evaluate everything: value, first, second and third derivatives More...
 
real_type evaluate (real_type r, real_type &dudr, real_type &d2udr2)
 evaluate everything: value, first and second derivatives More...
 
real_type evaluate (real_type r)
 evaluate value only More...
 
real_type evaluate (real_type r, real_type rinv)
 evaluate value only More...
 
real_type evaluateAll (real_type r, real_type rinv)
 evaluate everything: value, first and second derivatives More...
 
real_type f (real_type r) override
 implement the virtual function of OptimizableFunctorBase More...
 
real_type df (real_type r) override
 implement the virtual function of OptimizableFunctorBase More...
 
real_type evaluateV (const int iat, const int iStart, const int iEnd, const real_type *restrict _distArray, real_type *restrict distArrayCompressed) const
 
void evaluateVGL (const int iat, const int iStart, const int iEnd, const real_type *distArray, real_type *restrict valArray, real_type *restrict gradArray, real_type *restrict laplArray, real_type *restrict distArrayCompressed, int *restrict distIndices) const
 
bool put (xmlNodePtr cur) override
 process xmlnode and registers variables to optimize More...
 
void checkInVariablesExclusive (opt_variables_type &active) override
 check in variational parameters to the global list of parameters used by the optimizer. More...
 
void checkOutVariables (const opt_variables_type &active) override
 check out variational optimizable variables More...
 
void resetParametersExclusive (const opt_variables_type &active) override
 reset the input/output function More...
 
void print (std::ostream &os)
 
void initialize (FNIN *in_, grid_type *agrid)
 set the input, analytic function More...
 
void initialize (FNIN *in_, real_type rmax, int npts)
 
void reset () override
 reset function More...
 
- Public Member Functions inherited from OptimizableFunctorBase
 OptimizableFunctorBase (const std::string &name="")
 default constructor More...
 
virtual ~OptimizableFunctorBase ()=default
 virtual destrutor More...
 
void getIndex (const opt_variables_type &active)
 
virtual void setDensity (real_type n)
 empty virtual function to help builder classes More...
 
virtual void setCusp (real_type cusp)
 empty virtual function to help builder classes More...
 
virtual void setPeriodic (bool periodic)
 empty virtual function to help builder classes More...
 
virtual bool evaluateDerivatives (real_type r, std::vector< qmcplusplus::TinyVector< real_type, 3 >> &derivs)
 
virtual bool evaluateDerivatives (real_type r, std::vector< real_type > &derivs)
 
virtual void setGridManager (bool willmanage)
 
virtual void checkInVariablesExclusive (opt_variables_type &active)=0
 check in variational parameters to the global list of parameters used by the optimizer. More...
 
virtual void resetParametersExclusive (const opt_variables_type &active)=0
 reset the parameters during optimizations More...
 
- Public Member Functions inherited from OptimizableObject
 OptimizableObject (const std::string &name)
 
const std::string & getName () const
 
bool isOptimized () const
 
void setOptimization (bool state)
 
virtual void writeVariationalParameters (hdf_archive &hout)
 Write the variational parameters for this object to the VP HDF file. More...
 
virtual void readVariationalParameters (hdf_archive &hin)
 Read the variational parameters for this object from the VP HDF file. More...
 

Static Public Member Functions

static void mw_evaluateV (const int num_groups, const CubicSplineSingle *const functors[], const int n_src, const int *grp_ids, const int num_pairs, const int *ref_at, const RT *mw_dist, const int dist_stride, RT *mw_vals, Vector< char, OffloadPinnedAllocator< char >> &transfer_buffer)
 evaluate sum of the pair potentials FIXME More...
 

Public Attributes

int NumParams
 
FNINInFunc
 
FNOUT OutFunc
 
int NumGridPoints
 
real_type Rmax
 
real_type GridDelta
 
real_type Y
 
real_type dY
 
real_type d2Y
 
- Public Attributes inherited from OptimizableFunctorBase
real_type cutoff_radius = 0.0
 maximum cutoff More...
 
opt_variables_type myVars
 set of variables to be optimized More...
 

Detailed Description

template<typename RT, typename FNOUT>
struct qmcplusplus::CubicSplineSingle< RT, FNOUT >

A numerical functor.

implements interfaces to be used for Jastrow functions and replaces CubicBsplineSingle. Template parameters

  • RT real data type
  • FNOUT final numerical functor An example is in CBSOBuilder.h which uses CubicBspline using SplineEngineType = CubicBspline<RealType,LINEAR_1DGRID,FIRSTDERIV_CONSTRAINTS>; using RadialOrbitalType = CubicSplineSingle<RealType,SplineEngineType>;

Definition at line 38 of file SplineFunctors.h.

Member Typedef Documentation

◆ FNIN

typedef of the source functor

Definition at line 43 of file SplineFunctors.h.

◆ grid_type

typedef for the grid

Definition at line 45 of file SplineFunctors.h.

◆ value_type

using value_type = RT

typedef for the value_type

Definition at line 41 of file SplineFunctors.h.

Constructor & Destructor Documentation

◆ CubicSplineSingle() [1/4]

CubicSplineSingle ( )
inline

constructor

Definition at line 58 of file SplineFunctors.h.

◆ CubicSplineSingle() [2/4]

CubicSplineSingle ( const CubicSplineSingle< RT, FNOUT > &  old)
inline

Definition at line 60 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::InFunc, CubicSplineSingle< RT, FNOUT >::initialize(), OptimizableFunctorBase::makeClone(), CubicSplineSingle< RT, FNOUT >::NumGridPoints, CubicSplineSingle< RT, FNOUT >::NumParams, and CubicSplineSingle< RT, FNOUT >::Rmax.

61  : OptimizableFunctorBase(old), NumGridPoints(old.NumGridPoints), Rmax(old.Rmax), GridDelta(old.GridDelta)
62  {
63  NumParams = 0;
64  if (old.InFunc)
65  {
66  initialize(old.InFunc->makeClone(), old.Rmax, old.NumGridPoints);
67  }
68  }
OptimizableFunctorBase(const std::string &name="")
default constructor
void initialize(FNIN *in_, grid_type *agrid)
set the input, analytic function

◆ CubicSplineSingle() [3/4]

CubicSplineSingle ( FNIN in_,
grid_type agrid 
)
inline

constructor with arguments

Definition at line 73 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::initialize().

73 : InFunc(in_) { initialize(in_, agrid); }
void initialize(FNIN *in_, grid_type *agrid)
set the input, analytic function

◆ CubicSplineSingle() [4/4]

CubicSplineSingle ( FNIN in_,
real_type  rc,
int  npts 
)
inline

constructor with arguments

Definition at line 75 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::initialize().

75 : InFunc(in_) { initialize(in_, rc, npts); }
void initialize(FNIN *in_, grid_type *agrid)
set the input, analytic function

Member Function Documentation

◆ checkInVariablesExclusive()

void checkInVariablesExclusive ( opt_variables_type active)
inlineoverridevirtual

check in variational parameters to the global list of parameters used by the optimizer.

Parameters
activea super set of optimizable variables

The existing checkInVariables implementation in WFC/SPO/.. are inclusive and it calls checkInVariables of its members class A: public SPOSet {} class B: public WFC { A objA; checkInVariables() { objA.checkInVariables(); } };

With OptimizableObject, class A: public OptimizableObject {} class B: public OptimizableObject { A objA; checkInVariablesExclusive() { // should not call objA.checkInVariablesExclusive() if objA has been extracted; } }; A vector of OptimizableObject, will be created by calling extractOptimizableObjects(). All the checkInVariablesExclusive() will be called through this vector and thus checkInVariablesExclusive implementation should only handle non-OptimizableObject members.

Implements OptimizableObject.

Definition at line 174 of file SplineFunctors.h.

References OptimizableFunctorBase::checkInVariablesExclusive(), and CubicSplineSingle< RT, FNOUT >::InFunc.

175  {
176  if (InFunc)
178  }
virtual void checkInVariablesExclusive(opt_variables_type &active)=0
check in variational parameters to the global list of parameters used by the optimizer.

◆ checkOutVariables()

void checkOutVariables ( const opt_variables_type active)
inlineoverridevirtual

check out variational optimizable variables

Parameters
activea super set of optimizable variables

Implements OptimizableFunctorBase.

Definition at line 180 of file SplineFunctors.h.

References OptimizableFunctorBase::checkOutVariables(), and CubicSplineSingle< RT, FNOUT >::InFunc.

181  {
182  if (InFunc)
183  InFunc->checkOutVariables(active);
184  }
virtual void checkOutVariables(const opt_variables_type &active)=0
check out variational optimizable variables

◆ df()

real_type df ( real_type  r)
inlineoverridevirtual

implement the virtual function of OptimizableFunctorBase

Implements OptimizableFunctorBase.

Definition at line 119 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc.

120  {
121  real_type dudr, d2udr2;
122  OutFunc.splint(r, dudr, d2udr2);
123  return dudr;
124  }
OHMMS_PRECISION real_type

◆ evaluate() [1/4]

real_type evaluate ( real_type  r,
real_type dudr,
real_type d2udr2,
real_type d3udr3 
)
inline

evaluate everything: value, first, second and third derivatives

Definition at line 88 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc.

89  {
90  std::cerr << "Third derivative not implemented for CubicSplineSingle.\n";
91  return OutFunc.splint(r, dudr, d2udr2);
92  }

◆ evaluate() [2/4]

real_type evaluate ( real_type  r,
real_type dudr,
real_type d2udr2 
)
inline

evaluate everything: value, first and second derivatives

Definition at line 97 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc.

97 { return OutFunc.splint(r, dudr, d2udr2); }

◆ evaluate() [3/4]

real_type evaluate ( real_type  r)
inline

evaluate value only

Definition at line 101 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc.

101 { return OutFunc.splint(r); }

◆ evaluate() [4/4]

real_type evaluate ( real_type  r,
real_type  rinv 
)
inline

evaluate value only

Function required for SphericalBasisSet

Definition at line 107 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc, and CubicSplineSingle< RT, FNOUT >::Y.

107 { return Y = OutFunc.splint(r); }

◆ evaluateAll()

real_type evaluateAll ( real_type  r,
real_type  rinv 
)
inline

evaluate everything: value, first and second derivatives

Function required for SphericalBasisSet

Definition at line 113 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::d2Y, CubicSplineSingle< RT, FNOUT >::dY, CubicSplineSingle< RT, FNOUT >::OutFunc, and CubicSplineSingle< RT, FNOUT >::Y.

◆ evaluateV()

real_type evaluateV ( const int  iat,
const int  iStart,
const int  iEnd,
const real_type *restrict  _distArray,
real_type *restrict  distArrayCompressed 
) const
inline

Definition at line 126 of file SplineFunctors.h.

131  {
132  // need to actually implement this!
133  return real_type(0);
134  }
optimize::VariableSet::real_type real_type
typedef for real values

◆ evaluateVGL()

void evaluateVGL ( const int  iat,
const int  iStart,
const int  iEnd,
const real_type distArray,
real_type *restrict  valArray,
real_type *restrict  gradArray,
real_type *restrict  laplArray,
real_type *restrict  distArrayCompressed,
int *restrict  distIndices 
) const
inline

Definition at line 153 of file SplineFunctors.h.

162  {
163  // need to actually implement this!
164  }

◆ f()

real_type f ( real_type  r)
inlineoverridevirtual

implement the virtual function of OptimizableFunctorBase

Implements OptimizableFunctorBase.

Definition at line 116 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::OutFunc.

116 { return OutFunc.splint(r); }

◆ initialize() [1/2]

void initialize ( FNIN in_,
grid_type agrid 
)
inline

set the input, analytic function

Definition at line 204 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::initialize(), OneDimGridBase< T, CT >::rmax(), and OneDimGridBase< T, CT >::size().

Referenced by CubicSplineSingle< RT, FNOUT >::CubicSplineSingle(), and CubicSplineSingle< RT, FNOUT >::initialize().

204 { initialize(in_, agrid->rmax(), agrid->size()); }
void initialize(FNIN *in_, grid_type *agrid)
set the input, analytic function

◆ initialize() [2/2]

void initialize ( FNIN in_,
real_type  rmax,
int  npts 
)
inline

◆ isOptimizable()

bool isOptimizable ( )
inline

Definition at line 84 of file SplineFunctors.h.

84 { return false; }

◆ makeClone()

OptimizableFunctorBase* makeClone ( ) const
inlineoverridevirtual

create a clone of this object

Implements OptimizableFunctorBase.

Definition at line 70 of file SplineFunctors.h.

70 { return new CubicSplineSingle<RT, FNOUT>(*this); }

◆ mw_evaluateV()

static void mw_evaluateV ( const int  num_groups,
const CubicSplineSingle< RT, FNOUT > *const  functors[],
const int  n_src,
const int *  grp_ids,
const int  num_pairs,
const int *  ref_at,
const RT *  mw_dist,
const int  dist_stride,
RT *  mw_vals,
Vector< char, OffloadPinnedAllocator< char >> &  transfer_buffer 
)
inlinestatic

evaluate sum of the pair potentials FIXME

Returns
$\sum u(r_j)$ for r_j < cutoff_radius

Definition at line 139 of file SplineFunctors.h.

149  {
150  throw std::runtime_error("mw_evaluateV not implemented!");
151  }

◆ print()

void print ( std::ostream &  os)
inline

Definition at line 196 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::GridDelta, CubicSplineSingle< RT, FNOUT >::NumGridPoints, and CubicSplineSingle< RT, FNOUT >::OutFunc.

197  {
198  real_type r = 0;
199  for (int i = 0; i < NumGridPoints; i++, r += GridDelta)
200  os << r << " " << OutFunc.splint(r) << std::endl;
201  }
OHMMS_PRECISION real_type

◆ put()

bool put ( xmlNodePtr  cur)
inlineoverridevirtual

process xmlnode and registers variables to optimize

Parameters
curxmlNode for a functor

Implements OptimizableFunctorBase.

Definition at line 166 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::InFunc, OptimizableFunctorBase::put(), and qmcplusplus::Units::time::s.

167  {
168  bool s = false;
169  if (InFunc)
170  s = InFunc->put(cur);
171  return s;
172  }
virtual bool put(xmlNodePtr cur)=0
process xmlnode and registers variables to optimize

◆ reportStatus()

void reportStatus ( std::ostream &  os)
inlineoverridevirtual

print the state, e.g., optimizables

Reimplemented from OptimizableObject.

Definition at line 79 of file SplineFunctors.h.

80  {
81  //myVars.print(os);
82  }

◆ reset()

void reset ( )
inlineoverridevirtual

reset function

Implements OptimizableFunctorBase.

Definition at line 215 of file SplineFunctors.h.

References APP_ABORT, OptimizableFunctorBase::df(), OptimizableFunctorBase::f(), CubicSplineSingle< RT, FNOUT >::GridDelta, CubicSplineSingle< RT, FNOUT >::InFunc, CubicSplineSingle< RT, FNOUT >::NumGridPoints, CubicSplineSingle< RT, FNOUT >::OutFunc, and CubicSplineSingle< RT, FNOUT >::Rmax.

Referenced by CubicSplineSingle< RT, FNOUT >::initialize(), and CubicSplineSingle< RT, FNOUT >::resetParametersExclusive().

216  {
217  if (InFunc)
218  {
219  typename FNOUT::container_type datain(NumGridPoints);
220  real_type r = 0;
221  for (int i = 0; i < NumGridPoints; i++, r += GridDelta)
222  {
223  datain[i] = InFunc->f(r);
224  }
225  OutFunc.Init(0.0, Rmax, datain, true, InFunc->df(0.0), 0.0);
226  }
227  else
228  {
229  APP_ABORT("CubicSplineSingle::reset has no input functor");
230  }
231  }
virtual real_type f(real_type r)=0
evaluate the value at r
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
Definition: AppAbort.h:27
OHMMS_PRECISION real_type
virtual real_type df(real_type r)=0
evaluate the first derivative

◆ resetParametersExclusive()

void resetParametersExclusive ( const opt_variables_type active)
inlineoverridevirtual

reset the input/output function

Implements OptimizableObject.

Definition at line 187 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::InFunc, CubicSplineSingle< RT, FNOUT >::reset(), and OptimizableFunctorBase::resetParametersExclusive().

188  {
189  if (InFunc)
190  {
192  reset();
193  }
194  }
virtual void resetParametersExclusive(const opt_variables_type &active)=0
reset the parameters during optimizations
void reset() override
reset function

◆ setInFunc()

void setInFunc ( FNIN in_)
inline

set the input, analytic function

Definition at line 77 of file SplineFunctors.h.

References CubicSplineSingle< RT, FNOUT >::InFunc.

77 { InFunc = in_; }

Member Data Documentation

◆ d2Y

real_type d2Y

Definition at line 56 of file SplineFunctors.h.

Referenced by CubicSplineSingle< RT, FNOUT >::evaluateAll().

◆ dY

Definition at line 55 of file SplineFunctors.h.

Referenced by CubicSplineSingle< RT, FNOUT >::evaluateAll().

◆ GridDelta

◆ InFunc

◆ NumGridPoints

◆ NumParams

int NumParams

Definition at line 48 of file SplineFunctors.h.

Referenced by CubicSplineSingle< RT, FNOUT >::CubicSplineSingle().

◆ OutFunc

◆ Rmax

◆ Y


The documentation for this struct was generated from the following file: