                         ==================
                         INSTALLATION GUIDE
                         ==================


PREREQUISITES - WHICH SOFTWARE WILL BE NEEDED?
==============================================
Minimum Requirements:
---------------------
* C++ compiler supporting C++11 (incl. C++11 aliases like GCC >= 4.8.1)
* ScaFES >= 2.0
* Boost C++ libraries >= 1.42
* MPI implementation (like Open MPI)
* bash >= 3.0

Maximum Requirements:
---------------------
* Software required in 'Minimum Requirements'
* C++ compiler additionally supporting OpenMP >= 3.1 (like GCC >= 4.8.1)
* ADOL-C >= 2.0
* LBFGS-B >= 2.1
* NetCDF >= 4.1 (and >= 4.3 for the parallel variant)


HOW TO INSTALL THE SOFTWARE?
============================
The build and installation process is based on the GNU autotools.
Thus, building and installing this software means combining configure and make.

1) The software can be configured for the underlying system by calling
   the usual configure script. In order to install the software to a desired
   directory, the configure option '--prefix=<installdir>' can be used.
   Please make sure that the installation directory is writable.
   This can be either ensured by executing the following command as
   super user (su) or by using the configure option '--prefix=<installdir>'
   with a writable directory <installdir>.

       ./configure

   The following options can be set:

       --enable-doc          Enables generating the documentation [default=no].
       --enable-openmp       Enables OpenMP support. [default=no].
       --enable-adolc        Enables ADOL-C support. [default=no].
       --enable-lbfgsb       Enables LBFGS-B support. [default=yes].

       --with-scafes         Sets the base directory of ScaFES [default=/usr].
       --with-mpi            Sets the base directory of OpenMPI [default=/usr].
       --with-boost          Sets the base directory of Boost [default=/usr].
       --with-adolc          Sets the base directory of ADOL-C [default=/usr].
       --with-lbfgsb         Sets the base directory of LBFGS-B [default=/usr].

   Compiler and compiler options can be set via the environment variables
   CXX and CXXFLAGS. Thus, an example call would look as follows:

       CXX=g++  CXXFLAGS='-O3 -Wall' \
       ./configure --enable-openmp --enable-adolc --with-boost=/opt/boost

2) Examples can be compiled in order to illustrate the usage of the software.
   One can use the make option '-j' if more than one core is available.

       make

   The examples can be setup and executed via the bash script located in
   the corresponding directories, e.g.:

       cd examples/OptimHeatEqnFDM
       ./SETUP_AND_RUN.sh

3) If everything went fine, the software can be installed.

       make install

