18 #include <deal.II/base/utilities.h> 19 #include <deal.II/base/memory_consumption.h> 20 #include <deal.II/base/polynomial.h> 21 #include <deal.II/base/tensor_product_polynomials.h> 22 #include <deal.II/base/polynomials_piecewise.h> 23 #include <deal.II/fe/fe_poly.h> 25 #include <deal.II/matrix_free/shape_info.h> 33 namespace MatrixFreeFunctions
38 template <
typename Number>
47 template <
typename Number>
54 ExcMessage(
"FEEvaluation only works for scalar finite elements."));
56 const unsigned int n_dofs_1d = fe.
degree+1,
57 n_q_points_1d = quad.
size();
72 lexicographic = fe_poly != 0 ?
84 n_q_points = Utilities::fixed_power<dim>(n_q_points_1d);
89 const unsigned int array_size = n_dofs_1d*n_q_points_1d;
103 for (
unsigned int i=0; i<n_dofs_1d; ++i)
107 const unsigned int my_i = lexicographic[i];
108 for (
unsigned int q=0; q<n_q_points_1d; ++q)
146 const unsigned int jump_term =
147 this->dofs_per_face*((i*n_dofs_1d)/this->dofs_per_face);
152 (n_dofs_1d-1)*n_dofs_1d);
154 this->
face_indices(5,i) = (n_dofs_1d-1)*this->dofs_per_face+i;
160 for (
unsigned int i=0; i<n_dofs_1d; i++)
182 template <
typename Number>
186 std::size_t memory =
sizeof(*this);
191 for (
unsigned int i=0; i<2; ++i)
207 DEAL_II_NAMESPACE_CLOSE
void reinit(const TableIndices< N > &new_size, const bool fast=false)
#define AssertDimension(dim1, dim2)
std::vector< Number > subface_value[2]
std::vector< Number > face_value[2]
::ExceptionBase & ExcMessage(std::string arg1)
const unsigned int degree
std::vector< Number > face_gradient[2]
AlignedVector< VectorizedArray< Number > > shape_hessians
const std::vector< Point< dim > > & get_points() const
unsigned int size() const
std::vector< Number > shape_gradient_number
#define Assert(cond, exc)
std::size_t memory_consumption(const T &t)
unsigned int n_q_points_face
std::size_t memory_consumption() const
std::vector< Number > shape_values_number
unsigned int n_components() const
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const
void reinit(const Quadrature< 1 > &quad, const FiniteElement< dim > &fe_dim)
const unsigned int dofs_per_cell
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const
void resize_fast(const size_type size)
unsigned int dofs_per_face
std::size_t memory_consumption() const
std::vector< unsigned int > get_poly_space_numbering_inverse() const
Table< 2, unsigned int > face_indices
unsigned int dofs_per_cell
::ExceptionBase & ExcNotImplemented()
AlignedVector< VectorizedArray< Number > > shape_values
AlignedVector< VectorizedArray< Number > > shape_gradients
virtual double shape_value(const unsigned int i, const Point< dim > &p) const
::ExceptionBase & ExcInternalError()