DUNE (''Distributed and Unified Numerics Environment'') is a modular
C++ library for the solution of
partial differential equations
In mathematics, a partial differential equation (PDE) is an equation which imposes relations between the various partial derivatives of a multivariable function.
The function is often thought of as an "unknown" to be solved for, similarly to ...
using grid-based methods.
The DUNE library is divided into modules. In version 2.8 are the core modules
* general classes and infrastructure: ''dune-common'',
* geometry classes: ''dune-geometry'',
* grid interface: ''dune-grid'',
* linear algebra classes: ''dune-istl'',
* local
ansatz
In physics and mathematics, an ansatz (; , meaning: "initial placement of a tool at a work piece", plural Ansätze ; ) is an educated guess or an additional assumption made to help solve a problem, and which may later be verified to be part of th ...
functions: ''dune-localfunctions''.
In addition there are several further modules, including some which have been developed by third parties.
History
The development of DUNE started in 2002 on the initiative of Prof. Bastian (then
Heidelberg University
}
Heidelberg University, officially the Ruprecht Karl University of Heidelberg, (german: Ruprecht-Karls-Universität Heidelberg; la, Universitas Ruperto Carola Heidelbergensis) is a public research university in Heidelberg, Baden-Württemberg, ...
), Dr. Ohlberger (during his habilitation at the
University of Freiburg
The University of Freiburg (colloquially german: Uni Freiburg), officially the Albert Ludwig University of Freiburg (german: Albert-Ludwigs-Universität Freiburg), is a public research university located in Freiburg im Breisgau, Baden-Württe ...
), and Prof. Rumpf (then
University of Duisburg-Essen
The University of Duisburg-Essen (german: link=no, Universität Duisburg-Essen) is a public research university in North Rhine-Westphalia, Germany. In the 2019 ''Times Higher Education World University Rankings'', the university was awarded ...
). The aim was a development model which was not attached to a single university, in order to make the project attractive for a wide audience. For the same reason a license was chosen which allows DUNE together with proprietary libraries. While most of developers still have a university background, others are providing commercial support for DUNE.
Dune Core Developer from the project website
/ref>
Goals
What sets DUNE apart from other finite element programs is that right from the start the main design goal of DUNE was to allow the coupling of new and legacy codes efficiently. DUNE is primarily a set of abstract interfaces, which embody concepts from scientific computing
Computational science, also known as scientific computing or scientific computation (SC), is a field in mathematics that uses advanced computing capabilities to understand and solve complex problems. It is an area of science that spans many disc ...
. These are mainly intended to be used in finite element
The finite element method (FEM) is a popular method for numerically solving differential equations arising in engineering and mathematical models, mathematical modeling. Typical problem areas of interest include the traditional fields of struct ...
and finite volume applications, but also finite difference methods
In numerical analysis, finite-difference methods (FDM) are a class of numerical techniques for solving differential equations by approximating derivatives with finite differences. Both the spatial domain and time interval (if applicable) are dis ...
are possible.
The central interface is the grid interface. It describes structured and unstructured grids of arbitrary dimension, both with manifold and non-manifold structure. Seven different implementations of the grid interface exist. Four of these are encapsulations of existing grid managers. It is hence possible to directly compare different grid implementations. Functionality for parallel programming is described too.
Implementation
Various C++ techniques such as template programming, generic programming
Generic programming is a style of computer programming in which algorithms are written in terms of types ''to-be-specified-later'' that are then ''instantiated'' when needed for specific types provided as parameters. This approach, pioneered b ...
, C++ template metaprogramming, and static polymorphism are used. These are well known in other areas of software development and are slowly making their way into scientific computing
Computational science, also known as scientific computing or scientific computation (SC), is a field in mathematics that uses advanced computing capabilities to understand and solve complex problems. It is an area of science that spans many disc ...
. They allow the compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
to eliminate most of the overhead introduced by the extra layer of abstraction. A high level of standard conformance is required for this from the compiler.
References
External links
DUNE webpage
* Scientifi
publications
about DUNE.
Bibliography
* {{cite book , vauthors= Sander O , title=DUNE — The Distributed and Unified Numerics Environment , publisher = Springer International Publishing , year = 2020 , isbn = 978-3-030-59701-6
Numerical software
Numerical linear algebra
Scientific simulation software
C++ libraries
Finite element software for Linux
Free software programmed in C++