13#ifndef dealii_polynomials_piecewise_h
14#define dealii_polynomials_piecewise_h
60 template <
typename number>
78 const bool spans_next_interval);
87 const unsigned int index);
96 value(
const number x)
const;
113 value(
const number x, std::vector<number> &values)
const;
131 value(
const number x,
132 const unsigned int n_derivatives,
133 number *values)
const;
147 template <
class Archive>
149 serialize(Archive &ar,
const unsigned int version);
208 std::vector<PiecewisePolynomial<double>>
210 const unsigned int n_subdivisions,
211 const unsigned int base_degree);
217 std::vector<PiecewisePolynomial<double>>
219 const std::vector<
Point<1>> &points);
230 template <
typename number>
234 if (points.size() > 0)
236 return polynomial.degree();
241 template <
typename number>
245 if (points.size() > 0)
247 if (x > points[index])
248 return std::max<number>(0.0,
249 1.0 - (x - points[index]) *
250 one_over_lengths[index]);
251 else if (x < points[index])
252 return std::max<number>(0.0,
253 0.0 + (x - points[index - 1]) *
254 one_over_lengths[index - 1]);
264 const number step = 1. / n_intervals;
267 if (spans_two_intervals ==
true)
269 const number offset = step * interval;
272 else if (x > offset + step + step)
274 else if (x < offset + step)
277 y = offset + step + step - x;
281 const number offset = step * interval;
282 if (x < offset || x > offset + step)
288 return polynomial.value(y);
291 return polynomial.value(x);
296 template <
typename number>
297 template <
class Archive>
306 ar &spans_two_intervals;
308 ar &one_over_lengths;
Polynomial< number > polynomial
unsigned int degree() const
void serialize(Archive &ar, const unsigned int version)
std::vector< number > one_over_lengths
number value(const number x) const
virtual std::size_t memory_consumption() const
std::vector< number > points
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define AssertIndexRange(index, range)
std::vector< PiecewisePolynomial< double > > generate_complete_linear_basis_on_subdivisions(const std::vector< Point< 1 > > &points)
std::vector< PiecewisePolynomial< double > > generate_complete_Lagrange_basis_on_subdivisions(const unsigned int n_subdivisions, const unsigned int base_degree)