Reference documentation for deal.II version 8.4.1
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Private Attributes | List of all members
FiniteElementData< dim > Class Template Reference

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

Inheritance diagram for FiniteElementData< dim >:
[legend]

Public Types

enum  Conformity {
  unknown = 0x00, L2 = 0x01, Hcurl = 0x02, Hdiv = 0x04,
  H1 = Hcurl | Hdiv, H2 = 0x0e
}
 

Public Member Functions

 FiniteElementData (const std::vector< unsigned int > &dofs_per_object, const unsigned int n_components, const unsigned int degree, const Conformity conformity=unknown, const BlockIndices &block_indices=BlockIndices())
 
unsigned int n_dofs_per_vertex () const
 
unsigned int n_dofs_per_line () const
 
unsigned int n_dofs_per_quad () const
 
unsigned int n_dofs_per_hex () const
 
unsigned int n_dofs_per_face () const
 
unsigned int n_dofs_per_cell () const
 
template<int structdim>
unsigned int n_dofs_per_object () const
 
unsigned int n_components () const
 
unsigned int n_blocks () const
 
const BlockIndicesblock_indices () const
 
bool is_primitive () const
 
unsigned int tensor_degree () const
 
bool conforms (const Conformity) const
 
bool operator== (const FiniteElementData &) const
 

Public Attributes

const unsigned int dofs_per_vertex
 
const unsigned int dofs_per_line
 
const unsigned int dofs_per_quad
 
const unsigned int dofs_per_hex
 
const unsigned int first_line_index
 
const unsigned int first_quad_index
 
const unsigned int first_hex_index
 
const unsigned int first_face_line_index
 
const unsigned int first_face_quad_index
 
const unsigned int dofs_per_face
 
const unsigned int dofs_per_cell
 
const unsigned int components
 
const unsigned int degree
 
const Conformity conforming_space
 
const BlockIndices block_indices_data
 

Static Public Attributes

static const unsigned int dimension = dim
 

Protected Member Functions

void set_primitivity (const bool value)
 

Private Attributes

bool cached_primitivity
 

Detailed Description

template<int dim>
class FiniteElementData< dim >

A class that declares a number of scalar constant variables that describe basic properties of a finite element implementation. This includes, for example, the number of degrees of freedom per vertex, line, or cell; the number of vector components; etc.

The kind of information stored here is computed during initialization of a finite element object and is passed down to this class via its constructor. The data stored by this class is part of the public interface of the FiniteElement class (which derives from the current class). See there for more information.

Author
Wolfgang Bangerth, Guido Kanschat, 1998, 1999, 2000, 2001, 2003, 2005

Definition at line 148 of file fe_base.h.

Constructor & Destructor Documentation

template<int dim>
FiniteElementData< dim >::FiniteElementData ( const std::vector< unsigned int > &  dofs_per_object,
const unsigned int  n_components,
const unsigned int  degree,
const Conformity  conformity = unknown,
const BlockIndices block_indices = BlockIndices() 
)

Constructor, computing all necessary values from the distribution of dofs to geometrical objects.

Parameters
[in]dofs_per_objectA vector that describes the number of degrees of freedom on geometrical objects for each dimension. This vector must have size dim+1, and entry 0 describes the number of degrees of freedom per vertex, entry 1 the number of degrees of freedom per line, etc. As an example, for the common \(Q_1\) Lagrange element in 2d, this vector would have elements (1,0,0). On the other hand, for a \(Q_3\) element in 3d, it would have entries (1,2,4,8).
[in]n_componentsNumber of vector components of the element.
[in]degreeThe maximal polynomial degree of any of the shape functions of this element in any variable on the reference element. For example, for the \(Q_1\) element (in any space dimension), this would be one; this is so despite the fact that the element has a shape function of the form \(\hat x\hat y\) (in 2d) and \(\hat x\hat y\hat z\) (in 3d), which, although quadratic and cubic polynomials, are still only linear in each reference variable separately. The information provided by this variable is typically used in determining what an appropriate quadrature formula is.
[in]conformityA variable describing which Sobolev space this element conforms to. For example, the \(Q_p\) Lagrange elements (implemented by the FE_Q class) are \(H^1\) conforming, whereas the Raviart-Thomas element (implemented by the FE_RaviartThomas class) is \(H_\text{div}\) conforming; finally, completely discontinuous elements (implemented by the FE_DGQ class) are only \(L_2\) conforming.
[in]block_indicesAn argument that describes how the base elements of a finite element are grouped. The default value constructs a single block that consists of all dofs_per_cell degrees of freedom. This is appropriate for all "atomic" elements (including non-primitive ones) and these can therefore omit this argument. On the other hand, composed elements such as FESystem will want to pass a different value here.

Definition at line 23 of file fe_data.cc.

Member Function Documentation

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_vertex ( ) const

Number of dofs per vertex.

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_line ( ) const

Number of dofs per line. Not including dofs on lower dimensional objects.

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_quad ( ) const

