18#ifdef DEAL_II_WITH_GSL
27 const std::vector<double> &
y_)
28 : interpolation_points(
x_)
29 , interpolation_values(
y_)
35 Assert(interpolation_points.size() > 0,
38 Assert(interpolation_points.size() == interpolation_values.size(),
40 interpolation_values.size()));
43 for (
unsigned int i = 0; i < interpolation_points.size() - 1; ++i)
44 AssertThrow(interpolation_points[i] < interpolation_points[i + 1],
46 interpolation_points[i],
47 interpolation_points[i + 1]));
49 const unsigned int n = interpolation_points.size();
52 interpolation_points.data(),
53 interpolation_values.data(),
66 std::lock_guard<std::mutex> lock(acc_mutex);
68 const double x = p[0];
69 Assert(
x >= interpolation_points.front() &&
70 x <= interpolation_points.back(),
72 interpolation_points.front(),
73 interpolation_points.back()));
87 std::lock_guard<std::mutex> lock(acc_mutex);
89 const double x = p[0];
90 Assert(
x >= interpolation_points.front() &&
91 x <= interpolation_points.back(),
93 interpolation_points.front(),
94 interpolation_points.back()));
111 std::lock_guard<std::mutex> lock(acc_mutex);
113 const double x = p[0];
114 Assert(
x >= interpolation_points.front() &&
115 x <= interpolation_points.back(),
117 interpolation_points.front(),
118 interpolation_points.back()));
130 res[0][0] = laplacian(p);
142 return sizeof(*this) + 2 *
sizeof(double) * interpolation_values.size();
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
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
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 & ExcCSplineSizeMismatch(int arg1, int arg2)
#define Assert(cond, exc)
static ::ExceptionBase & ExcCSplineRange(double arg1, double arg2, double arg3)
static ::ExceptionBase & ExcCSplineOrder(int arg1, double arg2, double arg3)
static ::ExceptionBase & ExcCSplineEmpty(int arg1)
#define AssertThrow(cond, exc)