16 #include <deal.II/base/function_cspline.h> 17 #include <deal.II/base/point.h> 19 #ifdef DEAL_II_WITH_GSL 23 DEAL_II_NAMESPACE_OPEN
28 const std::vector<double> &y_)
29 : interpolation_points(x_)
30 , interpolation_values(y_)
46 acc = gsl_interp_accel_alloc();
48 cspline = gsl_spline_alloc(gsl_interp_cspline, n);
61 gsl_interp_accel_free(
acc);
78 const double &x = p[0];
99 const double &x = p[0];
106 const double deriv = gsl_spline_eval_deriv(
cspline, x,
acc);
123 const double &x = p[0];
130 return gsl_spline_eval_deriv2(
cspline, x,
acc);
161 DEAL_II_NAMESPACE_CLOSE
virtual SymmetricTensor< 2, dim > hessian(const Point< dim > &p, const unsigned int component=0) const override
virtual ~CSpline() override
virtual double laplacian(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
#define AssertThrow(cond, exc)
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
static::ExceptionBase & ExcCSplineEmpty(int arg1)
#define Assert(cond, exc)
const std::vector< double > interpolation_points
static::ExceptionBase & ExcCSplineOrder(int arg1, double arg2, double arg3)
const std::vector< double > interpolation_values
static::ExceptionBase & ExcCSplineRange(double arg1, double arg2, double arg3)
static::ExceptionBase & ExcCSplineSizeMismatch(int arg1, int arg2)
CSpline(const std::vector< double > &interpolation_points, const std::vector< double > &interpolation_values)