16 #ifndef dealii_function_cspline_h
17 #define dealii_function_cspline_h
21 #ifdef DEAL_II_WITH_GSL
26 # include <gsl/gsl_spline.h>
36 <<
"Interpolation points vector size can not be <" << arg1
42 <<
"The size of interpolation points <" << arg1
43 <<
"> is different from the size of interpolation values <"
51 <<
"The input interpolation points are not strictly ordered : "
53 <<
"x[" << arg1 <<
"] = " << arg2 <<
" >= x[" << (arg1 + 1)
54 <<
"] = " << arg3 <<
'.');
61 <<
"Spline function can not be evaluated outside of the interpolation range: "
63 << arg1 <<
" is not in [" << arg2 <<
';' << arg3 <<
"].");
89 const unsigned int component = 0)
const override;
93 const unsigned int component = 0)
const override;
97 const unsigned int component = 0)
const override;
101 const unsigned int component = 0)
const override;
123 std::unique_ptr<gsl_interp_accel, void (*)(gsl_interp_accel *)>
acc;
128 std::unique_ptr<gsl_spline, void (*)(gsl_spline *)>
cspline;
virtual SymmetricTensor< 2, dim > hessian(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &point, const unsigned int component=0) const override
CSpline(const std::vector< double > &interpolation_points, const std::vector< double > &interpolation_values)
virtual std::size_t memory_consumption() const override
std::unique_ptr< gsl_interp_accel, void(*)(gsl_interp_accel *)> acc
const std::vector< double > interpolation_points
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
const std::vector< double > interpolation_values
std::unique_ptr< gsl_spline, void(*)(gsl_spline *)> cspline
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcCSplineEmpty(int arg1)
static ::ExceptionBase & ExcCSplineRange(double arg1, double arg2, double arg3)
#define DeclException2(Exception2, type1, type2, outsequence)
static ::ExceptionBase & ExcCSplineOrder(int arg1, double arg2, double arg3)
#define DeclException3(Exception3, type1, type2, type3, outsequence)
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcCSplineSizeMismatch(int arg1, int arg2)
Point< spacedim > point(const gp_Pnt &p, const double tolerance=1e-10)