This is the main page for class and function documentation in deal.II. Documentation on other aspects of deal.II can be found elsewhere. In particular, there are tutorial programs on the use of this library.
Many of the classes in the deal.II library can be grouped into modules (see the Modules page or the corresponding entry in the menu at the top of this page). These modules follow roughly the following collaboration diagram that finite element programs follow:
Collaboration diagram for the most important groups of classes in deal.II
Here is a guide to this classification of groups, as well as links to the documentation pertaining to each of them:
Inside the library, most properties of unit cells such as the number of vertices per cell, ordering of faces, or direction of edges, are explicitly described in the GeometryInfo class. This avoids the use of implicit assumptions in many places of the code.
The properties and data of triangulations are almost always queried through loops over all cells, or all faces of cells. Most of the knowledge about a mesh is therefore hidden behind iterators, i.e. pointer-like structures that one can iterate from one cell to the next, and that one can ask for information about the cell it presently points to.
The classes that describe triangulations and cells are located and documented in the Grid classes module. Iterators are described in the Iterators on mesh-like containers module.
The finite element classes are described in the Finite elements module.
The documentation of the classes describing particular quadrature formulas is found in the Quadrature formulas module.
Just as with triangulation objects, most operations on DoFHandlers is done by looping over all cells and doing something on each or a subset of them. The interfaces of the two classes are therefore rather similar: they allow to get iterators to the first and last cell (or face, or line, etc) and offer information through these iterators. The information that can be gotten from these iterators is the geometric and topological information that can already be gotten from the triangulation iterators (they are in fact derived classes) as well as things like the global numbers of the degrees of freedom on the present cell. On can also ask an iterator to extract the values corresponding to the degrees of freedom on the present cell from a data vector that stores values for all degrees of freedom associated with a triangulation.
It is worth noting that, just as triangulations, DoFHandler classes do not know anything about the mapping from the unit cell to its individual cells. It is also ignorant of the shape functions that correspond to the degrees of freedom it manages: all it knows is that there are, for example, 2 degrees of freedom for each vertex and 4 per cell interior. Nothing about their specifics is relevant to the DoFHandler class.
The DoFHandler class and its associates are described in the Degrees of Freedom module. In addition, there are specialized versions that can handle multilevel and hp discretizations. These are described in the Multilevel support and hp finite element support modules.
These classes are all described in the Mappings between reference and real cell module.
This seems restrictive: in mathematical analysis, we always write our formulas in terms of integrals over cells, or faces of cells, involving the finite element shape functions. One would therefore think that it is necessary to describe finite element spaces as continuous spaces. However, in practice, this is not necessary: all integrals are in actual computations replaced by approximations using quadrature formula, and what is therefore really only necessary is the ability to evaluate shape functions at a finite number of given locations inside a domain. The FEValues classes offer exactly this information: Given finite element, quadrature, and mapping objects, they compute the restriction of a continuous function space (as opposed to discrete, not as opposed to discontinuous) to a discrete number of points.
There are a number of objects that can do this: FEValues for evaluation on cells, FEFaceValues for evaluation on faces of cells, and FESubfaceValues for evaluation on parts of faces of cells. All these classes are described in the Finite element access/FEValues classes module.
To do this, we need to have classes that store and manage the entries of matrices and vectors. deal.II comes with a whole set of classes for this purpose, as well as with interfaces to other software packages that offer similar functionality. Documentation to this end can be found in the Linear algebra classes module.
A description of the classes that do so is given in the Graphical output module.
In addition, deal.II has a number of groups of classes that go beyond the ones listed here. They pertain to more refined concepts of the hierarchy presented above, or to tangential aspects like handling of input and output that are not necessarily specific to finite element programs, but appear there as well. These classes are all listed in the Classes and Namespaces views reachable from the menu bar at the top of this page, and are also grouped into modules of their own (see the Modules view also in the menu bar).