Reference documentation for deal.II version 8.4.1
internal::MatrixFreeFunctions::ShapeInfo< Number > Struct Template Reference

#include <deal.II/matrix_free/shape_info.h>

## Public Member Functions

ShapeInfo ()

template<int dim>
ShapeInfo (const Quadrature< 1 > &quad, const FiniteElement< dim > &fe, const unsigned int base_element=0)

template<int dim>
void reinit (const Quadrature< 1 > &quad, const FiniteElement< dim > &fe_dim, const unsigned int base_element=0)

std::size_t memory_consumption () const

bool check_1d_shapes_symmetric (const unsigned int n_q_points_1d)

bool check_1d_shapes_gausslobatto ()

## Public Attributes

ElementType element_type

AlignedVector< VectorizedArray< Number > > shape_values

AlignedVector< VectorizedArray< Number > > shape_gradients

AlignedVector< VectorizedArray< Number > > shape_hessians

AlignedVector< VectorizedArray< Number > > shape_val_evenodd

AlignedVector< VectorizedArray< Number > > shape_gra_evenodd

AlignedVector< VectorizedArray< Number > > shape_hes_evenodd

::Table< 2, unsigned int > face_indices

std::vector< Number > face_value [2]

std::vector< Number > subface_value [2]

std::vector< Number > shape_values_number

std::vector< unsigned int > lexicographic_numbering

unsigned int fe_degree

unsigned int n_q_points

unsigned int dofs_per_cell

unsigned int n_q_points_face

unsigned int dofs_per_face

## Detailed Description

### template<typename Number> struct internal::MatrixFreeFunctions::ShapeInfo< Number >

The class that stores the shape functions, gradients and Hessians evaluated for a tensor product finite element and tensor product quadrature formula on the unit cell. Because of this structure, only one-dimensional data is stored.

Definition at line 59 of file shape_info.h.

## Constructor & Destructor Documentation

template<typename Number>
 internal::MatrixFreeFunctions::ShapeInfo< Number >::ShapeInfo ( )

Empty constructor. Does nothing.

template<typename Number >
template<int dim>
 internal::MatrixFreeFunctions::ShapeInfo< Number >::ShapeInfo ( const Quadrature< 1 > & quad, const FiniteElement< dim > & fe, const unsigned int base_element = 0 )
inline

Constructor that initializes the data fields using the reinit method.

Definition at line 239 of file shape_info.h.

## Member Function Documentation

template<typename Number>
template<int dim>
 void internal::MatrixFreeFunctions::ShapeInfo< Number >::reinit ( const Quadrature< 1 > & quad, const FiniteElement< dim > & fe_dim, const unsigned int base_element = 0 )

Initializes the data fields. Takes a one-dimensional quadrature formula and a finite element as arguments and evaluates the shape functions, gradients and Hessians on the one-dimensional unit cell. This function assumes that the finite element is derived from a one- dimensional element by a tensor product and that the zeroth shape function in zero evaluates to one.

template<typename Number>
 std::size_t internal::MatrixFreeFunctions::ShapeInfo< Number >::memory_consumption ( ) const

Returns the memory consumption of this class in bytes.

template<typename Number>
 bool internal::MatrixFreeFunctions::ShapeInfo< Number >::check_1d_shapes_symmetric ( const unsigned int n_q_points_1d )

Checks whether we have symmetries in the shape values. In that case, also fill the shape_???_evenodd fields.

template<typename Number>
 bool internal::MatrixFreeFunctions::ShapeInfo< Number >::check_1d_shapes_gausslobatto ( )

Checks whether symmetric 1D basis functions are such that the shape values form a diagonal matrix, which allows to use specialized algorithms that save some operations.

## Member Data Documentation

template<typename Number>
 ElementType internal::MatrixFreeFunctions::ShapeInfo< Number >::element_type

Encodes the type of element detected at construction. FEEvaluation will select the most efficient algorithm based on the given element type.

Definition at line 97 of file shape_info.h.

