Dune (software)

from Wikipedia, the free encyclopedia
Dune

Dune-logo6.png
Basic data

Current  version 2.7.0
( January 19, 2020 )
operating system Linux , Unix , OS X
programming language C ++
category FEM program
License GPL (version 2) with "runtime exception"
www.dune-project.org

Dune ( Distributed and Unified Numerics Environment ) is a modular C ++ - library for solving partial differential equations with grid-based method.

Dune consists of modules and in version 2.7 includes the parts

  • General classes in dune-common ,
  • Geometry classes in dune-geometry ,
  • Grid interface in dune-grid ,
  • Matrix, vector library and solver in dune-istl ,
  • Approach functions in dune-local functions ,

as well as the tutorial dune-grid-howto . There are also other modules, some of which are developed by third parties.

history

The development of Dune began in 2002 on the initiative of Prof. Bastian ( University of Heidelberg ) and Dr. Ohlberger (during his habilitation at the Albert Ludwigs University of Freiburg ) and Prof. Rumpf (at that time the University of Duisburg ). The aim was to develop an open development model that was not linked to individual universities in order to make the project attractive to the broadest possible user group. For the same reason, a license was chosen that allows Dune to be used in conjunction with proprietary libraries. Even today, the main developers come from the university environment.

Goal setting

During the development of Dune, the aim from the beginning was to be able to link new code and existing libraries in an efficient way. This is also the main difference to other finite element programs.

Dune is initially a collection of software interfaces that implement abstract concepts in scientific computing , such as that of a grid. When designing the grid interface, the finite element methods and finite volume methods were in the foreground, but the use of finite difference methods is also possible. The grid interface is also the most advanced part. It allows the description of structured and unstructured grids of any dimension as well as of grids on manifolds. It also allows the simple use of parallel programming concepts in the field of high-performance computing . There are implementations of the grid interface for seven different grids; four of them allow the use of existing libraries (status: 2007). One can thus use and compare the same discretization on different grid implementations.

technology

In order to be able to efficiently implement the set goals, various C ++ techniques such as template programming , generic programming , C ++ metaprogramming and static polymorphism are used. These techniques have long been used in other areas of software development, but their use is still rare in the area of scientific computing . They allow the compiler to almost completely eliminate the overhead created by the abstraction and to use advanced optimization techniques. These techniques place high demands on the conformity of the compiler used, which limits the platforms supported.

Individual evidence

  1. lists.dune-project.org .
  2. Archive link ( Memento of the original dated December 13, 2007 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / www.dune-project.org

Web links