Reference documentation for deal.II version GIT 20f059c89a 2022-12-04 14:55:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | Public Attributes | List of all members
internal::MatrixFreeFunctions::UnivariateShapeData< Number > Struct Template Reference

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

Public Member Functions

 UnivariateShapeData ()
 
std::size_t memory_consumption () const
 

Public Attributes

ElementType element_type
 
AlignedVector< Number > shape_values
 
AlignedVector< Number > shape_gradients
 
AlignedVector< Number > shape_hessians
 
AlignedVector< Number > shape_gradients_collocation
 
AlignedVector< Number > shape_hessians_collocation
 
AlignedVector< Number > shape_values_eo
 
AlignedVector< Number > shape_gradients_eo
 
AlignedVector< Number > shape_hessians_eo
 
AlignedVector< Number > shape_gradients_collocation_eo
 
AlignedVector< Number > shape_hessians_collocation_eo
 
AlignedVector< Number > inverse_shape_values
 
AlignedVector< Number > inverse_shape_values_eo
 
std::array< AlignedVector< Number >, 2 > shape_data_on_face
 
std::array< AlignedVector< Number >, 2 > quadrature_data_on_face
 
std::array< AlignedVector< Number >, 2 > values_within_subface
 
std::array< AlignedVector< Number >, 2 > gradients_within_subface
 
std::array< AlignedVector< Number >, 2 > hessians_within_subface
 
std::array< AlignedVector< Number >, 2 > subface_interpolation_matrices
 
std::array< AlignedVector< typename ::internal::VectorizedArrayTrait< Number >::value_type >, 2 > subface_interpolation_matrices_scalar
 
Quadrature< 1 > quadrature
 
unsigned int fe_degree
 
unsigned int n_q_points_1d
 
bool nodal_at_cell_boundaries
 
Table< 3, Number > shape_values_face
 
Table< 4, Number > shape_gradients_face
 

Detailed Description

template<typename Number>
struct internal::MatrixFreeFunctions::UnivariateShapeData< Number >

This struct stores the shape functions, their gradients and Hessians evaluated for a one-dimensional section of a tensor product finite element and tensor product quadrature formula in reference coordinates. This data structure also includes the evaluation of quantities at the cell boundary and on the sub-interval \((0, 0.5)\) and \((0.5, 1)\) for face integrals.

Definition at line 134 of file shape_info.h.

Constructor & Destructor Documentation

◆ UnivariateShapeData()

Empty constructor. Sets default configuration.

Member Function Documentation

◆ memory_consumption()

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

Return the memory consumption of this class in bytes.

Member Data Documentation

◆ element_type

template<typename Number >
ElementType internal::MatrixFreeFunctions::UnivariateShapeData< 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 152 of file shape_info.h.

◆ shape_values

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

Stores the shape values of the 1D finite element evaluated at all 1D quadrature points. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 160 of file shape_info.h.

◆ shape_gradients

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_gradients

Stores the shape gradients of the 1D finite element evaluated at all 1D quadrature points. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 168 of file shape_info.h.

◆ shape_hessians

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

Stores the shape Hessians of the 1D finite element evaluated at all 1D quadrature points. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 176 of file shape_info.h.

◆ shape_gradients_collocation

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_gradients_collocation

Stores the shape gradients of the shape function space associated to the quadrature (collocation), given by FE_DGQ<1>(Quadrature<1>).

Definition at line 182 of file shape_info.h.

◆ shape_hessians_collocation

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_hessians_collocation

Stores the shape hessians of the shape function space associated to the quadrature (collocation), given by FE_DGQ<1>(Quadrature<1>).

Definition at line 188 of file shape_info.h.

◆ shape_values_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_values_eo

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 195 of file shape_info.h.

◆ shape_gradients_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_gradients_eo

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 202 of file shape_info.h.

◆ shape_hessians_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_hessians_eo

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 209 of file shape_info.h.

◆ shape_gradients_collocation_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_gradients_collocation_eo

Stores the shape gradients of the shape function space associated to the quadrature (collocation), given by FE_DGQ<1>(Quadrature<1>). This array provides an alternative representation of the shape_gradients_collocation field in the even-odd format.

Definition at line 217 of file shape_info.h.

◆ shape_hessians_collocation_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_hessians_collocation_eo

Stores the shape hessians of the shape function space associated to the quadrature (collocation), given by FE_DGQ<1>(Quadrature<1>). This array provides an alternative representation of the shape_hessians_collocation field in the even-odd format.

Definition at line 225 of file shape_info.h.

◆ inverse_shape_values

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::inverse_shape_values

Stores the inverse transformation from the data at quadrature points to the basis defined by the shape_values fields. The data at quadrature points is interpreted either implicitly by its polynomial interpolation, or explicitly in terms of separate polynomials such as with the _collocation fields. The size of the array equals the layout of the shape_values array, and it is combined with the shape values array such that this matrix is the pseudo inverse of shape_values. In case the number of 1D quadrature points equals the size of the basis, this array is exactly the inverse of the shape_values array. The length of this array is n_dofs_1d * n_q_points_1d and quadrature points are the index running fastest.

Definition at line 241 of file shape_info.h.

◆ inverse_shape_values_eo

template<typename Number >
AlignedVector<Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::inverse_shape_values_eo

Stores the even-odd variant of the inverse_shape_values field.

Definition at line 246 of file shape_info.h.

◆ shape_data_on_face

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_data_on_face

Collects all data of 1D shape values evaluated at the point 0 and 1 (the vertices) in one data structure. The sorting of data is to start with the values, then gradients, then second derivatives.

Definition at line 253 of file shape_info.h.

◆ quadrature_data_on_face

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::quadrature_data_on_face

Collects all data of 1D nodal shape values (defined by the Lagrange polynomials in the points of the quadrature rule) evaluated at the point 0 and 1 (the vertices) in one data structure.

This data structure can be used to interpolate from the cell to the face quadrature points. The sorting of data is to start with the values, then gradients, then second derivatives.

Definition at line 264 of file shape_info.h.

◆ values_within_subface

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::values_within_subface

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

Definition at line 270 of file shape_info.h.

◆ gradients_within_subface

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::gradients_within_subface

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

Definition at line 276 of file shape_info.h.

◆ hessians_within_subface

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::hessians_within_subface

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

Definition at line 282 of file shape_info.h.

◆ subface_interpolation_matrices

template<typename Number >
std::array<AlignedVector<Number>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::subface_interpolation_matrices

A 1D subface interpolation matrices to the first and second quadrant. This data structure is only set up for FE_Q for dim > 1.

Definition at line 288 of file shape_info.h.

◆ subface_interpolation_matrices_scalar

template<typename Number >
std::array<AlignedVector<typename ::internal::VectorizedArrayTrait< Number>::value_type>, 2> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::subface_interpolation_matrices_scalar

Same as above but stored in a scalar format independent of the type of Number

Definition at line 297 of file shape_info.h.

◆ quadrature

template<typename Number >
Quadrature<1> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::quadrature

We store a copy of the one-dimensional quadrature formula used for initialization.

Definition at line 303 of file shape_info.h.

◆ fe_degree

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

Stores the degree of the element.

Definition at line 308 of file shape_info.h.

◆ n_q_points_1d

template<typename Number >
unsigned int internal::MatrixFreeFunctions::UnivariateShapeData< Number >::n_q_points_1d

Stores the number of quadrature points per dimension.

Definition at line 313 of file shape_info.h.

◆ nodal_at_cell_boundaries

template<typename Number >
bool internal::MatrixFreeFunctions::UnivariateShapeData< Number >::nodal_at_cell_boundaries

Indicates whether the basis functions are nodal in 0 and 1, i.e., the end points of the unit cell.

Definition at line 319 of file shape_info.h.

◆ shape_values_face

template<typename Number >
Table<3, Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_values_face

Stores the shape values of the finite element evaluated at all quadrature points for all faces and orientations (no tensor-product structure exploited).

Definition at line 326 of file shape_info.h.

◆ shape_gradients_face

template<typename Number >
Table<4, Number> internal::MatrixFreeFunctions::UnivariateShapeData< Number >::shape_gradients_face

Stores the shape gradients of the finite element evaluated at all quadrature points for all faces, orientations, and directions (no tensor-product structure exploited).

Definition at line 333 of file shape_info.h.


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