template<typename Number>
 AlignedVector > internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_values

Stores the shape values of the 1D finite element evaluated on all 1D quadrature points in vectorized format, i.e., as an array of VectorizedArray<dim>::n_array_elements equal elements. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 106 of file shape_info.h.

template<typename Number>

Stores the shape gradients of the 1D finite element evaluated on all 1D quadrature points in vectorized format, i.e., as an array of VectorizedArray<dim>::n_array_elements equal elements. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 115 of file shape_info.h.

template<typename Number>
 AlignedVector > internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_hessians

Stores the shape Hessians of the 1D finite element evaluated on all 1D quadrature points in vectorized format, i.e., as an array of VectorizedArray<dim>::n_array_elements equal elements. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 124 of file shape_info.h.

template<typename Number>
 AlignedVector > internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_val_evenodd

Stores the shape values in a different format, namely the so-called even-odd scheme where the symmetries in shape_values are used for faster evaluation.

Definition at line 131 of file shape_info.h.

template<typename Number>
 AlignedVector > internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_gra_evenodd

Stores the shape gradients in a different format, namely the so- called even-odd scheme where the symmetries in shape_gradients are used for faster evaluation.

Definition at line 138 of file shape_info.h.

template<typename Number>
 AlignedVector > internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_hes_evenodd

Stores the shape second derivatives in a different format, namely the so-called even-odd scheme where the symmetries in shape_hessians are used for faster evaluation.

Definition at line 145 of file shape_info.h.

template<typename Number>
 ::Table<2,unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::face_indices

Stores the indices from cell DoFs to face DoFs. The rows go through the 2*dim faces, and the columns the DoFs on the faces.

Definition at line 151 of file shape_info.h.

template<typename Number>
 std::vector internal::MatrixFreeFunctions::ShapeInfo< Number >::face_value[2]

Stores one-dimensional values of shape functions evaluated in zero and one, i.e., on the one-dimensional faces. Not vectorized.

Definition at line 157 of file shape_info.h.

template<typename Number>

Stores one-dimensional gradients of shape functions evaluated in zero and one, i.e., on the one-dimensional faces. Not vectorized.

Definition at line 163 of file shape_info.h.

template<typename Number>
 std::vector internal::MatrixFreeFunctions::ShapeInfo< Number >::subface_value[2]

Stores one-dimensional values of shape functions on subface. Since there are two subfaces, store two variants. Not vectorized.

Definition at line 169 of file shape_info.h.

template<typename Number>
 std::vector internal::MatrixFreeFunctions::ShapeInfo< Number >::shape_values_number

Non-vectorized version of shape values. Needed when evaluating face info.

Definition at line 175 of file shape_info.h.

template<typename Number>

Non-vectorized version of shape gradients. Needed when evaluating face info.

Definition at line 181 of file shape_info.h.

template<typename Number>
 std::vector internal::MatrixFreeFunctions::ShapeInfo< Number >::lexicographic_numbering

Renumbering from deal.II's numbering of cell degrees of freedom to lexicographic numbering used inside the FEEvaluation schemes of the underlying element in the DoFHandler. For vector-valued elements, the renumbering starts with a lexicographic numbering of the first component, then everything of the second component, and so on.

Definition at line 190 of file shape_info.h.

template<typename Number>
 unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::fe_degree

Stores the degree of the element.

Definition at line 195 of file shape_info.h.

template<typename Number>
 unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_q_points

Stores the number of quadrature points in dim dimensions for a cell.

Definition at line 201 of file shape_info.h.

template<typename Number>
 unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::dofs_per_cell

Stores the number of DoFs per cell in dim dimensions.

Definition at line 206 of file shape_info.h.

template<typename Number>
 unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_q_points_face

Stores the number of quadrature points per face in dim dimensions.

Definition at line 211 of file shape_info.h.

template<typename Number>
 unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::dofs_per_face

Stores the number of DoFs per face in dim dimensions.

Definition at line 216 of file shape_info.h.

The documentation for this struct was generated from the following file: