dune-xt (dune eXTensions)
Adds convenience features and enables programming of generic algorithms.
|René Fritze, Tim Keil, Tobias Leibner, Felix Schindler
What are the dune-xt modules?
The dune-xt (DUNE eXTensions) project aims to provide an extra layer of usability and convenience to existing DUNE modules and at the same time to enable programming of generic algorithms, in particular in the context of discretization frameworks. It consists of the five modules dune-xt-common, dune-xt-data, dune-xt-grid, dune-xt-la and dune-xt-functions.
The dune-xt-common module provides:
- Vector and Matrix abstractions that allow programming of generic algorithms
- String conversion utilities for vectors and matrices
- FloatCmp for vectors and matrices
- Extensions of FieldVector and FieldMatrix that add features like additional algebraic operators
- Utilities to simplify handling of parametric functions and equations
- Several other convenience classes
The dune-xt-data module serves a storage for data files that are needed in other dune-xt modules. In particular, it contains several quadratures:
- Gauss-Lobatto quadratures up to order 197
- Fekete quadratures (on triangles) up to order 18
- Quadratures on the unit sphere: Lebedev quadratures up to order 131, octant-wise quadratures up to order 70 and product quadratures (in spherical coordinates).
In addition, the dune-xt-data module contains code to numerically calculate matrix exponentials.
The dune-xt-grid module provides the following features:
- The GridWalker which registers an arbitrary number of functors and applies them all in a single (thread-parallel) walk over the grid.
- GridProviders to allow generic creation of different grids
- Utilities for simple handling of boundary conditions
- A PeriodicGridView class that turns every GridView into a periodic gridview at the specified boundaries
- An EntitySearch which can find entities by domain coordinates (e.g. for projections and prolongations on adaptive grids)
The dune-xt-la module contains:
- Thread-safe linear algebra containers (vectors and matrices)
- Runtime selectable linear solvers
- Generic linear algebra algorithms (e.g. Cholesky and QR decomposition, Eigensolvers) that work with any vectors and matrices for which a VectorAbstraction or MatrixAbstraction, respectively, exist, in particular with dune-common’s matrix and vector classes.
The dune-xt-functions module provides functions that can be evaluated in global coordinates and localizable function classes that can be bound to entities and evaluated in local coordinates.
How to use the dune-xt modules
We provide a git repository containing the dune-xt modules and all required dependencies. You can find this super module and installation instructions here. If you want to use our discretization module dune-gdt, you should use the dune-gdt-super repository instead.
You can also use (some of) the dune-xt modules in your existing DUNE setup, just put it as a requirement or suggestion into the dune.module file of your own module and configure/build it through dunecontrol (see the documentation of dune-common for details). Of course you also have to add the dependencies listed above (dune-pybindxi is available here).