Dune (software)
Encyclopedia
DUNE is a modular C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 library for the solution of partial differential equations using grid-based methods.

The DUNE library is divided into modules. In version 2.1 are the modules
  • general classes and infrastructure: dune-common,
  • grid interface: dune-grid,
  • linear algebra classes: dune-istl,
  • ansatz functions: dune-localfunctions,

and documentation modules available. In addition there are several experimental modules, and some which have been developed by third parties.

History

The development of DUNE started in 2002 on the initiative of Prof. Bastian (then Universität Heidelberg
Ruprecht Karl University of Heidelberg
The Ruprecht-Karls-Universität Heidelberg is a public research university located in Heidelberg, Baden-Württemberg, Germany. Founded in 1386, it is the oldest university in Germany and was the third university established in the Holy Roman Empire. Heidelberg has been a coeducational institution...

), Dr. Ohlberger (during his habilitation at the Albert-Ludwigs-Universität Freiburg), and Prof. Rumpf (then Universität Duisburg
University of Duisburg-Essen
The University Duisburg-Essen is a public university in Duisburg and Essen, North Rhine-Westphalia, Germany and a member of the new founded University Alliance Metropolis Ruhr....

). 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. All main developers still have a university background.

Goals

Right from the start the main design goal of DUNE was to allow the coupling of new and legacy codes efficiently. This is what sets DUNE apart from other finite element programs.

DUNE is primarily a set of abstract interfaces
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

, which embody concepts from scientific computing. These are mainly intended to be used in finite element and finite volume applications, but also finite difference methods 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. Also, functionality for parallel programming is described. 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.

Implementation

Various C++ techniques such as template programming
Template (programming)
Templates are a feature of the C++ programming language that allow functions and classes to operate with generic types. This allows a function or class to work on many different data types without being rewritten for each one....

, generic programming
Generic programming
In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters...

, C++ template metaprogramming
Template metaprogramming
Template metaprogramming is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled. The output of these templates include compile-time constants, data structures, and...

, and static polymorphism are used. These are well-known in other areas of software development and are slowly making their way into scientific computing. They allow the compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

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.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK