Dependencies¶
Before compiling DINO, several external libraries must be installed or available on your system.
Some are bundled with the code, while others must be installed separately.
The table below summarizes required versions, their purpose in DINO, and links for more information.
| Library | Version | Purpose in DINO | Website |
|---|---|---|---|
| 2DECOMP&FFT | 1.5.847 | Handles domain decomposition and distributed FFTs for parallel Poisson solvers and spectral operations. | 2decomb |
| MPI | — | Provides communication routines for parallel execution across multiple processors or nodes. | OPEN MPI |
| FFTW | 3.x.x | Performs fast Fourier transforms needed for spectral solvers. | FFTW |
| LAPACK | > 3.5.0 | Supplies optimized routines for linear algebra operations. | LAPACK |
| BLAS | > 3.5.0 | Provides basic linear algebra operations used by LAPACK. | BLAS |
| HYPRE | < 2.9 | Supplies scalable solvers and preconditioners for large sparse linear systems. | HYPRE |
| SUNDIALS | 1.8 or 2.6.2 | Provides solvers for ODEs/DAEs, used for advanced time integration. | SUNDIALS |
| Cantera | 1.8, 2.4.0 or 3.10 | Provides thermodynamic and kinetic data for chemical species and reactions. | Cantera |
| HDF5 | 1.8.x | Handles efficient and portable binary I/O for simulation outputs, checkpoints, and restarts. | HDF5 |
Info
Detailed installation instructions are given in the Installation section of this documentation.
Warning
- For compatibility between SUNDIALS and Cantera, only the following version pairs are supported:
- SUNDIALS 2.3 with Cantera 1.8
- SUNDIALS 2.6.2 with Cantera 2.2.0
- SUNDIALS 3.0.0 with Cantera 2.4.0
- SUNDIALS 6.0.0/ 7.0.0 with Cantera 3.1.0
- Using mismatched versions may lead to linking or runtime errors.
- Most dependencies are available via HPC module systems, package managers (
apt,yum,spack), or can be compiled from source.
If installed in non-standard locations, their prefixes should be passed to CMake using theCMAKE_PREFIX_PATHvariable.
MPI¶
Message Passing Interface (MPI) is a standardized and portable message-passing system.
FFTW¶
FFTW stands for "Fastest Fourier Transform in the West" and is a library for computing the discrete Fourier transform (DFT) in one or more dimensions, for arbitrary input size, and of real and complex data.
LAPACK and BLAS¶
LABACK and BLAS are libraries for the calculation of vector- or matrix operations. - BLAS (Basic Linear Algebra Subprograms) - LAPACK (Linear Algebra PACKage)
Note
Make sure to build the double-precision functions for LAPACK. (See options when setting up cmake for a compilation of LAPACK.)
HYPRE¶
HYPRE is a software library for high performance preconditioners and solvers to solve large, sparce linear systems of equations on massively parallel computers. The hypre library is developed at the Lawrence Livermore National Laboratory and can be istalled as described in the official hypre documentation.
Sundials¶
Sundials is a suite of advanced computational codes for solving large-scale problems that can be modeled as a system of nonlinear algebraic equations, or as initial-value problems in ordinary differntial or differntial-algebraic equations.
The CMake-based installation procedure of Sundials can be found on the official sundials documentation.
Cantera¶
Cantera is an open-source suite of tools for chemical kinetics, thermodynamics, and transport processes. It is used in DINO to compute e.g. reaction rates.
Cantera should be installed in a seperate directory, where it is available for usage.
Note
CANTERA 1.8 sometimes deletes all contents of the ./lib/subfolder during the installation, so that it can lead to issues when trying to compile DINO.
DINO is compatible with different Cantera version, and preconfig files for compiling Cantera with the required options are available in TOOLS/SCRIPTS/.preconfig_cantera_1.8.0-beta and TOOLS/SCRIPTS/.cantera_2.2.0_conf. Before using these scripts, make sure to:
- compile Cantera with the use of Sundials. Using the old version CVODE, that is shipped with Cantera is not supported by DINO. Sundials must be installed before compiling cantera, and the variable SUNDIALS_HOME in the Cantera preconfig or cantera.conf file must be set to the location of the installed Sundials.
- enable the Fortran interface of Cantera, that is necessary for DINO
- The python module of Cantera is not necessary and can be set to 'minimal'
- Set the compiler (F90) to your Fortran compiler
- If you want Cantera to use a LAPACK that is provided by you and not the one that is shipped with it, set the variables for BLAS and LAPACK libraries (they might be commented out in the .preconfig file)
Note
It is best to use Fortran and C/C++ compilers from a single vendor (e.g. ifort or gcc).
HDF5¶
HDF5 is a high-performance data management and storage suite that is build for fast I/O processing and storage. DINO requires HDF5 v1.8.8 or later, which can be installed following the manual.
The Fortran2003 interface and MPI must be enabled, which can be check by examining the libhdf5.settings file in the same directory as the hdf5 library files:
When compiling HDF5 yourself, you can enable the required settings by invoking configure with the following options: