1_introduction.tex 5.09 KB
 Viktor Szukitsch committed Sep 01, 2011 1 \Dumux aims to be a generic framework for the simulation of multiphase  Christoph Grueninger committed Jul 12, 2012 2 fluid flow and transport processes in porous media using continuum  Andreas Lauser committed Sep 13, 2010 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 committed Jul 12, 2012 11 programming. These requirements call for \Cplusplus as the implementation  Andreas Lauser committed Sep 13, 2010 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 committed Jul 12, 2012 17 for all possible cases, so \Dumux is build on top of \Dune, the  Andreas Lauser committed Sep 13, 2010 18 \textbf{D}istributed and \textbf{U}nified \textbf{N}umerics  Christoph Grueninger committed Jul 12, 2012 19 \textbf{E}nvironment~\cite{DUNE-HP}. \Dune provides a generic interface  Andreas Lauser committed Sep 13, 2010 20 to many existing grid management libraries such as UG~\cite{UG-HP},  Sina Ackermann committed Mar 17, 2017 21 ALUGrid~\cite{ALUGRID-HP,alugrid2016} and a few more.  Timo Koch committed Feb 02, 2016 22 DUNE also extensively uses template programming in order to  Andreas Lauser committed Sep 13, 2010 23 achieve minimal overhead when accessing the underlying grid  Bernd Flemisch committed Jul 16, 2010 24 libraries\footnote{In fact, the performance penalty resulting from the  Christoph Grueninger committed Jul 12, 2012 25 use of \Dune's grid interface is usually negligible~\cite{BURRI2006}.}.  Bernd Flemisch committed Jul 16, 2010 26 \begin{figure}[hbt]  Thomas Fetzer committed Jul 09, 2015 27  \centering  Timo Koch committed Dec 18, 2018 28  \includegraphics[width=.5\linewidth, keepaspectratio]{png/dunedesign.png}  Bernd Flemisch committed Jul 16, 2010 29 30  \caption{ \label{fig:dune-design}  Christoph Grueninger committed Jul 12, 2012 31  A high-level overview of \Dune's design is available on the project's  Bernd Flemisch committed Jul 16, 2010 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 committed Jul 12, 2012 41 which are the cell's vertices. The \Dune grid interface generally  Bernd Flemisch committed Jul 16, 2010 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  Viktor Szukitsch committed Sep 01, 2011 44 vertices. For the sake of efficiency, all entities are further expressed in terms  Bernd Flemisch committed Jul 16, 2010 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 committed Jul 16, 2010 48 entity can be thought of as a prototype for the actual grid  Viktor Szukitsch committed Sep 01, 2011 49 entity. For example, if we used a grid which applied hexahedrons as cells,  Bernd Flemisch committed Jul 16, 2010 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  Melanie Lipp committed Dec 18, 2018 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 committed Jul 16, 2010 56 57 grid definition, see~\cite{BASTIAN2008}.  Christoph Grueninger committed Jul 12, 2012 58 In addition to the grid interface, \Dune also provides quite a few  Andreas Lauser committed Feb 06, 2012 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 committed Jul 16, 2010 66   Thomas Fetzer committed Jul 09, 2015 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 committed Jul 16, 2010 76   Beatrix Becker committed Dec 18, 2018 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.