Reference documentation for deal.II version Git 0183d66 2014-10-17 10:54:07 +0200
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Public Attributes | List of all members
FEValuesData< dim, spacedim > Class Template Reference

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

Inheritance diagram for FEValuesData< dim, spacedim >:
[legend]

Public Types

typedef Table< 2, doubleShapeVector
 
typedef std::vector
< std::vector< Tensor
< 1, spacedim > > > 
GradientVector
 
typedef std::vector
< std::vector< Tensor
< 2, spacedim > > > 
HessianVector
 

Public Member Functions

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

Public Attributes

ShapeVector shape_values
 
GradientVector shape_gradients
 
HessianVector shape_hessians
 
std::vector< doubleJxW_values
 
std::vector< DerivativeForm
< 1, dim, spacedim > > 
jacobians
 
std::vector< DerivativeForm
< 2, dim, spacedim > > 
jacobian_grads
 
std::vector< DerivativeForm
< 1, spacedim, dim > > 
inverse_jacobians
 
std::vector< Point< spacedim > > quadrature_points
 
std::vector< Point< spacedim > > normal_vectors
 
std::vector< Tensor
< 1, spacedim > > 
boundary_forms
 
std::vector< unsigned intshape_function_to_row_table
 
UpdateFlags update_flags
 

Detailed Description

template<int dim, int spacedim>
class FEValuesData< dim, spacedim >

Contains all data vectors for FEValues. This class has been extracted from FEValuesBase to be handed over to the fill functions of Mapping and FiniteElement.

Note
All data fields are public, but this is not critical, because access to this object is private in FEValues.

The purpose of this class is discussed on the page on The interplay of UpdateFlags, Mapping and FiniteElement in FEValues.

Author
Guido Kanschat
Date
2000

Definition at line 29 of file fe.h.

Member Typedef Documentation

template<int dim, int spacedim>
typedef Table<2,double> FEValuesData< 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 1209 of file fe_values.h.

template<int dim, int spacedim>
typedef std::vector<std::vector<Tensor<1,spacedim> > > FEValuesData< dim, spacedim >::GradientVector

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

Definition at line 1215 of file fe_values.h.

template<int dim, int spacedim>
typedef std::vector<std::vector<Tensor<2,spacedim> > > FEValuesData< dim, spacedim >::HessianVector

Likewise for second order derivatives.

Definition at line 1220 of file fe_values.h.

Member Function Documentation

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

Initialize all vectors to correct size.

Member Data Documentation

template<int dim, int spacedim>
ShapeVector FEValuesData< 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 1226 of file fe_values.h.

template<int dim, int spacedim>
GradientVector FEValuesData< 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 1233 of file fe_values.h.

template<int dim, int spacedim>
HessianVector FEValuesData< 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 1240 of file fe_values.h.

template<int dim, int spacedim>
std::vector<double> FEValuesData< dim, spacedim >::JxW_values

Store an array of weights times the Jacobi determinant at the quadrature points. This function is reset each time reinit() is called. The Jacobi determinant is actually the reciprocal value of the Jacobi matrices stored in this class, see the general documentation of this class for more information.

However, if this object refers to an FEFaceValues or FESubfaceValues object, then the JxW_values correspond to the Jacobian of the transformation of the face, not the cell, i.e. the dimensionality is that of a surface measure, not of a volume measure. In this case, it is computed from the boundary forms, rather than the Jacobian matrix.

Definition at line 1255 of file fe_values.h.

template<int dim, int spacedim>
std::vector< DerivativeForm<1,dim,spacedim> > FEValuesData< dim, spacedim >::jacobians

Array of the Jacobian matrices at the quadrature points.

Definition at line 1260 of file fe_values.h.

template<int dim, int spacedim>
std::vector<DerivativeForm<2,dim,spacedim> > FEValuesData< dim, spacedim >::jacobian_grads

Array of the derivatives of the Jacobian matrices at the quadrature points.

Definition at line 1266 of file fe_values.h.

template<int dim, int spacedim>
std::vector<DerivativeForm<1,spacedim,dim> > FEValuesData< dim, spacedim >::inverse_jacobians

Array of the inverse Jacobian matrices at the quadrature points.

Definition at line 1271 of file fe_values.h.

template<int dim, int spacedim>
std::vector<Point<spacedim> > FEValuesData< dim, spacedim >::quadrature_points

Array of quadrature points. This array is set up upon calling reinit() and contains the quadrature points on the real element, rather than on the reference element.

Definition at line 1278 of file fe_values.h.

template<int dim, int spacedim>
std::vector<Point<spacedim> > FEValuesData< dim, spacedim >::normal_vectors

List of outward normal vectors at the quadrature points. This field is filled in by the finite element class.

Definition at line 1284 of file fe_values.h.

template<int dim, int spacedim>
std::vector<Tensor<1,spacedim> > FEValuesData< dim, spacedim >::boundary_forms

List of boundary forms at the quadrature points. This field is filled in by the finite element class.

Definition at line 1290 of file fe_values.h.

template<int dim, int spacedim>
std::vector<unsigned int> FEValuesData< 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 1327 of file fe_values.h.

template<int dim, int spacedim>
UpdateFlags FEValuesData< dim, spacedim >::update_flags

Original update flags handed to the constructor of FEValues.

Definition at line 1332 of file fe_values.h.


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