In this section about the installation of \Dumux it is assumed that you work on a UNIX compatible operating system and that you are familiar with the use of a shell.
Moreover, you should know, if necessary, how to install new software packages or you should have a person aside which can give you assistance with the shell and the package installation.
At the end of this chapter, we list some basic prerequisites for running \Dune and \Dumux.
Please check this paragraph to evaluate whether it is possible for you to run \Dune and \Dumux.
Moreover, some optional libraries and modules are listed, which can be helpful for the work with \Dumux.
As in a \Dune installation, all \Dune modules including \Dumux should be extracted into a common directory named {\Dune}-ROOT.
Each \Dune module is associated with a directory name in the folder {\Dune}-ROOT. For convenience, this directory name is also used as an alias for the module name, a practice we will follow here, too. After installing source code for all required \Dune modules including the \Dumux parts, \Dune is being built by the shell-command \texttt{dunecontrol} which is part of the {\Dune}-Build-System. The {\Dune}-Build-System is essentially a front-end of the gnu tool \texttt{autoconf} which was specialized for the \Dune project.
and \texttt{automake} must be available in a recent version.
The \Dumux property system, which is used in most of the models, makes use of \texttt{libboost}.
It is thus necessary to install the developer version of \texttt{boost}.
The building of the documentation requires \LaTeX\ and auxiliary tools like \texttt{dvipdf} and \texttt{bibtex}.
Additionally, the program \texttt{convert} from the package ImageMagick is needed to build the handbook.
If you use the configuration switch \texttt{--enable-doxygen} in order to generate the doxygen files (documentation generator) you will also need \texttt{doxygen}.
Two possibilities exist to obtain \Dune and \Dumux.
They can be obtained as so-called tarballs, i.e. \Dumux and \Dune code files of a certain version are packed into tar-archive files for download from the the respective {\Dune} and {\Dumux} website.
The shell command \texttt{tar} can be used to extract them on your file system. This is explained in the next paragraph.
The other possibility is to directly access the project archives of \Dune and \Dumux, the so-called software repositories.
These are archives of a software version control system named \texttt{apache subversion}.
From here on this is referred to as subversion.
You need a subversion client, with which you can access the repositories.
This comes with a usual UNIX distribution or can be installed. Our description is limited to a standard subversion shell client realized by the shell command \texttt{svn}.
If you also want to commit new developments to the repositories, you can ask the \Dumux project leader to get either full developers access or access for certain parts of \Dumux.
The developer part \texttt{dumux-devel} is only available for people who belong to the \Dumux developer group and have non-anonymous access to the subversion repositories.
If you have developer rights the checkout looks as follows:
When using subversion it is possible, provided that to you are granted developer and have write permissions to repositories, to feed back your own code or code modifications to the software repositories.
Moreover, with direct access to the repositories it is easier to keep up with code changes, to receive important bug fixes and to keep up with general developments of code.
\item\textbf{UG}: UG is a toolbox for Unstructured Grids: As \Dumux, it is build by \texttt{autotools} and a C++-compiler. Additionally, the tools \texttt{lex}/\texttt{yacc} or the gnu-versions \texttt{flex}/\texttt{bison} are needed.
\item\textbf{Alberta}: Adaptive multiLevel finite element toolbox using Bisectioning refinement and Error control by Residual Techniques for scientific Applications: A Fortran compiler like \texttt{gfortran} is required.
\item\textbf{ALUGrid}: ALUGrid is build by a C++-compiler like \texttt{g++}. If you want to build a parallel version, you will need \texttt{MPI}. It was successfully run with \texttt{openmpi}. The parallel version needs also a graph partitioner, such as \texttt{METIS} or \texttt{PARTY}. It was run successfully in combination with \Dune using \texttt{METIS}.
\item\textbf{PARDISO}: The package PARDISO is a thread-safe, high-performance, robust, memory efficient and easy to use software for solving large sparse symmetric and unsymmetric linear systems of equations on shared memory multiprocessors. The precompiled binary can be downloaded after personal registration from the PARDISO website (\texttt{\url{http://www.pardiso-project.org}}).
\item\textbf{SuperLU}: SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations (\texttt{\url{http://crd.lbl.gov/~xiaoye/SuperLU}}).
\item\textbf{\Dune-multidomaingrid}: If you going to run on the same grid different domains or subdomains, this can be the package of choice.
To be precise, this is not only an external library but an external \Dune module which, like \Dumux, is built by the \Dune build system. The \Dune-multidomaingrid module provides a meta grid that allows the subdivison of arbitrary \Dune grids into subdomains, e.g. for multi-physics approaches (\texttt{\url{http://gitorious.org/dune-multidomaingrid}}).
The following are dependencies of some of the used libraries. You will need them depending on which modules of \Dune and which external libraries you use.
\item\textbf{MPI}: The parallel version of \Dune and also some of the external dependencies need MPI when they are going to be built for parallel computing. \texttt{Openmpi} and \texttt{MPICH} in a recent version have been reported to work.
\item\textbf{lex/yacc} or \textbf{flex/bison}: These are quite common developing tools, code generators for lexical analyzers and parsers. This is a prerequisite for UG.
\item\textbf{boost}: The Boost-C++-Libraries. Install a developer version. The \Dumux property system and {\Dune}-Multidomaingrid make use of \texttt{libboost}.
\item\textbf{BLAS}: Alberta makes use of BLAS. Thus install libGOTO, ATLAS, non-optimized BLAS or BLAS by chipmanufacturer. Take care that the installation scripts select the intended version of BLAS.
\item\textbf{make, autogen, automake, libtool}: You can make use of the gnu version of \texttt{make}. The other tools are also gnu building tools and they are required to build most of the \Dune and \Dumux code.
\texttt{autogen} and \texttt{automake} are referred to as \texttt{autools}.
\item\textbf{\LaTeX, convert, doxygen}: In order to build the \Dumux documentation these tools are needed. \texttt{convert} is a ImageMagicks image conversion tool.
\LaTeX\ is a front-end to the \TeX\ font setting system. Install texlive for example. A great part of the code documentation is done inline using doxygen, which extracts the documentation and makes HTML or \LaTeX\ out of that.
The libraries are then build within the external-directory and are not installed in a different place.
But a \Dune build still needs to know where they are. You have to refer to them as options for the \Dune build, for example in your options file \texttt{debug.opts}.
This uses the \Dune build-system. If it does not work, please have a look at the file \texttt{INSTALL} in the \Dumux root directory (if you use SVN, this \texttt{\$DUMUX\_ROOT} is usually \texttt{dumux},
if you use a released version it is usually \texttt{dumux-VERSION}).
You can also find more information in the \Dune Buildsystem HOWTO located at the \Dune web page, \cite{DUNE-HP}.
Alternatively, the tool CMake can be used to build \Dumux. Please check the file \texttt{INSTALL.cmake} for details.