Number of dofs per quad. Not including dofs on lower dimensional objects.

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_hex ( ) const

Number of dofs per hex. Not including dofs on lower dimensional objects.

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_face ( ) const

Number of dofs per face, accumulating degrees of freedom of all lower dimensional objects.

template<int dim>
unsigned int FiniteElementData< dim >::n_dofs_per_cell ( ) const

Number of dofs per cell, accumulating degrees of freedom of all lower dimensional objects.

template<int dim>
template<int structdim>
unsigned int FiniteElementData< dim >::n_dofs_per_object ( ) const

Return the number of degrees per structdim-dimensional object. For structdim==0, the function therefore returns dofs_per_vertex, for structdim==1 dofs_per_line, etc. This function is mostly used to allow some template trickery for functions that should work on all sorts of objects without wanting to use the different names (vertex, line, ...) associated with these objects.

template<int dim>
unsigned int FiniteElementData< dim >::n_components ( ) const

Number of components. See the glossary for more information.

template<int dim>
unsigned int FiniteElementData< dim >::n_blocks ( ) const

Number of blocks. See the glossary for more information.

template<int dim>
const BlockIndices& FiniteElementData< dim >::block_indices ( ) const

Detailed information on block sizes.

template<int dim>
bool FiniteElementData< dim >::is_primitive ( ) const

Return whether the entire finite element is primitive, in the sense that all its shape functions are primitive. If the finite element is scalar, then this is always the case.

Since this is an extremely common operation, the result is cached in the cached_primitivity variable which is computed in the constructor.

template<int dim>
unsigned int FiniteElementData< dim >::tensor_degree ( ) const

Maximal polynomial degree of a shape function in a single coordinate direction.

This function can be used to determine the optimal quadrature rule.

template<int dim>
bool FiniteElementData< dim >::conforms ( const Conformity  ) const

Test whether a finite element space conforms to a certain Sobolev space.

Note
This function will return a true value even if the finite element space has higher regularity than asked for.
template<int dim>
bool FiniteElementData< dim >::operator== ( const FiniteElementData< dim > &  f) const

Comparison operator.

Definition at line 72 of file fe_data.cc.

template<int dim>
void FiniteElementData< dim >::set_primitivity ( const bool  value)
protected

Set the primitivity of the element. This is usually done by the constructor of a derived class. See primitive for details.

Member Data Documentation

template<int dim>
const unsigned int FiniteElementData< dim >::dimension = dim
static

The dimension of the finite element, which is the template parameter dim

Definition at line 221 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_vertex

Number of degrees of freedom on a vertex.

Definition at line 226 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_line

Number of degrees of freedom in a line; not including the degrees of freedom on the vertices of the line.

Definition at line 232 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_quad

Number of degrees of freedom in a quadrilateral; not including the degrees of freedom on the lines and vertices of the quadrilateral.

Definition at line 238 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_hex

Number of degrees of freedom in a hexahedron; not including the degrees of freedom on the quadrilaterals, lines and vertices of the hexahedron.

Definition at line 244 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::first_line_index

First index of dof on a line.

Definition at line 249 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::first_quad_index

First index of dof on a quad.

Definition at line 254 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::first_hex_index

First index of dof on a hexahedron.

Definition at line 259 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::first_face_line_index

First index of dof on a line for face data.

Definition at line 264 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::first_face_quad_index

First index of dof on a quad for face data.

Definition at line 269 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_face

Number of degrees of freedom on a face. This is the accumulated number of degrees of freedom on all the objects of dimension up to dim-1 constituting a face.

Definition at line 276 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::dofs_per_cell

Total number of degrees of freedom on a cell. This is the accumulated number of degrees of freedom on all the objects of dimension up to dim constituting a cell.

Definition at line 283 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::components

Number of vector components of this finite element, and dimension of the image space. For vector-valued finite elements (i.e. when this number is greater than one), the number of vector components is in many cases equal to the number of base elements glued together with the help of the FESystem class. However, for elements like the Nedelec element, the number is greater than one even though we only have one base element.

Definition at line 293 of file fe_base.h.

template<int dim>
const unsigned int FiniteElementData< dim >::degree

Maximal polynomial degree of a shape function in a single coordinate direction.

Definition at line 299 of file fe_base.h.

template<int dim>
const Conformity FiniteElementData< dim >::conforming_space

Indicate the space this element conforms to.

Definition at line 304 of file fe_base.h.

template<int dim>
const BlockIndices FiniteElementData< dim >::block_indices_data

Storage for an object describing the sizes of each block of a compound element. For an element which is not an FESystem, this contains only a single block with length dofs_per_cell.

Definition at line 311 of file fe_base.h.

template<int dim>
bool FiniteElementData< dim >::cached_primitivity
private

Store whether all shape functions are primitive. Since finding this out is a very common operation, we cache the result, i.e. compute the value in the constructor for simpler access.

Definition at line 466 of file fe_base.h.


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