Fork 0
mirror of https://github.com/cosmo-sims/monofonIC.git synced 2024-07-24 01:12:38 +02:00
High order LPT/PPT cosmological IC generator for single resolution cosmological simulations
Go to file
Oliver Hahn eb5667c6cf
Merge pull request #5 from cosmo-sims/output-filenames
name output files after config and write output log
2024-07-18 08:51:29 +02:00
.github/workflows Update cmake-multi-platform.yml 2024-07-09 16:05:13 +02:00
external update genericio repository URL 2024-03-12 16:20:07 -05:00
include name output files after config and write output log 2024-07-17 17:52:24 +02:00
src name output files after config and write output log 2024-07-17 17:52:24 +02:00
testing/RAMSES updated RAMSES example files 2020-08-22 17:59:25 +02:00
.gitignore updated gitignore 2020-05-02 15:28:29 +02:00
.gitmodules include class with cmake fetch (rm submodule) 2020-08-27 11:09:21 -05:00
bitbucket-pipelines.yml bitbucket-pipelines.yml edited online with Bitbucket 2021-11-28 12:23:55 +00:00
CITATION.bib Create CITATION.bib 2024-07-09 21:41:11 +02:00
CMakeLists.txt added additional linker options for newer versions of MacOS to re-enable C++ exceptions and prevent possible linker problems 2024-03-19 17:38:46 +01:00
CONTRIBUTING.md CONTRIBUTING.md edited online with Bitbucket 2020-08-21 14:41:28 +00:00
Doxyfile.in improved code documentation, added doxygen target 2023-06-08 03:36:24 +02:00
example.conf Added fNL and gNL part 2024-04-15 11:34:09 +02:00
FindFFTW3.cmake add genericio output plugin, fix memory leak in fftw plans, modernize CMakeLists 2020-08-21 11:47:53 -05:00
LICENSE Add LICENSE 2020-08-16 11:39:48 +02:00
README.md Update README.md 2024-07-09 21:42:46 +02:00
version.cmake add git descr instead of tag in versioning output 2020-08-23 23:32:12 +02:00

CMake on multiple platforms

MUSIC2 - monofonIC

Modular high-precision IC generator for cosmological simulations. MUSIC2-monofonIC is for non-zoom full box ICs (use MUSIC for zooms, MUSIC2 for zooms is in the works).

Note that this program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.

BEWARE: This software package is currently in a beta testing phase! Proceed with caution before using it for large-scale simulations.

The full manual is available here as a wiki. Quick instructions can be found below.

Currently supported features (the list is growing, so check back):

  • Support for up to 3rd order Lagrangian perturbation theory (i.e. 1,2, and 3LPT)

  • Support for PPT (Semiclassical PT for Eulerian grids) up to 2nd order

  • Support for mixed CDM+baryon sims

  • Multiple Einstein-Boltzmann modules: direct interface with CLASS, file input from CAMB, and fitting formulae (Eisenstein&Hu).

  • Multiple output modules for RAMSES, Arepo, Gadget-2/3, SWIFT, and HACC via plugins.

  • Multiple random number modules (MUSIC1,NGenIC,Panphasia,...) (A new MUSIC2 module is in development)

  • Multiple pre-IC modules (various Bravais lattices, glass)

  • Hybrid parallelization with MPI+OpenMP/threads.

  • Requires FFTW v3, GSL (and HDF5 for output for some codes), as well as a CMake build system and a reasonably new C++14 compliant compiler.

New modules/plugins can be easily added (see how to contribute in CONTRIBUTING.md file)


  • HACC file format plugin: Michael Buehlmann
  • primordial non-Gaussianity support: Thomas Montandon, Adrian Gutierrez
  • PANPHASIA2 module: Adrian Jenkins

Contributing and Licensing

See file CONTRIBUTING.md on how to contribute to the development.

The software is licensed under GPL v3 (see file LICENSE).

Please note the separate licensing for Panphasia (see external/panphasia/LICENSE).

Citing in scientific publications or presentations

If you use MUSIC2-monofonIC in your scientific work, you are required to acknowledge this by linking to this repository and citing the relevant papers:

  • For total matter sims, or 3LPT/PLT related aspects: Michaux et al. 2020 arXiv:2008.09588

  • For baryon+CDM sims, or PPT numerics related aspects: Hahn et al. 2020 arXiv:2008.09124

You can find the respective BibTeX entries in the enclosed CITATION.bib file.


We acknowledge support from the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation programmes during the development of this software (Grant agreement No. 679145).

Build Instructions

Clone code including submodules (currently only CLASS is used as a submodule):

  git clone https://<username>@bitbucket.org/ohahn/monofonic.git

Create build directory, configure, and build:

  mkdir monofonic/build; cd monofonic/build
  ccmake ..

this should create an executable in the build directory.

If you run into problems with CMake not being able to find your local FFTW3 or HDF5 installation, it is best to give the path directly as

  FFTW3_ROOT=<path> HDF5_ROOT=<path> ccmake ..

make sure to delete previous files generated by CMake before reconfiguring like this.

If you want to build on macOS, then it is strongly recommended to use GNU (or Intel) compilers instead of Apple's Clang. Install them e.g. via homebrew and then configure cmake to use them instead of the macOS default compiler via

  CC=gcc-9 CXX=g++-9 ccmake ..

This is necessary since Apple's compilers haven't supported OpenMP for years.


There is an example parameter file 'example.conf' in the main directory. Possible options are explained in it, it can be run as a simple argument, e.g. from within the build directory:

  ./monofonIC ../example.conf

If you want to run with MPI, you need to enable MPI support via ccmake. Then you can launch in hybrid MPI+threads mode by specifying the desired number of threads per task in the config file, and the number of tasks to be launched via

  mpirun -np 16 ./monofonIC <path to config file>

It will then run with 16 tasks times the number of threads per task specified in the config file.