version 0.6.0
How to build Notus third-party libraries

Notus relies on the ADIOS and HYPRE libraries. Optionally, Notus relies on MUMPS, LIS, ADIOS2, HDF5, T3PIO libraries

Some libraries may depend to other libraries:

  • ADIOS: parallel I/O (website)
    • Mini-XML: xml parser used by ADIOS (website)
  • HYPRE: high-performance iterative solvers (website)
    • BLAS: Basic Linear Algebra Subprograms (website)
    • LAPACK: Linear Algebra PACKage (website)
  • MUMPS: high-performance direct solver (website)
    • METIS: Serial Graph Partitioning and Fill-reducing Matrix Ordering (website)
    • ScaLAPACK: Scalable Linear Algebra PACKage (website)

All these libraries (except BLAS and LAPACK that have to be installed on the system) can be downloaded and built thanks to the third-party libraries bundle that we advise to use.

Remark: on Condor supercomputer on which all librairies are already installed, you can skip this section and switch to the next one.

The third-party libraries bundle

We provide a git repository that you can clone (or download). It contains a third-party library installation script and an src directory that contains all the third-party libraries tarballs required by Notus.

To clone the bundle into the notus_third_party directory (no space in the directory path):

git clone https://git.notus-cfd.org/notus/notus_third_party.git notus_third_party

Automatic third-party libraries installation

Default installation

By default the script installs the third-party libraries in the $HOME/usr directory. You can modify the installation directory with the --install-dir option.

To build and install all third-party libraries on different kind of Linux systems, see the Readme page of the script.

Installing all the third party libraries may not be useful since some of them are very specific. We advice to install the minimum required (-m option) first. MUMPS solver may be useful (for 2D problem) and be installed in a second step with options --metis --scalapack --mumps (or scalapack-patched if --scalapack failed).

Script usage

The script build_notus_third_party_lib.sh can be executed with the following options:

Usage : build_notus_third_party_lib.sh [OPTIONS]

  -a                             build and install all third-party libraries
  -m                             build and install minimum required third-party libraries (MXML, ADIOS, HYPRE)
  -c                             clean directories before building
  -j                             number of threads used to compile (default 4)
  -h                             print usage

  --install-dir DIRECTORY        installation directory (defaut /home/glockner/usr)

  --use-mkl                      use MKL for BLAS and LAPACK

  --mxml                         build and install Mini-XML (2.12)
  --adios                        build and install ADIOS (1.13.1)
  --adios2                       build and install ADIOS2 (2.5.0)
  --hdf5                         build and install HDF5 (1.12.0)
  --hypre                        build and install HYPRE (2.18.2)
  --hypre-debug                  build and install HYPRE (2.18.2) enabling debug compiler options
  --metis                        build and install METIS (5.1.0)
  --scalapack                    build and install ScaLAPACK (2.0.2)
  --scalapack-patched            build and install patched ScaLAPACK (2.0.2)
  --mumps                        build and install MUMPS (5.3.1)
  --lis                          build and install LIS (2.0.19)
  --t3pio                        build and install T3PIO (2.4)

Use these alternative versions if it fails with non-patched versions
  --scalapack-patched            build and install patched ScaLAPACK (2.0.2)
  --lis-patched                  build and install patched LIS (2.0.19)

To download and install a different version, use the following options:
  --mxml-version       VERSION   select the Mini-XML version
  --adios-version      VERSION   select the ADIOS version
  --hdf5-version       VERSION   select the HDF5 version
  --hypre-version      VERSION   select the HYPRE version
  --metis-version      VERSION   select the METIS version
  --scalapack-version  VERSION   select the ScaLAPACK version
  --mumps-version      VERSION   select the MUMPS version
  --lis-version        VERSION   select the LIS version
  --t3pio-version      VERSION   select the T3PIO version

  --cc    c compiler             select the C compiler (default gcc)
  --cxx   c++ compiler           select the C++ compiler (default g++)
  --fc    fortran compiler       select the Fortran compiler (default gfortran)
  --mpicc  MPI c wrapper         select the C compiler (default mpicc)
  --mpicxx MPI c++ wrapper       select the C++ compiler (default mpic++)
  --mpifc  MPI fortran wrapper   select the Fortran compiler (default mpif90)
  --with-MPI-include DIR         MPI include directory (user specifies that mpi.h is in DIR)
  --with-blas-lib-dir DIR        BLAS directory (default /usr/lib)
  --with-lapack-lib-dir DIR      LAPACK directory (default /usr/lib)