Reference documentation for deal.II version 9.5.0

Modules  
Constraints on degrees of freedom  
Namespaces  
namespace  internal::DoFHandlerImplementation 
namespace  DoFRenumbering 
namespace  DoFTools 
Classes  
class  BlockInfo 
A small class collecting the different BlockIndices involved in global, multilevel and local computations. More...  
struct  internal::DoFAccessorImplementation::Inheritance< structdim, dim, spacedim > 
class  DoFAccessor< structdim, dim, spacedim, level_dof_access > 
class  DoFCellAccessor< dimension_, space_dimension_, level_dof_access > 
class  DoFHandler< dim, spacedim > 
class  internal::DoFHandlerImplementation::DoFObjects< dim > 
class  AffineConstraints< number > 
This module groups classes and namespaces that have to do with handling degrees of freedom. The central class of this group is the DoFHandler class: it is built on top of a triangulation and a finite element class and allocated degrees of freedom on each cell of the triangulation as required for the finite element space described by the finite element object. There are other variants of the DoFHandler class such as hp::DoFHandler that do similar things for more special cases.
DoFHandler objects are used together with objects of type FiniteElement (or hp::FECollection in the case of hp::DoFHandler) to enumerate all the degrees of freedom that exist in a triangulation for this particular finite element. As such, the combination of mesh, finite element, and DoF handler object can be thought of as providing a basis of the finite element space: the mesh provides the locations at which basis functions are defined; the finite element describes what kinds of basis functions exist; and the DoF handler object provides an enumeration of the basis, i.e., it is provides a concrete structure of the space so that we can describe functions in this finite dimensional space by vectors of coefficients.
DoFHandlers extend Triangulation objects (and the other classes in the Grids and Triangulations module) in that they, too, offer iterators that run over all cells, faces, or other geometric objects that make up a triangulation. These iterators are derived from the triangulation iterators and therefore offer the same functionality, but they also offer additional functions. For example, they allow to query the indices of the degrees of freedom associated with the present cell. Note that DoFHandler classes are not derived from Triangulation, though they use Triangulation objects; the reason is that there can be more than one DoFHandler object that works on the same Triangulation object.
In addition to the DoF handler classes, this module holds a number of auxiliary classes not commonly used in application programs, as well as three classes that are not directly associated with the data structures of the DoFHandler class. The first of these is the AffineConstraints class that stores and treats the constraints associated with hanging nodes. Secondly, the DoFRenumbering namespace offers functions that can reorder degrees of freedom; among its functions are ones that sort degrees of freedom in downstream direction, for example, and ones that sort degrees of freedom in such a way that the bandwidth of associated matrices is minimized. Finally, the DoFTools namespace offers a variety of algorithms around handling degrees of freedom.
In the grand scheme of things, the pieces of this module interact with a variety of other parts of the library: