Vol. V, No. N, Month 20YY | W. BANGERTH, Texas A&M University and R. HARTMANN, German Aerospace Center (DLR) and G. KANSCHAT, Universität Heidelberg
The paper provides an overview of deal.II, a general-purpose finite element library written in C++. The library employs advanced object-oriented and data encapsulation techniques to break down finite element implementations into smaller, modular components that can be combined to fit various user requirements. This approach supports a wide range of scientific applications, programming methodologies, and application-specific algorithms without imposing a rigid framework.
The paper details the abstractions used for defining geometric information of meshes, handling degrees of freedom associated with finite element spaces, linear algebra, input/output capabilities, and interfaces to other software tools such as visualization tools. It also includes results from applications built on deal.II to demonstrate its capabilities.
Key aspects covered include:
- **Mesh Classes and Iterators**: The central class `Triangulation` manages the mesh structure, supporting adaptive meshing and efficient data access through STL-like iterators.
- **Finite Element Descriptions**: The `FiniteElement` class structure supports various finite element spaces, including tensor product elements, polynomial spaces, and vector-valued elements.
- **Degrees of Freedom Handler**: The `DoFHandler` class provides a global enumeration of degrees of freedom, allowing for flexible allocation of vectors and matrices.
- **Linear Systems**: The library supports numerical quadrature, mapping of reference cells to real space, and integration over cells and faces using the `FEValues` abstraction.
- **Linear Algebra**: deal.II includes comprehensive linear algebra components for sparse systems, including sparse matrices, preconditioning methods, and iterative solvers.
- **Interfaces to Other Software**: deal.II interfaces with external programs for grid generation, linear algebra, parallelization, and visualization.
The paper concludes with a discussion on the extensive documentation and error detection features of deal.II, which include a user guide and a reference handbook.The paper provides an overview of deal.II, a general-purpose finite element library written in C++. The library employs advanced object-oriented and data encapsulation techniques to break down finite element implementations into smaller, modular components that can be combined to fit various user requirements. This approach supports a wide range of scientific applications, programming methodologies, and application-specific algorithms without imposing a rigid framework.
The paper details the abstractions used for defining geometric information of meshes, handling degrees of freedom associated with finite element spaces, linear algebra, input/output capabilities, and interfaces to other software tools such as visualization tools. It also includes results from applications built on deal.II to demonstrate its capabilities.
Key aspects covered include:
- **Mesh Classes and Iterators**: The central class `Triangulation` manages the mesh structure, supporting adaptive meshing and efficient data access through STL-like iterators.
- **Finite Element Descriptions**: The `FiniteElement` class structure supports various finite element spaces, including tensor product elements, polynomial spaces, and vector-valued elements.
- **Degrees of Freedom Handler**: The `DoFHandler` class provides a global enumeration of degrees of freedom, allowing for flexible allocation of vectors and matrices.
- **Linear Systems**: The library supports numerical quadrature, mapping of reference cells to real space, and integration over cells and faces using the `FEValues` abstraction.
- **Linear Algebra**: deal.II includes comprehensive linear algebra components for sparse systems, including sparse matrices, preconditioning methods, and iterative solvers.
- **Interfaces to Other Software**: deal.II interfaces with external programs for grid generation, linear algebra, parallelization, and visualization.
The paper concludes with a discussion on the extensive documentation and error detection features of deal.II, which include a user guide and a reference handbook.