Reference documentation for deal.II version 9.0.0
Public Types | Public Member Functions | Public Attributes | List of all members
internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > Class Template Reference

#include <deal.II/fe/fe_update_flags.h>

Public Types

typedef ::Table< 2, double > ShapeVector
 
typedef ::Table< 2, Tensor< 1, spacedim > > GradientVector
 
typedef ::Table< 2, Tensor< 2, spacedim > > HessianVector
 
typedef ::Table< 2, Tensor< 3, spacedim > > ThirdDerivativeVector
 

Public Member Functions

void initialize (const unsigned int n_quadrature_points, const FiniteElement< dim, spacedim > &fe, const UpdateFlags flags)
 
std::size_t memory_consumption () const
 

Public Attributes

ShapeVector shape_values
 
GradientVector shape_gradients
 
HessianVector shape_hessians
 
ThirdDerivativeVector shape_3rd_derivatives
 
std::vector< unsigned int > shape_function_to_row_table
 

Detailed Description

template<int dim, int spacedim = dim>
class internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >

A class that stores all of the shape function related data used in FEValues, FEFaceValues, and FESubfaceValues objects. Objects of this kind will be given as output argument when FEValues::reinit() calls FiniteElement::fill_fe_values().

Definition at line 516 of file fe_update_flags.h.

Member Typedef Documentation

◆ ShapeVector

template<int dim, int spacedim = dim>
typedef ::Table<2,double> internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::ShapeVector

Storage type for shape values. Each row in the matrix denotes the values of a single shape function at the different points, columns are for a single point with the different shape functions.

If a shape function has more than one non-zero component (in deal.II diction: it is non-primitive), then we allocate one row per non-zero component, and shift subsequent rows backward. Lookup of the correct row for a shape function is thus simple in case the entire finite element is primitive (i.e. all shape functions are primitive), since then the shape function number equals the row number. Otherwise, use the shape_function_to_row_table array to get at the first row that belongs to this particular shape function, and navigate among all the rows for this shape function using the FiniteElement::get_nonzero_components() function which tells us which components are non-zero and thus have a row in the array presently under discussion.

Definition at line 550 of file fe_update_flags.h.

◆ GradientVector

template<int dim, int spacedim = dim>
typedef ::Table<2,Tensor<1,spacedim> > internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::GradientVector

Storage type for gradients. The layout of data is the same as for the ShapeVector data type.

Definition at line 556 of file fe_update_flags.h.

◆ HessianVector

template<int dim, int spacedim = dim>
typedef ::Table<2,Tensor<2,spacedim> > internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::HessianVector

Likewise for second order derivatives.

Definition at line 561 of file fe_update_flags.h.

◆ ThirdDerivativeVector

template<int dim, int spacedim = dim>
typedef ::Table<2,Tensor<3,spacedim> > internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::ThirdDerivativeVector

And the same also applies to the third order derivatives.

Definition at line 566 of file fe_update_flags.h.

Member Function Documentation

◆ initialize()

template<int dim, int spacedim>
void internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::initialize ( const unsigned int  n_quadrature_points,
const FiniteElement< dim, spacedim > &  fe,
const UpdateFlags  flags 
)

Initialize all vectors to correct size.

Definition at line 2662 of file fe_values.cc.

◆ memory_consumption()

template<int dim, int spacedim>
std::size_t internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::memory_consumption ( ) const

Compute and return an estimate for the memory consumption (in bytes) of this object.

Definition at line 2716 of file fe_values.cc.

Member Data Documentation

◆ shape_values

template<int dim, int spacedim = dim>
ShapeVector internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::shape_values

Store the values of the shape functions at the quadrature points. See the description of the data type for the layout of the data in this field.

Definition at line 573 of file fe_update_flags.h.

◆ shape_gradients

template<int dim, int spacedim = dim>
GradientVector internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::shape_gradients

Store the gradients of the shape functions at the quadrature points. See the description of the data type for the layout of the data in this field.

Definition at line 580 of file fe_update_flags.h.

◆ shape_hessians

template<int dim, int spacedim = dim>
HessianVector internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::shape_hessians

Store the 2nd derivatives of the shape functions at the quadrature points. See the description of the data type for the layout of the data in this field.

Definition at line 587 of file fe_update_flags.h.

◆ shape_3rd_derivatives

template<int dim, int spacedim = dim>
ThirdDerivativeVector internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::shape_3rd_derivatives

Store the 3nd derivatives of the shape functions at the quadrature points. See the description of the data type for the layout of the data in this field.

Definition at line 594 of file fe_update_flags.h.

◆ shape_function_to_row_table

template<int dim, int spacedim = dim>
std::vector<unsigned int> internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim >::shape_function_to_row_table

When asked for the value (or gradient, or Hessian) of shape function i's c-th vector component, we need to look it up in the shape_values, shape_gradients and shape_hessians arrays. The question is where in this array does the data for shape function i, component c reside. This is what this table answers.

The format of the table is as follows: - It has dofs_per_cell times n_components entries. - The entry that corresponds to shape function i, component c is i * n_components + c. - The value stored at this position indicates the row in shape_values and the other tables where the corresponding datum is stored for all the quadrature points.

In the general, vector-valued context, the number of components is larger than one, but for a given shape function, not all vector components may be nonzero (e.g., if a shape function is primitive, then exactly one vector component is non-zero, while the others are all zero). For such zero components, shape_values and friends do not have a row. Consequently, for vector components for which shape function i is zero, the entry in the current table is numbers::invalid_unsigned_int.

On the other hand, the table is guaranteed to have at least one valid index for each shape function. In particular, for a primitive finite element, each shape function has exactly one nonzero component and so for each i, there is exactly one valid index within the range [i*n_components, (i+1)*n_components).

Definition at line 625 of file fe_update_flags.h.


The documentation for this class was generated from the following files: