Skip to content
This is a modified version of the L-PICOLA code extending the COLA approach for simulating cosmological structure formation to theories that exhibit scale-dependent growth. It can compute matter power-spectra (CDM and total), redshift-space multipole power-spectra P0,P2,P4 and do halofinding on the fly. It can also include the effects of massive…
C C++ Shell Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


MG-PICOLA v0.9, May 2017 Author: Hans A. Winther

The code extends the COLA (COmoving Lagrangian Acceleration) method for simulating cosmological structure formation from LCDM to theories that exhibit scale-dependent growth at the level of 2LPT. The code includes the fast approximate screening method of Winther & Ferreira (2014). For the scientific paper explaining the approach see Winther, Koyama, Manera, Wright and Zhao (2017).

This code is based on the L-PICOLA code written by Cullan Howlett & Marc Manera. For a documentation of L-PICOLA see L-PICOLA/Documentation

  • See the doc/note.pdf for some (preliminary) documentation. This code is under development and features are currently being added. A stable validated version will come soon.

  • Requires the FFTW3 library (needs to be compiled with --enable-float to use the SINGLE_PRECISION option).

  • Requires GSL (GNU Scientific Library)

  • Compile the code as make Makefile MODEL=FOFR (DGP, BRANSDICKE, MBETA, etc.) and run as mpirun -np 1 MG_PICOLA_MODEL paramfile.txt. See paramfiles for some example parameter-files and the documentation for more information.

  • To implement a new model see src_v3/user_defined_functions.h. The code have LCDM, LCDM with (wa,w0) parametrization, Jordan-Brans-Dicke, f(R), nDGP and general (m(a), beta(a)) models included so far + massive neutrinos.

  • If the parameter input_pofk_is_for_lcdm = 1 then the code assumes the linear P(k) we read in (or from fitting formula) is for LCDM and uses the ratio of growth-factor in MG and LCDM to compute the MG power-spectrum used to set the IC. If also input_sigma8_is_for_lcdm = 1 then the normalization of sigma8 is done for LCDM; thi is useful to make MG and LCDM runs with the same IC.

  • A very simple code to extract power-spectra from output-files (RAMSES / GADGET / ASCII) can be found in SimplePofk (separate version for OpenMP and MPI). Includes a code to estimate redshift space multipoles using the global parallel plane approximation.

  • The code can now also compute the power-spectrum at every time-step by compiling with the option COMPUTE_POFK. This is activated by adding pofk_compute_ever\y_step = 1 to the parameterfile. Other options one must add is : pofk_nbins (number of bins), pofk_bintype (0 linear, 1 logarithmic), pofk_subtract_shotnoise (1 do it, 0 don't), pofk_kmin (h/Mpc), pofk_kmax (h/Mpc). Put all of these to negative values to use fiducial values (nbins = Nmesh, linear, subtract shotnoise, kmin = 2 * pi / Box, kmax = 2 * pi/Box * Nmesh).

  • The code can now also compute RSD power-spectrum multipoles (P0, P2 and P4). Add the extra parameter pofk_compute_rsd_pofk = 1 or 2 to the the options above. See the documentation for more information. Not properly tested yet!

  • The code has been linked to MatchMaker which allows us to do halo-finding on the fly. See the documentation for how to use it. Not properly tested yet!

  • The scale-dependent version needs the define SCALEDEPENDENT. This version requires several Fourier transforms per time-step which makes the code ~3-4 times slower.

  • The lightcone version of the code have not been tested, but should work fine for the scale-independent version of the code (i.e. using LCDM growth-factors).

  • Added memory monitoring (using wrappers around malloc and free).

  • Added support for amplitude fixed (|delta(k)|^2 == P(k)) and inverted (delta -> -delta) initial conditions (see Pontzen et al. 2016). This can dramatically reduce the sample variance in P(k) (and other observables) by running pairs of simulation (normal and inverted) and adding the resulting P(k). See e.g. 1806.01871 which shows that this procedure is bias free.

MG-PICOLA is distributed under the GNU Public License v3 (see COPYING for details).

You can’t perform that action at this time.