.. index:: Required libraries .. _requirements: A complete list of requirements =============================== TRIQS is built upon several python and C++ libraries, which, if not present already in your system, can be freely downloaded and installed. All the libraries and tools used by TRIQS are described below. .. _require_cxx_compilers: C++ compilers ------------- TRIQS is written in C++, i.e. in the **C++11** standard as defined by the ISO standardization committee. A recent compiler is therefore mandatory. * Standard compliant C++ compilers (recommended and supported). * :ref:`clang 3.3` and higher (in particular the default clang on OS X >= 10.8). * g++ 4.8.1 and higher * The intel icc 15.0 is close to be C++11 compliant, but presents currently too many bugs to be supported at present. It compiles 99% of TRIQS, but we do not have the ressources to write and maintains all necessary workarounds. * C++98 compilers * g++ before 4.8.1 * Intel icc 13.0 and below Compilers implementing the previous version of the C++ standard (C++98) do not work and will *not* be supported. Libraries --------- +------------------------+----------+------------------------------------------------------------------------+ | Library/tool | Version | Comment | +========================+==========+========================================================================+ | mpi | openmpi | Parallelism (1). | +------------------------+----------+------------------------------------------------------------------------+ | fftw | >= 3.2 | Fourier transforms | +------------------------+----------+------------------------------------------------------------------------+ | boost | >= 1.49 | C++ librairies | +------------------------+----------+------------------------------------------------------------------------+ | hdf5 | >= 1.8.2 | File storage system. Important: the *serial* version must be installed | +------------------------+----------+------------------------------------------------------------------------+ | python | >= 2.7 | The Python interpreter | +------------------------+----------+------------------------------------------------------------------------+ | scipy | >= ? | Python mathematical library | +------------------------+----------+------------------------------------------------------------------------+ | numpy | >= ? | Python scientific library | +------------------------+----------+------------------------------------------------------------------------+ | h5py | >= ? | Python interface to hdf5 library | +------------------------+----------+------------------------------------------------------------------------+ | mpi4py | >= ? | Python MPI | +------------------------+----------+------------------------------------------------------------------------+ | sphinx | >= 1.0.1 | Python documentation tools (to compile documentation) | +------------------------+----------+------------------------------------------------------------------------+ | cmake | >= 2.8.7 | CMake is used to control the software compilation process | +------------------------+----------+------------------------------------------------------------------------+ | mako | >= 0.9.1 | mako templates are used to generate the C++/python wrapper | +------------------------+----------+------------------------------------------------------------------------+ | pyparsing | >= ? | Tool for sphinx (to compile documentation) | +------------------------+----------+------------------------------------------------------------------------+ | sphinxcontrib-doxylink | >= ? | Tool for sphinx (to compile documentation) | +------------------------+----------+------------------------------------------------------------------------+ | matplotlib | >= 0.99 | Python 2D plotting library | +------------------------+----------+------------------------------------------------------------------------+ | libclang | 3.4 | python bindings of the clang lib (for TRIQS developers ONLY) | +------------------------+----------+------------------------------------------------------------------------+ (1) Since standard linux distributions (and macports on OS X) now provides openmpi, even on laptops, we avoid the unnecessary complication of maintaining a non-parallel version of TRIQS