Reference documentation for deal.II version GIT 574c7c8486 20230922 10:20:02+00:00

#include <deal.II/matrix_free/shape_info.h>
Public Member Functions  
ShapeInfo ()  
template<int dim, int spacedim, int dim_q>  
ShapeInfo (const Quadrature< dim_q > &quad, const FiniteElement< dim, spacedim > &fe, const unsigned int base_element=0)  
template<int dim, int spacedim, int dim_q>  
void  reinit (const Quadrature< dim_q > &quad, const FiniteElement< dim, spacedim > &fe_dim, const unsigned int base_element=0) 
const UnivariateShapeData< Number > &  get_shape_data (const unsigned int dimension=0, const unsigned int component=0) const 
std::size_t  memory_consumption () const 
Static Public Member Functions  
template<int dim, int spacedim>  
static bool  is_supported (const FiniteElement< dim, spacedim > &fe) 
static Table< 2, unsigned int >  compute_orientation_table (const unsigned int n_points_per_dim) 
Public Attributes  
ElementType  element_type 
std::vector< unsigned int >  lexicographic_numbering 
std::vector< UnivariateShapeData< Number > >  data 
::Table< 2, UnivariateShapeData< Number > * >  data_access 
unsigned int  n_dimensions 
unsigned int  n_components 
unsigned int  n_q_points 
unsigned int  dofs_per_component_on_cell 
unsigned int  n_q_points_face 
std::vector< unsigned int >  n_q_points_faces 
unsigned int  dofs_per_component_on_face 
::Table< 2, unsigned int >  face_to_cell_index_nodal 
::Table< 2, unsigned int >  face_to_cell_index_hermite 
::Table< 2, unsigned int >  face_orientations_dofs 
::Table< 2, unsigned int >  face_orientations_quad 
This struct stores a tensor (Kronecker) product view of the finite element and quadrature formula used for evaluation. It is based on a single or a collection of UnivariateShapeData object(s) that describe onedimensional ingredients, plus some additional information about how these are combined and how indices are laid out in the multidimensional case such as the hierarchical > lexicographic ordering of FE_Q.
Definition at line 394 of file shape_info.h.
internal::MatrixFreeFunctions::ShapeInfo< Number >::ShapeInfo  (  ) 
Empty constructor. Does nothing.
internal::MatrixFreeFunctions::ShapeInfo< Number >::ShapeInfo  (  const Quadrature< dim_q > &  quad, 
const FiniteElement< dim, spacedim > &  fe,  
const unsigned int  base_element = 0 

) 
Constructor that initializes the data fields using the reinit method.
void internal::MatrixFreeFunctions::ShapeInfo< Number >::reinit  (  const Quadrature< dim_q > &  quad, 
const FiniteElement< dim, spacedim > &  fe_dim,  
const unsigned int  base_element = 0 

) 
Initializes the data fields. Takes a onedimensional quadrature formula and a finite element as arguments and evaluates the shape functions, gradients and Hessians on the onedimensional 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.

static 
Return whether an element is supported by MatrixFree.
The following scalar elements are supported:
In the case of vectorial elements, FE_RaviartThomasNodal and FESystem with base elements from the scalar elements listed above are supported.

static 
Compute a table with numbers of reorientation for all versions of face flips, orientation, and rotation (relating only to 3d elements).

inline 
Return data of univariate shape functions which defines the dimension dimension
of tensor product shape functions regarding vector component component
of the underlying finite element.
Definition at line 634 of file shape_info.h.
std::size_t internal::MatrixFreeFunctions::ShapeInfo< Number >::memory_consumption  (  )  const 
Return the memory consumption of this class in bytes.
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 401 of file shape_info.h.
std::vector<unsigned int> 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 vectorvalued elements, the renumbering starts with a lexicographic numbering of the first component, then everything of the second component, and so on.
Definition at line 480 of file shape_info.h.
std::vector<UnivariateShapeData<Number> > internal::MatrixFreeFunctions::ShapeInfo< Number >::data 
Stores data of univariate shape functions defining the underlying tensor product finite element.
Definition at line 486 of file shape_info.h.
::Table<2, UnivariateShapeData<Number> *> internal::MatrixFreeFunctions::ShapeInfo< Number >::data_access 
Grants access to univariate shape function data of given dimension and vector component. Rows identify dimensions and columns identify vector components.
Definition at line 493 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_dimensions 
Stores the number of space dimensions.
Definition at line 498 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_components 
Stores the number of vector components of the underlying vectorvalued finite element.
Definition at line 504 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_q_points 
Stores the number of quadrature points in dim
dimensions for a cell.
Definition at line 510 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::dofs_per_component_on_cell 
Stores the number of DoFs per cell of the scalar element in dim
dimensions.
Definition at line 516 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::n_q_points_face 
Stores the number of quadrature points per face in dim
dimensions.
Definition at line 521 of file shape_info.h.
std::vector<unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::n_q_points_faces 
Stores the number of quadrature points of a face in dim
dimensions for simplex, wedge and pyramid reference cells.
Definition at line 527 of file shape_info.h.
unsigned int internal::MatrixFreeFunctions::ShapeInfo< Number >::dofs_per_component_on_face 
Stores the number of DoFs per face in dim
dimensions.
Definition at line 532 of file shape_info.h.
::Table<2, unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::face_to_cell_index_nodal 
For nodal basis functions with nodes located at the boundary of the unit cell, face integrals that involve only the values of the shape functions (approximations of first derivatives in DG) do not need to load all degrees of freedom of the cell but rather only the degrees of freedom located on the face. While it would also be possible to compute these indices on the fly, we choose to simplify the code and store the indirect addressing in this class.
The first table index runs through the faces of a cell, and the second runs through the nodal degrees of freedom of the face, using dofs_per_face
entries.
The indices stored in this member variable are as follows. Consider for example a 2d element of degree 3 with the following degrees of freedom in lexicographic numbering:
The first row stores the indices on the face with index 0, i.e., the numbers 0, 4, 8, 12
, the second row holds the indices 3, 7, 11, 15
for face 1, the third row holds the indices 0, 1, 2, 3
for face 2, and the last (fourth) row holds the indices 12, 13, 14, 15
. Similarly, the indices are stored in 3d. (Note that the y faces in 3d use indices reversed in terms of the lexicographic numbers due to the orientation of the coordinate system.)
nodal_at_cell_boundaries
evaluates to true
. Definition at line 569 of file shape_info.h.
::Table<2, unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::face_to_cell_index_hermite 
The face_to_cell_index_nodal
provides a shortcut for the evaluation of values on the faces. For Hermitetype basis functions, one can go one step further and also use shortcuts to get derivatives more cheaply where only two layers of degrees of freedom contribute to the derivative on the face. In the lexicographic ordering, the respective indices is in the next "layer" of degrees of freedom as compared to the nodal values. This array stores the indirect addressing of both the values and the gradient.
The first table index runs through the faces of a cell, and the second runs through the pairs of the nodal degrees of freedom of the face and the derivatives, using 2*dofs_per_face
entries.
The indices stored in this member variable are as follows. Consider for example a 2d element of degree 3 with the following degrees of freedom in lexicographic numbering:
The first row stores the indices for values and gradients on the face with index 0, i.e., the numbers 0, 1, 5, 6, 10, 11, 15, 16, 20, 21
, the second row holds the indices 4, 3, 9, 8, 14, 13, 19, 18, 24, 23
for face 1, the third row holds the indices 0, 5, 1, 6, 2, 7, 3, 8, 4, 9
for face 2, and the last (fourth) row holds the indices 20, 15, 21, 16, 22, 17, 23, 18, 24, 19
. Similarly, the indices are stored in 3d. (Note that the y faces in 3d use indices reversed in terms of the lexicographic numbers due to the orientation of the coordinate system.)
element_type
evaluates to tensor_symmetric_hermite
. Definition at line 609 of file shape_info.h.
::Table<2, unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::face_orientations_dofs 
For unknowns located on faces, the basis functions are not in the correct order if a face is not in the standard orientation to a given element. This data structure is used to reorder the basis functions to represent the correct order.
Definition at line 617 of file shape_info.h.
::Table<2, unsigned int> internal::MatrixFreeFunctions::ShapeInfo< Number >::face_orientations_quad 
For interpretation of values at quadrature points, the order of points is not correct if a face is not in the standard orientation to a given element. This data structure is used to reorder the quadrature points to represent the correct order.
Definition at line 625 of file shape_info.h.