# List of cosmological computation software

This List of Cosmological Computation Software catalogs the tools and programs used by scientists in cosmological research.
In the past few decades, the accelerating technological evolution has profoundly enhanced astronomical instrumentation, enabling more precise observations and expanding the breadth and depth of data collection by several orders of magnitude. Simultaneously, the exponential growth in computational power has enabled the creation of computer simulations that reveal details with unprecedented resolution and accuracy. For performing computer simulations of the cosmos and analyzing data from both cosmological experiments and simulations, many advanced methods and computational software codes are developed every year. These codes are widely used by researchers all across the globe, in all various fields and topics of cosmology.
The computational software used in cosmology can be classified into the following major classes:
* Cosmological Boltzmann codes: These codes are used for calculating the theoretical power spectrum given the cosmological parameters. These codes are capable of calculating the power spectrum from the standard LCDM model or its derivatives. Some of the most used CMB Boltzmann codes are CMBFAST, CAMB, CMBEASY, CLASS, CMBAns etc.
* Cosmological parameter estimator: The parameter estimation codes are used for calculating the best-fit parameters from the observation data. The ready to use codes available for this purpose are CosmoMC, AnalyzeThis, SCoPE etc.

## Newtonian cosmological simulation codes
### GADGET

GADGET, named "GAlaxies with Dark matter and Gas intEracT" is a code written in C++ for cosmological N-body/Smoothed-particle hydrodynamics (SPH) simulations on massively parallel computers with distributed memory. Its first version was developed by German astrophysicist, Volker Springel and was published in 2000. It was followed by two more official public versions, with GADGET-2 released in 2005 and GADGET-4 released in 2020, which is the most recent public version of the software suite currently. GADGET is capable to address a wide array of astrophysically interesting problems, e.g. the dynamics of the gaseous intergalactic medium, star formation and its regulation by feedback processes, colliding and merging galaxies, as well as the formation of large-scale structure in the Universe.

### AREPO

AREPO is a massively parallel code for gravitational N-body systems, hydrodynamics and magnetohydrodynamics (MHD). It is named after the enigmatic word AREPO in the Latin palindromic sentence "sator arepo tenet opera rotas", the Sator Square. The first version of AREPO was written and published by Volker Springel in 2010, with further development by Rüdiger Pakmor and contributions by many other authors. The Arepo code utilizes an unstructured Voronoi-mesh and was designed to blend the benefits of finite-volume hydrodynamics and SPH. Primarily optimized for cosmological simulations, especially galaxy formation, Arepo supports a high dynamic range in space and time.

### GIZMO

GIZMO is a flexible, massively parallel, multi-physics simulation code, written in ANSI C by Philip F. Hopkins. The code offers diverse methods to solve fluid equations. It also introduces novel methods, which optimize the resolution of simulations and minimize common errors found in previous methods that limited the accuracy of prior solvers. Originating from GADGET (hence the name "GIZMO", a play on words), the code maintains compatibility in naming/use conventions as well as input/output, making it user-friendly for those familiar with GADGET.

### StePS

StePS, which stands for "STEreographically Projected cosmological Simulations" is a freely available code that implements a novel N-body simulation method that models an infinite universe within a finite sphere with isotropic boundary conditions to follow the evolution of the large-scale structure. Unlike traditional methods, which use unrealistic periodic boundary conditions for numerical simplicity, StePS offers a more observation-aligned approach. This technique enables detailed simulations of an infinite universe using less memory and provides results that are more in line with the observed universe geometry and topology.

## Relativistic cosmological simulation codes
### CosmoGRaPH

CosmoGRaPH (Cosmological General Relativity And (Perfect fluid | Particle) Hydrodynamics) is a C++ code used to explore cosmological problems in a fully general relativistic setting. It was developed by James Mertens and Chi Tian and was published in 2016. The code implements various novel methods for numerically solving the Einstein field equations, including an N-body solver, full AMR capabilities via SAMRAI, and raytracing.

## Cosmological Boltzmann codes
### CMBFAST

CMBFAST is a computer code, developed by Uroš Seljak and Matias Zaldarriaga (based on a Boltzmann code written by Edmund Bertschinger, Chung-Pei Ma and Paul Bode) for computing the power spectrum of the cosmic microwave background anisotropy. It is the first efficient program to do so, reducing the time taken to compute the anisotropy from several days to a few minutes by using a novel semi-analytic line-of-sight approach.

### CAMB

Code for Anisotropies in the Microwave Background by Antony Lewis and Anthony Challinor. The code was originally based on CMBFAST. Later several developments are made to make it a faster and more accurate and compatible with the present research. The code is written in an object oriented manner to make it more user friendly.

### CMBEASY

CMBEASY is a software package written by Michael Doran, Georg Robbers and Christian M. Müller. The code is based on the CMBFAST package. CMBEASY is fully object oriented C++. This considerably simplifies manipulations and extensions of the CMBFAST code. In addition, a powerful Spline class can be used to easily store and visualize data. Many features of the CMBEASY package are also accessible via a graphical user interface. This may be helpful for gaining intuition, as well as for instruction purposes.

### CLASS

The purpose of the Cosmic Linear Anisotropy Solving System is to simulate the evolution of linear perturbations in the universe and to compute CMB and large scale structure observables. CLASS is written in plain C to achieve high performance, yet its modular structure emulates the architecture and philosophy of classes in object-oriented languages for enhanced readability and modularity. The name "CLASS" also derives from its object-oriented style, mimicking the notion of a class.

## Parameter estimation packages
### AnalizeThis

AnalizeThis is a parameter estimation package used by cosmologists. It comes with the CMBEASY package. The code is written in C++ and uses the global metropolis algorithm for estimation of cosmological parameters. The code was developed by Michael Doran, for parameter estimation using WMAP-5 likelihood. However, the code was not updated after 2008 for the new CMB experiments. Hence this package is currently not in use by the CMB research community. The package comes up with a nice GUI.

### CosmoMC

CosmoMC is a Fortran 2003 Markov chain Monte Carlo (MCMC) engine for exploring cosmological parameter space. The code does brute force (but accurate) theoretical matter power spectrum and Cl calculations using CAMB. CosmoMC uses a simple local Metropolis algorithm along with an optimized fast-slow sampling method. This fast-slow sampling method provides faster convergence for the cases with many nuisance parameters like Planck. CosmoMC package also provides subroutines for post processing and plotting of the data.
CosmoMC was written by Antony Lewis in 2002 and later several versions are developed to keep the code up-to date with different cosmological experiments. It is presently the most used cosmological parameter estimation code.

### SCoPE

SCoPE/Slick Cosmological Parameter Estimator is a newly developed cosmological MCMC package written by Santanu Das in C language. Apart from standard global metropolis algorithm the code uses three unique technique named as 'delayed rejection' that increases the acceptance rate of a chain, 'pre-fetching' that helps an individual chain to run on parallel CPUs and 'inter-chain covariance update' that prevents clustering of the chains allowing faster and better mixing of the chains. The code is capable of faster computation of cosmological parameters from WMAP and Planck data.

## Other packages

* MADCAP — Microwave Anisotropy Data Computational Analysis Package developed by Borrill et al.
* SIToolBox — SI Toolbox is a package for estimating the isotropy violation in the CMB sky. It is developed by Das et al. and it consists of several Fortran subroutines and stand-alone facilities, that can be used to estimate the BipoSH coefficients from non statistically isotropic (nSI) skymaps.
* RECFAST — Software was developed by Seager, Sasselov, and Scott and used to calculate the recombination history of the universe. The package is used by cosmological boltzmann codes (CMBFast, CAMB etc.)
* TOAST — Time Ordered Astrophysics Scalable Tools, developed and designed by Theodore Kisner, Reijo Keskitalo, Jullian Borrill et al. It "generalizing the problem of CMB map-making to the reduction of any pointed time-domain data, and ensuring that the analysis of exponentially growing datasets scales to the largest HPC systems available".
* Commander - Commander is an Optimal Monte-carlo Markov chAiN Driven EstimatoR which implements fast and efficient end-to-end CMB posterior exploration through Gibbs sampling. It was developed by Hans Kristian Eriksen et al.

### Likelihood software packages

Different cosmology experiments, in particular the CMB experiments like WMAP and Planck measures the temperature fluctuations in the CMB sky and then measure the CMB power spectrum from the observed skymap. But for parameter estimation the χ² is required. Therefore, all these CMB experiments come up with their own likelihood software.
* WMAP Likelihood Package
* Planck Likelihood Software