About

evolving the universe on high-performance computers

Sky surveys from powerful observatories show that the matter in our universe is not randomly distributed, but that it exibits a structure: a "cosmic web" of filaments and sheets encompassing large void regions. Properties of this cosmic web will differ for different cosmological models, for example when postulating different forms of dark matter and dark energy. Testing different models requires precise predictions for the formation of structure, which may be observed via galaxies, or the diffuse gas that fills the vast volumes between the galaxies, called the intergalactic medium (IGM). Various physical effects, ranging from the nature of dark matter to the radiation from star-forming galaxies and quasars, set the observable properties of the IGM, making the IGM a powerful probe of both fundamental physics and astrophysics. To attain the necessary realism and accuracy in modeling the observations, sophisticated, large-scale simulations of cosmic structure formation are essential, which is the main driver for the development of the Nyx code.

Nyx is an adaptive mesh, massively-parallel, cosmological simulation code that solves equations of compressible hydrodynamics flow describing the evolution of baryonic gas coupled with an N-body treatment of the dark matter in an expending universe. Nyx's hydrodynamics is based on formulation in Eulerian coordinates. The code uses a dimensionally-unsplit 2nd order PPM approach to construct the fluxes through the interfaces of each cell. The Poisson equation for self-gravity of the gas and dark matter is solved using geometric multigrid method. The approach to AMR in Nyx uses a nested hierarchy of logically-rectangular grids with simultaneous refinement of the grids in both space and time. The integration algorithm on the grid hierarchy is a recursive procedure in which coarse grids are advanced in time, fine grids are advanced multiple steps to reach the same time as the coarse grids and the data at different levels are then synchronized. A separate synchronization is done for gravity.

Getting Started

a detailed walkthrough of running your first Nyx problem is provided in the User's Guide

Development

Nyx is BSD-licensed and hosted on github; contributions are welcomed

Nyx uses a hybrid programming model based on MPI and OpenMP with kernel offloading in Cuda. The code is written in a mix of C++ and Fortran. The main driver, memory management, and parallelization are implemented in C++ (using the AMReX framework) and the physics kernels are written in Fortran or C++. If you want to contribute to Nyx, clone the Nyx git repo, make your changes on development branch and then issue a pull-request.

Many people contributed to Nyx development, including:

Publications

if you find Nyx useful for your research, please cite the original code paper
papers citing the Nyx "code" paper: [NASA ADS], [Google Scholar]

Nyx has been instrumental for many scientific works and results; a list of publications referencing the Nyx code paper provide insights about its usage. For more details on research we are doing with Nyx you can also take a look at our science page. Papers which contain algorithmic and physical description of code's components are:

Ann S. Almgren, John B. Bell, Mike J. Lijewski, Zarija Lukic, Ethan Van Andel, "Nyx: A Massively Parallel AMR Code for Computational Cosmology" Astrophysical Journal, 765, 39, (2013) [pdf]
Zarija Lukic, Casey Stark, Peter Nugent, Martin White, Avery Meiksin, Ann Almgren, "The Lyman alpha forest in optically-thin hydrodynamical simulations," Monthly Notices of the Royal Astronomical Society, 446, 3697-3724, (2015) [pdf]
Jose Onorbe, Frederick B. Davies, Zarija Lukic, Joseph F. Hennawi, Daniele Sorini "Inhomogeneous reionization models in cosmological hydrodynamical simulations," Monthly Notices of the Royal Astronomical Society, 486, 4075-4097, (2019) [pdf]