ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Protected Member Functions | Protected Attributes | List of all members
CubicSplineTest Class Reference

Unit test of class CubicSpline. More...

Inheritance diagram for CubicSplineTest:
Collaboration diagram for CubicSplineTest:

Protected Member Functions

 CubicSplineTest ()
 
 ~CubicSplineTest ()=default
 
double error_bound (int n, const double *x, const std::function< double(double)> &f, int d=0) const
 theoretical error bound for complete cubic spline
 
void read (const std::string &fname, int &n, double *x, double *y, BoundaryCondition &bc_start, BoundaryCondition &bc_end, int &n_interp, double *x_interp, double *y_interp, double *dy_interp, double *d2y_interp) const
 

Protected Attributes

int n_max_
 maximum number of knots
 
std::vector< double > spline_
 buffer for a cubic spline (x_, y_ & dy_)
 
double * x_
 knots (x-coordinates of data points)
 
double * y_
 values at knots (y-coordinates of data points)
 
double * dy_
 derivatives at knots (computed when building a cubic spline)
 
int n_interp_max_
 maximum number of places to evaluate an interpolant
 
std::vector< double > interp_
 buffer for interpolant evaluation
 
double * x_interp_
 places to evaluate an interpolant
 
double * y_interp_
 values and derivatives of the interpolant at x_interp_
 
double * dy_interp_
 
double * d2y_interp_
 
double * y_ref_
 reference values and derivatives
 
double * dy_ref_
 
double * d2y_ref_
 
const double tol_ [3] = {1e-14, 1e-13, 1e-12}
 y/dy/d2y tolerance for cross-check
 
std::vector< std::vector< std::function< double(double)> > > f_
 Sample functions & derivatives in error bound check.
 

Detailed Description

Unit test of class CubicSpline.

Tested functions include:

Constructor & Destructor Documentation

◆ CubicSplineTest()

CubicSplineTest::CubicSplineTest ( )
protected

◆ ~CubicSplineTest()

CubicSplineTest::~CubicSplineTest ( )
protecteddefault

Member Function Documentation

◆ error_bound()

double CubicSplineTest::error_bound ( int  n,
const double *  x,
const std::function< double(double)> &  f,
int  d = 0 
) const
protected

theoretical error bound for complete cubic spline

◆ read()

void CubicSplineTest::read ( const std::string &  fname,
int &  n,
double *  x,
double *  y,
BoundaryCondition bc_start,
BoundaryCondition bc_end,
int &  n_interp,
double *  x_interp,
double *  y_interp,
double *  dy_interp,
double *  d2y_interp 
) const
protected

Member Data Documentation

◆ d2y_interp_

double* CubicSplineTest::d2y_interp_
protected

◆ d2y_ref_

double* CubicSplineTest::d2y_ref_
protected

◆ dy_

double* CubicSplineTest::dy_
protected

derivatives at knots (computed when building a cubic spline)

◆ dy_interp_

double* CubicSplineTest::dy_interp_
protected

◆ dy_ref_

double* CubicSplineTest::dy_ref_
protected

◆ f_

std::vector<std::vector<std::function<double(double)> > > CubicSplineTest::f_
protected

Sample functions & derivatives in error bound check.

Note
Functions with vanishing 4-th derivative in an interval should in principle be interpolated exactly by a cubic spline. However, the presence of floating-point rounding errors would lead to some discrepancy between the interpolant and the original function. Such error is not covered by the error bound formula. Functions here should not include those kind of functions.

◆ interp_

std::vector<double> CubicSplineTest::interp_
protected

buffer for interpolant evaluation

◆ n_interp_max_

int CubicSplineTest::n_interp_max_
protected

maximum number of places to evaluate an interpolant

◆ n_max_

int CubicSplineTest::n_max_
protected

maximum number of knots

◆ spline_

std::vector<double> CubicSplineTest::spline_
protected

buffer for a cubic spline (x_, y_ & dy_)

◆ tol_

const double CubicSplineTest::tol_[3] = {1e-14, 1e-13, 1e-12}
protected

y/dy/d2y tolerance for cross-check

◆ x_

double* CubicSplineTest::x_
protected

knots (x-coordinates of data points)

◆ x_interp_

double* CubicSplineTest::x_interp_
protected

places to evaluate an interpolant

◆ y_

double* CubicSplineTest::y_
protected

values at knots (y-coordinates of data points)

◆ y_interp_

double* CubicSplineTest::y_interp_
protected

values and derivatives of the interpolant at x_interp_

◆ y_ref_

double* CubicSplineTest::y_ref_
protected

reference values and derivatives


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