52 template <dftefe::utils::MemorySpace memorySpace>
70 Func(
const double * knotX,
83 eval(
double xi)
const;
85 deriv(
int order,
double xi)
const;
139#ifdef DFTEFE_WITH_DEVICE
142 syncToDevice()
const;
145 mutable std::unique_ptr<MemoryStorage<double, utils::MemorySpace::DEVICE>>
147 mutable std::unique_ptr<MemoryStorage<double, utils::MemorySpace::DEVICE>>
149 mutable std::unique_ptr<MemoryStorage<double, utils::MemorySpace::DEVICE>>
151 mutable std::unique_ptr<MemoryStorage<double, utils::MemorySpace::DEVICE>>
153 mutable std::unique_ptr<MemoryStorage<double, utils::MemorySpace::DEVICE>>
155 mutable bool d_deviceSynced;
163 Spline(
const std::vector<double> &X,
164 const std::vector<double> &Y,
165 const bool isSubdivPowerLawGrid =
false,
169 double left_value = 0.0,
171 double right_value = 0.0);
183 const std::vector<double> &y,
202 deriv(
int order,
double x)
const;
218 assert(!
d_x.empty());
224 assert(!
d_x.empty());
232 template <dftefe::utils::MemorySpace memorySpace>
236 template <dftefe::utils::MemorySpace memorySpace>
243 template <dftefe::utils::MemorySpace memorySpace>
252 namespace splineInternal
271 return (
int)
d_upper.size() - 1;
276 return (
int)
d_lower.size() - 1;
291 r_solve(
const std::vector<double> &b)
const;
293 l_solve(
const std::vector<double> &b)
const;
295 lu_solve(
const std::vector<double> &b,
bool is_lu_decomposed =
false);
#define DFTEFE_HOST_DEVICE_FUNC
Definition: DeviceKernelLauncherHelpers.h:306
DFTEFE_HOST_DEVICE_FUNC double eval(double xi) const
Definition: SplineKernels.h:215
const double * d_coefD
Definition: Spline.h:92
bool d_isSubdivGrid
Definition: Spline.h:95
const double * d_knotX
Definition: Spline.h:88
double d_c0
Definition: Spline.h:94
Func()
Definition: Spline.h:56
const double * d_coefC
Definition: Spline.h:91
dftefe::size_type d_numSubDiv
Definition: Spline.h:98
const double * d_knotY
Definition: Spline.h:89
double d_a
Definition: Spline.h:96
size_type d_nKnots
Definition: Spline.h:93
double d_r
Definition: Spline.h:97
const double * d_coefB
Definition: Spline.h:90
DFTEFE_HOST_DEVICE_FUNC double deriv(int order, double xi) const
Definition: SplineKernels.h:233
double d_right_value
Definition: Spline.h:125
double d_left_value
Definition: Spline.h:125
void evalAll(size_type numPoints, const double *x, double *y, utils::deviceStream_t streamId=utils::defaultStream) const
double deriv(int order, double x) const
Definition: Spline.cpp:621
double get_x_max() const
Definition: Spline.h:222
spline_type d_type
Definition: Spline.h:123
void set_points(const std::vector< double > &x, const std::vector< double > &y, spline_type type=cspline)
Definition: Spline.cpp:418
double get_x_min() const
Definition: Spline.h:216
double d_r
Definition: Spline.h:128
double d_c0
Definition: Spline.h:122
void set_boundary(bd_type left, double left_value, bd_type right, double right_value)
Definition: Spline.cpp:158
std::vector< double > get_y() const
Definition: Spline.h:211
void derivAll(size_type numPoints, int order, const double *x, double *y, utils::deviceStream_t streamId=utils::defaultStream) const
bd_type
Definition: Spline.h:111
@ second_deriv
Definition: Spline.h:113
@ first_deriv
Definition: Spline.h:112
bd_type d_left
Definition: Spline.h:124
spline_type
Definition: Spline.h:103
@ cspline
Definition: Spline.h:105
@ cspline_hermite
Definition: Spline.h:106
@ linear
Definition: Spline.h:104
std::vector< double > d_b
Definition: Spline.h:121
std::vector< double > d_y
Definition: Spline.h:117
double operator()(double x) const
Definition: Spline.cpp:551
bd_type d_right
Definition: Spline.h:124
std::vector< double > coefficients(double x) const
Definition: Spline.cpp:582
std::vector< double > d_d
Definition: Spline.h:121
bool d_made_monotonic
Definition: Spline.h:126
std::string info() const
Definition: Spline.cpp:684
Func< memorySpace > getFunc() const
size_t find_closest(double x) const
Definition: Spline.cpp:495
Spline()
Definition: Spline.cpp:111
std::vector< double > get_x() const
Definition: Spline.h:206
bool make_monotonic()
Definition: Spline.cpp:431
void computeAndSync(spline_type type)
Definition: Spline.cpp:235
void set_coeffs_from_b()
Definition: Spline.cpp:172
std::vector< double > d_c
Definition: Spline.h:121
dftefe::size_type d_numSubDiv
Definition: Spline.h:129
std::vector< double > d_x
Definition: Spline.h:117
bool d_isSubdivPowerLawGrid
Definition: Spline.h:127
double d_a
Definition: Spline.h:128
std::vector< std::vector< double > > d_lower
Definition: Spline.h:259
int num_lower() const
Definition: Spline.h:274
band_matrix()
Definition: Spline.h:261
std::vector< std::vector< double > > d_upper
Definition: Spline.h:258
~band_matrix()
Definition: Spline.h:263
double & saved_diag(int i)
Definition: Spline.cpp:813
std::vector< double > r_solve(const std::vector< double > &b) const
Definition: Spline.cpp:882
int num_upper() const
Definition: Spline.h:269
std::vector< double > l_solve(const std::vector< double > &b) const
Definition: Spline.cpp:864
int dim() const
Definition: Spline.cpp:766
void resize(int dim, int n_u, int n_l)
Definition: Spline.cpp:749
double & operator()(int i, int j)
Definition: Spline.cpp:782
std::vector< double > lu_solve(const std::vector< double > &b, bool is_lu_decomposed=false)
Definition: Spline.cpp:900
void lu_decompose()
Definition: Spline.cpp:821
static cudaStream_t defaultStream
Definition: DeviceTypeConfig.cu.h:62
cudaStream_t deviceStream_t
Definition: DeviceTypeConfig.cu.h:27
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9