4. Download and Installation

The CLUMPY package is written in C/C++ (but no classes) for UNIX systems (Linux, Mac OSX) and is interfaced with several third-party softwares. Some are mandatory, other optional to be installed before proceeding to the CLUMPY installation.

4.1. Third-party softwares

  • To install (mandatory)

    1. GSL (Gnu scientific library): we recommend installing the package for your distribution with a package manager (or, if needed, install it locally).

    Note

    You have to install the development files gsl-devel for the header files to include.

    1. CFITSIO (handle FITS files): we recommend installing the package for your distribution with a package manager. If it does not exist for your system, download it and install it by hand (see the Troubleshooting section if you face problems with a manual CFITSIO installation).

    Note

    You can use a local CFITSIO installation outside the common system include and library directories. In this case, you have to set the environmental variables CFITSIO_LIB_DIR and CFITSIO_INC_DIR pointing to your CFITSIO library/include file directories to make cmake finding it.

  • Shipped with the code (no need to install!)

  • Optional packages

    1. ROOT CERN library for displays and random drawing clumps from multivariate distributions. The easiest way to install it on your system is via your package manager (apt-get, dnf, or brew, etc.), and do not forget the development (-devel) packages. Alternatively, you may want to compile locally ROOT. To do so, download a version and follow the configuration/compilation instructions to build ROOT. In addition, in the latter case, do not forget to define the ROOTSYS environment variable, e.g., in your ~/.bashrc).

    2. GreAT (Grenoble Analysis Toolkit): if you want to run MCMC/Jeans analyses, follow the download/installation instruction directly from GreAT on GitLab. Before configuring CLUMPY with cmake, you have to set the environmental variable GREAT and do (e.g., in your ~/.bashrc):

      $ export LD_LIBRARY_PATH=$GREAT/lib:$LD_LIBRARY_PATH
      $ export DYLD_LIBRARY_PATH=$GREAT/lib:$DYLD_LIBRARY_PATH  *[Mac OSX only]*
      

      Note

      GreAT iself depends on ROOT. By this, linking CLUMPY against GreAT makes the CLUMPY compilation also dependent on ROOT.

    3. Doxygen: useful for developers if you want to generate locally the code documentation. Otherwise, we already provide it online.

    4. CLASS: needed for the computation of the linear matter power spectrum. In the directory data/pk_precomp, we already ship a variety of power spectra for different cosmological parameters and a large range in \(k\). For further user-demands, the environmental variable CLASS must point to main directory of a local CLASS installation, and CLASS is run from inside CLUMPY. Computed power spectra are saved in $CLUMPY/data/pk_precomp.

Note

For Mac OSX, we recommend to install GSL, CFITSIO, and optionally ROOT via homebrew. To define the environment variable ROOTSYS, you need to source, e.g., in your configuration file ~/.bashrc, thisroot.sh/thisroot.csh. To know where it is, type, e.g. for ROOT 6, brew info root6.

4.2. Installation

  1. Clone from git repository (if you seek for an old code release, see Release history):

    $ git clone https://gitlab.com/clumpy/CLUMPY.git --depth=1
    

    or see the GitLab repository for alternative ways to download the code.

  2. The compilation relies on cmake (file CmakeLists.txt):

    $ cd CLUMPY
    $ mkdir build; cd build
    $ cmake ../
    $ make -jN   *[using N=2, 3,... cores]*
    

    Note

    CLUMPY requires cmake \(\geq\) 3.2. If you need to install cmake itself and do not have access to a C++2011 compiler, cmake 3.2.3 does the job.

  3. Define the CLUMPY environment variables (e.g., in your ~/.bashrc):

    $ export CLUMPY=absolute_path_to_local_installation
    $ export PATH=$CLUMPY/bin:$PATH
    $ export LD_LIBRARY_PATH=$CLUMPY/lib:$LD_LIBRARY_PATH
    $ export DYLD_LIBRARY_PATH=$CLUMPY/lib:$DYLD_LIBRARY_PATH  *[Mac OSX only]*
    

    Note

    Do not forget to $ source ~/.bashrc (or whereever your variables are defined) to ensure that the environment variables are set in your current xterm ($ echo $CLUMPY should point to the directory where you installed CLUMPY).

    You should now be able to run the code from anywhere just typing

    $ clumpy
    
  4. Test installation: we now provide an automated test suite to check the proper output of all modules after the installation. After having set up correctly all environmental variables, just type

    $ clumpy_tests
    

    Note

    To pass all the tests, the environmental variable CLUMPY must be set.

