17 #ifndef __deal2__polynomials_piecewise_h
18 #define __deal2__polynomials_piecewise_h
22 #include <deal.II/base/config.h>
24 #include <deal.II/base/subscriptor.h>
25 #include <deal.II/base/polynomial.h>
26 #include <deal.II/base/point.h>
30 DEAL_II_NAMESPACE_OPEN
55 template <
typename number>
73 const bool spans_next_interval);
81 number
value (
const number x)
const;
97 void value (
const number x,
98 std::vector<number> &values)
const;
104 unsigned int degree ()
const;
110 template <
class Archive>
111 void serialize (Archive &ar,
const unsigned int version);
146 std::vector<PiecewisePolynomial<double> >
148 const unsigned int base_degree);
157 namespace Polynomials
159 template <
typename number>
164 return polynomial.degree();
169 template <
typename number>
179 const number step = 1./n_intervals;
182 if (spans_two_intervals ==
true)
184 const number offset = step * interval;
187 else if (x>offset+step+step)
189 else if (x<offset+step)
192 y = offset+step+step-x;
196 const number offset = step * interval;
197 if (x<offset || x>offset+step)
203 return polynomial.value(y);
206 return polynomial.value(x);
211 template <
typename number>
212 template <
class Archive>
222 ar &spans_two_intervals;
227 DEAL_II_NAMESPACE_CLOSE
unsigned int degree() const
number value(const number x) const
#define AssertIndexRange(index, range)
void serialize(Archive &ar, const unsigned int version)
std::vector< PiecewisePolynomial< double > > generate_complete_Lagrange_basis_on_subdivisions(const unsigned int n_subdivisions, const unsigned int base_degree)
Polynomial< number > polynomial
PiecewisePolynomial(const Polynomial< number > &coefficients_on_interval, const unsigned int n_intervals, const unsigned int interval, const bool spans_next_interval)