mirror of
https://github.com/cosmo-sims/monofonIC.git
synced 2024-09-20 18:13:44 +02:00
106 lines
No EOL
4 KiB
Markdown
106 lines
No EOL
4 KiB
Markdown
# MUSIC2 - monofonIC
|
|
Modular high-precision IC generator for cosmological simulations. MUSIC2-monofonIC is for non-zoom full box ICs (use [MUSIC](https://bitbucket.org/ohahn/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](https://bitbucket.org/ohahn/monofonic/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](https://lesgourg.github.io/class_public/class.html), file input from CAMB, and fitting formulae (Eisenstein&Hu).
|
|
|
|
- Multiple output modules for RAMSES, Arepo, Gadget-2/3, and HACC (courtesy M.Buehlmann) via plugins (Swift and Nyx are next).
|
|
|
|
- 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)
|
|
|
|
|
|
## 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:TBD)
|
|
|
|
- For baryon+CDM sims, or PPT numerics related aspects: Hahn et al. 2020 (arXiv:TBD)
|
|
|
|
|
|
## Acknowledgments
|
|
|
|
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 --recurse-submodules https://<username>@bitbucket.org/ohahn/monofonic.git
|
|
```
|
|
|
|
Create build directory, configure, and build:
|
|
|
|
```
|
|
mkdir monofonic/build; cd monofonic/build
|
|
ccmake ..
|
|
make
|
|
```
|
|
|
|
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.
|
|
|
|
## Running
|
|
|
|
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. |