This verson was succesfully installed and tested on:

  • Ubuntu 14.04 (LTS, gcc 4.8.4) and 17.10 (c++ 7.2)
  • MacOS X High Sierra (10.13.4, clang-902.0.39.2) and Capitan
  • Scientific Linux 6.9 (Carbon, gcc 4.4.7)
  • Fedora 25 (c++ 6.4.1)

Alternatively, you can also use the preinstalled code version in the Docker image hub.docker.com/r/zimmerst85/clumpy, kindly provided and maintained by Stephan Zimmer (University of Innsbruck).

4.3. Files and directories

Files in $CLUMPY/

CmakeLists.txt File used by cmake for compilation
FindROOT.cmake Called by CmakeLists.txt to find path to ROOT installation
README.md README file (for GitLab website)
LICENSE A copy of the GNU General Public License v2 under which CLUMPY is licensed

Directories in $CLUMPY/

data/ Tabulated files (EBL, \(P_{\rm lin}(k)\), CLUMPY files)
doc/ This documentation
Healpix3.31ForClumpy/ Frozen version of Healpix3.31
include/*.h CLUMPY headers
python_helperscripts Auxiliary Python scripts
src/*.cc CLUMPY sources

…and created at compilation time:

bin/ CLUMPY executables
lib/ CLUMPY library

Example data files in $CLUMPY/data

data/list_generic.txt List of generic spherical DM haloes (option -h)
data/list_generic_triaxial.txt List of generic triaxial DM haloes (option -h)
data/stat_example.dat Example of statistical-like file (option -s)
data/list_generic_jeans.txt List of DM haloes for Jeans-related quantities
data/params_jeans.txt User-defined parameters for Jeans analysis
data/data_light.txt Sample of simulated surface brightness data
data/data_sigmap.txt Sample of simulated velocity dispersion data
data/data_vel.txt Sample of simulated line-of-sight velocities

Auxiliary data files in $CLUMPY/data (do not change) [1]

data/EBL/ Tabulated optical depths \(\tau\) (option -e)
data/healpix/ Pixel windows and ring weights for spherical harmonic transformation
data/pk_precomp/ Pre-computed \(P_{\rm lin}(k)\) for cosmology (option -e)
data/PPPC4DMID-spectra/ Marco Cirelli’s particle physics spectra
data/clumpy_tests/ Reference files (for \(\tt clumpy\_tests\))
[1]You may add your own files to data/pk_precomp/, though.

4.4. Troubleshooting

  • For a clean recompilation of CLUMPY, do

    $ cd CLUMPY/Healpix3.31ForClumpy/
    $ make clean
    

    This is in particular necessary if you link CLUMPY against another CFITSIO instance, and if you consequently obtain a warning of mismatching CFITSIO versions at run time.


  • Some problems can occur at the execution of the code with Mac OSX 10.8.5 if using a ROOT version more recent than 5.34.10 (e.g., issues with TF3 with option -g7) Please use ROOT 5.34.10 or try to update your OS.

  • If you experience the error

    ../lib/libCLPY.so: undefined reference to `curl_global_init'
    ../lib/libCLPY.so: undefined reference to `curl_easy_cleanup'
    ../lib/libCLPY.so: undefined reference to `curl_global_cleanup'
    
    ...
    

    this might be due to the fact that you use a manual installation of CFITSIO version > 3.42 and do not have libcurl installed on your system. Either (i) use a CFITSIO version <= 3.42 (see here), (ii) install the libcurl library (see here) or (iii) install CFITSIO via a package manager, which we recommend and which takes care of all dependencies.