                     ============================
                     INSTALLATION GUIDE OF SCAFES
                     ============================


PREREQUISITES - WHICH SOFTWARE WILL BE NEEDED FOR USING SCAFES?
===============================================================
Minimum Requirements:
---------------------
* C++ compiler supporting C++11 (like GCC >= 4.7.0)
* MPI implementation (like Open MPI)
* Boost.ProgramOptions >= 1.42.0
* Boost.Regex >= 1.42.0
* Boost.Serialization >= 1.42.0
* Boost.MPI >= 1.42.0
* bash >= 3.0

Maximum Requirements:
---------------------
* Software required in 'Minimum Requirements'
* C++ compiler additionally supporting OpenMP >= 3.1 (like GCC >= 4.7.0)
* HDF5
* NetCDF >= 4.0 (and >= 4.3 for parallel writing).


HOW TO INSTALL SCAFES?
======================
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:

       ./configure

   The following options can be set:
      
       --enable-doc          Enables generating the documentation [default=no].
       --enable-netcdf       Enables writing data fields to files [default=no].
       --enable-openmp       Enables OpenMP support. [default=no].

       --with-mpi            Sets the base directory of OpenMPI [default=/usr].
       --with-boost          Sets the base directory of Boost [default=/usr].
       --with-netcdf         Sets the base directory of NetCDF [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-netcdf --with-boost=/opt/boost

2) Examples can be compiled in order to see how new problems can be implemented.
   The build process can be done in parallel if the underlying system
   has more than one core. Then, please use the make option '-j'.

       make

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

       cd examples/HeatEqnFDM
       ./SETUP_AND_RUN.sh

3) System tests can be compiled in order to check the correctness of the build.
   Again, one can use the make option '-j' if more than one core is available.

       make check

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

       cd tests/system/PropagationFromLeftLowerCorner
       ./SETUP_AND_RUN.sh

4) If everything went fine, the software can be installed.
   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>.

       make install

