Installation on linux local machine

  • Install virtual environment with Python 2.7
$> pip install virtualenv
$> python -m virtualenv venv2.7
$> . venv2.7/bin/activate
  • Install DarkSkySync
$> git clone git@cosmo-gitlab.phys.ethz.ch:cosmo/darkskysync.git
$> cd darkskysync
$> pip install -r requirements.txt
$> pip install -e .
$> make test
  • install pyCosmo
$> git clone git@cosmo-gitlab.phys.ethz.ch:cosmo/PyCosmo.git
$> cd PyCosmo
$> pip install -r requirements.txt
$> pip install -e .
$> make test
  • install Cpod
$> git clone git@cosmo-gitlab.phys.ethz.ch:cosmo/cpod.git
$> cd cpod/cpod
$> pip install -r requirements.txt
$> pip install -e .
$> make test

External dependencies

  • HDF5

Download HDF5 the latest version for MUSIC and the version 1.4.4 for Gadget2.

$> gzip --decompress hdf5-1.x.x.tar.gz
$> tar -xvf hdf5-1.x.x.tar
$> cd hdf5-1.x.x
$> mkdir build
$> cd build

Find out the path to mpicc and use it for configuration

$> which mpicc
/usr/bin/mpicc
$> CC=/usr/bin/mpicc ../configure --enable-parallel --prefix=/usr/local/hdf5/1.x.x
$> make
$> make check

Make check may fail at testing cache-api. Continue to install, depending on the installation directory, you might need to be root or use sudo.

$> make install
  • FFTW

Download fftw3 for MUSIC and fftw2 for Gadget2.

$> tar -xzvf fftw-x.x.x.tar.gz
$> cd fftw-x.x.x
$> mkdir build
$> cd build

If you want to install double and single precision.

$> ../configure --enable-type-prefix --enable-threads --enable-mpi --prefix=/usr/local/fftw/x.x.x
$> make
$> make install
$> make clean
$> ../configure --enable-float --enable-type-prefix --enable-threads --enable-mpi --prefix=/usr/local/fftw/x.x.x
$> make
$> make install
  • GSL
$> sudo apt-get libgsl2

or

$> module load gsl
  • MPI library
$> module load open_mpi
  • Music

Download Music ZIP file and refer installation in user guide from https://www-n.oca.eu/ohahn/MUSIC/. Requirements: hdf5-1.10.1, fftw-3.3.7, mpi, gsl

$> cd <installdir>/ohahn-music-12e7b54e7512

Edit Makefile: modify the path to libraries

$> emacs Makefile
##############################################################################
### compile time configuration options
FFTW3   = yes
MULTITHREADFFTW = yes
SINGLEPRECISION = no
HAVEHDF5        = yes
HAVEBOXLIB  = no
BOXLIB_HOME     = ${HOME}/nyx_tot_sterben/BoxLib
##############################################################################
### compiler and path settings
CC      = mpic++
OPT     = -Wall -Wno-unknown-pragmas -O3 -g -mtune=native
CFLAGS  =
LFLAGS  = -lgsl -lgslcblas
CPATHS  = -I. -I$(HOME)/local/include -I/opt/local/include -I/usr/local/include -I/usr/local/hdf5/1.10.1/include -I/usr/local/fftw/3.3.7/include -I/usr/include/mpich
LPATHS  = -L$(HOME)/local/lib -L/opt/local/lib -L/usr/lib -L/usr/local/hdf5/1.10.1/lib -L/usr/local/lib -L/usr/local/fftw/3.3.7/lib

Then,

$> make
  • Gadget2

Download gadget2 from http://wwwmpa.mpa-garching.mpg.de/gadget/. Requirements: hdf5-1.6.9, fftw-2.1.5, sfftw-dev, gsl

$> cd <installdir>/Gadget2
$> emacs Makefile

Modify options and path to libraries

#--------------------------------------- Basic operation mode of code
OPT   +=  -DPERIODIC
OPT   +=  -DUNEQUALSOFTENINGS
#--------------------------------------- Things that are always recommended
OPT   +=  -DPEANOHILBERT
OPT   +=  -DWALLCLOCK
#--------------------------------------- TreePM Options
OPT   +=  -DPMGRID=128
#--------------------------------------- Single/Double Precision
OPT   +=  -DDOUBLEPRECISION_FFTW
#--------------------------------------- Time integration options
OPT   +=  -DSYNCHRONIZATION
.
.
.
ifeq ($(SYSTYPE),"MPA")
CC       =  mpicc
OPTIMIZE =  -O3 -Wall
GSL_INCL =  -I/usr/include/gsl
GSL_LIBS =  -L/usr/lib/x86_64-linux-gnu  -Wl,"-R /usr/lib/x86_64-linux-gnu"
FFTW_INCL=  -I/usr/local/fftw/2.1.5/include
FFTW_LIBS=  -L/usr/local/fftw/2.1.5/lib
MPICHLIB =  -L/usr/lib/mpich/lib
HDF5INCL =  -I/usr/local/hdf5/1.6.9/include
HDF5LIB  =  -L/usr/local/hdf5/1.6.9/lib -lhdf5 -lz
endif

Then,

$> make