1_introduction.tex 5.09 KB
Newer Older
1
\Dumux aims to be a generic framework for the simulation of multiphase
Christoph Grueninger's avatar
Christoph Grueninger committed
2
fluid flow and transport processes in porous media using continuum
3 4 5 6 7 8 9 10
mechanical approaches.  At the same time, \Dumux aims to deliver
top-notch computational performance, high flexibility, a sound
software architecture and the ability to run on anything from single
processor systems to highly parallel supercomputers with specialized
hardware architectures.

The means to achieve these somewhat contradictory goals are the
thorough use of object oriented design in conjunction with template
Christoph Grueninger's avatar
Christoph Grueninger committed
11
programming. These requirements call for \Cplusplus as the implementation
12 13 14 15 16
language.

One of the more complex issues when dealing with parallel continuum
models is managing the grids used for the spatial discretization of
the physical model. To date, no generic and efficient approach exists
Christoph Grueninger's avatar
Christoph Grueninger committed
17
for all possible cases, so \Dumux is build on top of \Dune, the
18
\textbf{D}istributed and \textbf{U}nified \textbf{N}umerics
Christoph Grueninger's avatar
Christoph Grueninger committed
19
\textbf{E}nvironment~\cite{DUNE-HP}. \Dune provides a generic interface
20
to many existing grid management libraries such as UG~\cite{UG-HP},
21
ALUGrid~\cite{ALUGRID-HP,alugrid2016} and a few more.
22
DUNE also extensively uses template programming in order to
23
achieve minimal overhead when accessing the underlying grid
Bernd Flemisch's avatar
Bernd Flemisch committed
24
libraries\footnote{In fact, the performance penalty resulting from the
Christoph Grueninger's avatar
Christoph Grueninger committed
25
use of \Dune's grid interface is usually negligible~\cite{BURRI2006}.}.
Bernd Flemisch's avatar
Bernd Flemisch committed
26
\begin{figure}[hbt]
Thomas Fetzer's avatar
Thomas Fetzer committed
27
  \centering
28
  \includegraphics[width=.5\linewidth, keepaspectratio]{png/dunedesign.png}
Bernd Flemisch's avatar
Bernd Flemisch committed
29 30
  \caption{
    \label{fig:dune-design}
Christoph Grueninger's avatar
Christoph Grueninger committed
31
    A high-level overview of \Dune's design is available on the project's
Bernd Flemisch's avatar
Bernd Flemisch committed
32 33 34 35 36 37 38 39 40
    web site~\cite{DUNE-HP}.
  }
\end{figure}

DUNE's grid interface is independent of the spatial dimension of the
underlying grid. For this purpose, it uses the concept of
co-dimensional entities. Roughly speaking, an entity of co-dimension
$0$ constitutes a cell, co-dimension $1$ entities are faces between
cells, co-dimension $1$ are edges, and so on until co-dimension $n$
Christoph Grueninger's avatar
Christoph Grueninger committed
41
which are the cell's vertices.  The \Dune grid interface generally
Bernd Flemisch's avatar
Bernd Flemisch committed
42 43
assumes that all entities are convex polytopes, which means that it
must be possible to express each entity as the convex hull of a set of
44
vertices. For the sake of efficiency, all entities are further expressed in terms
Bernd Flemisch's avatar
Bernd Flemisch committed
45 46
of so-called reference elements which are transformed to the actual
spatial incarnation within the grid by a so-called geometry
47
function. Here, a reference element for an
Bernd Flemisch's avatar
Bernd Flemisch committed
48
entity can be thought of as a prototype for the actual grid
49
entity. For example, if we used a grid which applied hexahedrons as cells,
Bernd Flemisch's avatar
Bernd Flemisch committed
50 51
the reference element for each cell would be the unit cube $[0, 1]^3$
and the geometry function would scale and translate the cube so that
52 53 54 55
it matches the grid's cell. A quick overview of reference elements and the
related numbering can be gotten from the DUNE cheat sheet
(\url{https://www.dune-project.org/pdf/dune-cheat-sheet.pdf}).
For a more thorough description of \Dune's
Bernd Flemisch's avatar
Bernd Flemisch committed
56 57
grid definition, see~\cite{BASTIAN2008}.

Christoph Grueninger's avatar
Christoph Grueninger committed
58
In addition to the grid interface, \Dune also provides quite a few
59 60 61 62 63 64 65
additional modules, of which the \texttt{dune-localfunctions} and
\texttt{dune-istl} modules are the most relevant in the context of
this handbook. \texttt{dune-localfunctions} provides a set of generic
finite element shape functions, while \texttt{dune-istl} is the
\textbf{I}terative \textbf{S}olver \textbf{T}emplate \textbf{L}ibrary
and provides generic, highly optimized linear algebra routines for
solving the generated systems.
Bernd Flemisch's avatar
Bernd Flemisch committed
66

Thomas Fetzer's avatar
Thomas Fetzer committed
67 68 69 70 71 72 73 74 75
\Dumux comes in form of an additional module \texttt{dumux}.
It depends on the \Dune core modules
\texttt{dune-common}, \texttt{dune-grid}, \texttt{dune-istl}, and on \texttt{dune-localfunctions}.
The main intention of \Dumux is to provide a framework for an easy and efficient
implementation of new physical models for porous media flow problems,
ranging from problem formulation and the selection of
spatial and temporal discretization schemes as well as nonlinear solvers,
to general concepts for model coupling.
Moreover, \Dumux includes ready to use numerical models and a few example applications.
Bernd Flemisch's avatar
Bernd Flemisch committed
76

77 78 79 80 81 82 83 84 85 86 87 88 89 90
This is the handbook to a new major version update of \Dumux: version 3.0.
The release contains considerable improvements and many new features compared to the 2.x versions. 
Due to the major update, backwards compatibility with the last release 2.12 cannot be assured.
To facilitate the transition for our users, we have created a
git wiki entry describing how to update programs from version 2.12 to version 3.0.
It is available online:
\url{https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/wikis/Updating-programs-from-version-2.12-to-version-3.0}.
The guide leads in detail through the interface changes from 2.12 to 3.0,
concerning the \texttt{Problem} class, the \texttt{SpatialParams} class,
the \texttt{Parameters} and \texttt{Properties}, i.e. the main user interface.
Starting with version 3.0.0, all minor
version updates will certainly be backward compatible again with at least the last minor version.
We highly recommend all our users to transition with us to \Dumux-3.0
and wish everyone a brand-new and exciting simulation experience.