Version 9.1.0 of deal.II, the object-oriented finite element library
awarded the
J. H. Wilkinson Prize for Numerical Software, has been released. It is
available for free under an Open Source license from the deal.II homepage at
https://www.dealii.org/
The major changes of this release are:
- The support for automatic and symbolic differentiation within
deal.II has
been completely overhauled and significantly extended. The automatic
differentiation facilities integrate a broad spectrum of functionality,
including support in the evaluation of finite element shape functions
(FEValues) and associated point and tensor data structures.
Functionality
from both the ADOL-C as well as Sacado library in various modes is
included. For symbolic differentiation, new wrappers to the
high-performance SymEngine library allow an alternative approach
addressing the syntax levels of expressions to compute derivatives,
rather
than the algorithmic approach underlying automatic differentiations.
- Full support for hp adaptivity in parallel computations. deal.II has
had support for hp-adaptive methods since around 2005, but not yet in
combination with MPI. In order to gain support for parallel hp
adaptivity
a number of algorithmic issues were addressed in this release. Details
can be found in the release paper.
- A new HDF5 interface has been added in order to leverage
its capabilities in terms of high-performance I/O for large amount of
data. The HDF5 interfaces in deal.II support read and write operations
both in serial and with MPI.
- GPU support was significantly extended for the current release:
Added features include preconditioners for CUDAWrappers::SparseMatrix
objects, support for MPI-parallel CUDA data structures, and support for
constraints in the matrix-free framework (and thus also support for
adaptively refined meshes).
- Four new tutorial programs have been added, step-61 demonstrating an
implementation of the so-called weak Galerkin method, step-62
solving the
elastic wave equation with perfectly matched layers to calculate the
resonance frequency and bandgap of photonic crystals, step-63 on
block and
point smoothers for geometric multigrid in the context of
convection-diffusion problems, and step-64 implementing a Helmholtz
solver
with matrix-free methods running on GPUs. Furthermore, a new code
gallery
program solving a Bayesian inverse problem has been added.
- The release contains performance improvements and bug fixes of the
matrix-free framework and related geometric multigrid solvers. In
particular, the implementation of the Chebyshev iteration, an often used
smoother in the matrix-free context, has been revised to reduce vector
accesses. Altogether, matrix-free multigrid solvers run up to 15% faster
than in the previous version.
- Various variants of geometric multigrid solvers and matrix-free
implementations were run on up to 304,128 MPI ranks during the
acceptance
phase of the SuperMUC-NG supercomputer, verifying the scalability of our
implementations to this scale. Some geometric multigrid data structures
were revised to avoid bottlenecks showing up with more than 100k ranks.
- The FE_BernardiRaugel class implements the non-standard
Bernardi-Raugel element that can be used to construct a stable
velocity-pressure pair for the Stokes equation. The Bernardi-Raugel
element is an enriched version of the Q_1^d element with added bubble
functions on each edge (in 2d) or face (in 3d). It addresses the fact
that the Q_1^d - Q_0 combination is not inf-sup stable (requiring a
larger velocity space), and that the Q_2^d - Q_1 combination is
stable but sub-optimal since the velocity space is too large relative to
the pressure space to provide additional accuracy commensurate with the
cost of the large number of velocity unknowns. The Bernardi-Raugel
space is intermediate to the Q_1^d and Q_2^d spaces.
- The FE_NedelecSZ class is a new implementation of the Nédélec element
on quadrilaterals and hexahedra. It overcomes the sign conflict issues
present in traditional Nédélec elements that arise from the edge
and face parameterizations used in the basis functions. Therefore, this
element should provide consistent results for general quadrilateral and
hexahedral elements for which the relative orientations of edges and
faces (as seen from all adjacent cells) are often difficult to
establish.
- A new class ParsedConvergenceTable has been introduced. The class
simplifies the construction of convergence tables, reading the options
for the generation of the table from a parameter file. It provides a
series of methods that can be used to compute the error given a
reference exact solution, or the difference between two numerical
solutions, or any other custom computation of the error, given via
std::function objects.
- A new interface to boost::geometry::index::rtree has been
added. The rtree provides a data structure for handling bounding boxes
that cover the whole triangulation, and allow to identify e.g. the
cell a
certain point is located in logarithmic time, or queries regarding the
cell owners of far-field cells in a distributed setup.
- More than 200 other features and bugfixes.
For more information see
- the preprint at
https://www.dealii.org/deal91-preprint.pdf
- the list of changes at
https://www.dealii.org/developer/doxygen/deal.II/changes_between_9_0_1_and_9_1_0.html
The main features of deal.II are:
- Extensive documentation and 63 fully-functional example programs
- Support for dimension-independent programming
- Locally refined adaptive meshes
- Multigrid support
- A zoo of different finite elements
- Fast linear algebra
- Built-in support for shared memory and distributed parallel computing,
scaling from laptops to clusters with 100,000+ processor cores
- Interfaces to Trilinos, PETSc, METIS, UMFPACK and other external
software
- Output for a wide variety of visualization platforms.
Martin Kronblicher and Matthias Maier,
on behalf of the deal.II developer team and many contributors.