COLOSSUS: A python toolkit for cosmology, large-scale structure, and dark matter halos

Dec 12, 2017
13 pages
Published in:
  • Astrophys.J.Suppl. 239 (2018) 2, 35
  • Published: Dec 18, 2018
e-Print:
DOI:

Citations per year

20172019202120232025020406080
Abstract: (IOP)
This paper introduces Colossus, a public, open-source python package for calculations related to cosmology, the large-scale structure (LSS) of matter in the universe, and the properties of dark matter halos. The code is designed to be fast and easy to use, with a coherent, well-documented user interface. The cosmology module implements Friedman–Lemaitre–Robertson–Walker cosmologies including curvature, relativistic species, and different dark energy equations of state, and provides fast computations of the linear matter power spectrum, variance, and correlation function. The LSS module is concerned with the properties of peaks in Gaussian random fields and halos in a statistical sense, including their peak height, peak curvature, halo bias, and mass function. The halo module deals with spherical overdensity radii and masses, density profiles, concentration, and the splashback radius. To facilitate the rapid exploration of these quantities, Colossus implements more than 40 different fitting functions from the literature. I discuss the core routines in detail, with particular emphasis on their accuracy. Colossus is available at bitbucket.org/bdiemer/colossus.
Note:
  • cosmology: theory
  • methods: numerical
  • [1]
    Intuitive usage: the interface should be as clear and simple as possible, allowing the user to evaluate complex quantities in one or a few lines of code. For this purpose, numerous fitting functions have been implemented
    • [2]
      Performance: computationally intensive routines are, wherever possible, approximated using smart interpolation tables that rely on as few data points as possible given a desired accuracy. These tables are stored on disk between executions
      • [3]
        Stand-alone: Colossus has no dependencies except for the standard numpy and scipy packages
        • [4]
          Pure python: Colossus does not contain any non-python code or any code that needs to be compiled, and can thus be installed by simply cloning the repository or with an installer such as pip
          • [5]
            Numpy compatibility: virtually all Colossus functions accept both numbers and numpy arrays as input, and return results in the corresponding dimensions
            • [6]
              Large range of validity: Colossus tries to cover as wide a range of input parameters as possible. For example, the cosmology module works between redshifts of -0.995 and 200
              • [7]
                Consistent units: Colossus follows a coherent set of physical units that are used for the input to and output from all functions
                • [8]
                  Reproducibility: Colossus contains a suite of about 90 unit tests that ensure that the code functions as expected on the user's machine and python distribution
                  • [1]
                    the linear and logarithmic derivatives of density, d\rho /{dr} and d\mathrm{ln}(\rho )/d\mathrm{ln}(r)
                    • [2]
                      the enclosed mass, M(\lt r)
                      • [3]

                        differential surface density

                        • [3]
                          \end{eqnarray} \tag{ 37 }
                          • [4]
                            the circular velocity, {v}_{{\rm{c}}}(r)=\sqrt{{GM}(\lt r)/r}, and the maximum circular velocity, {v}_{\max }
                            • [4]
                              and
                              • [5]
                                SO radius and mass for a given overdensity definition and redshift
                                • [1]
                                  The three-parameter profile of Einasto (, 1965: #apjsaaee8cbib38) is described by a logarithmic slope that changes progressively with radius,\begin{eqnarray}&&{\rho }_{\mathrm{Einasto}}(r)={\rho }_{{\rm{s}}}\exp \left(-\displaystyle \frac{2}{\alpha }\left[{\left(\displaystyle \frac{r}{{r}_{{\rm{s}}}}\right)}^{\alpha }-1\right]\right).\end{eqnarray} \tag{ 38 } The user can either choose the shape parameter α or let it be determined by the fitting function of
                                  • Gao
                                • [2]
                                  The two-parameter Hernquist (,: #apjsaaee8cbib51) profile is given by the expression\begin{eqnarray}&&{\rho }_{\mathrm{Hernquist}}(r)=\displaystyle \frac{{\rho }_{{\rm{s}}}}{\left(\tfrac{r}{{r}_{{\rm{s}}}}\right){\left(1+\tfrac{r}{{r}_{{\rm{s}}}}\right)}^{3}}.\end{eqnarray} \tag{ 40 } This profile approaches power laws of slope -1 and -4 at small and large radii, respectively, turning over around the scale radius {r}_{{\rm{s}}}
                                • [3]
                                  The NFW profile
                                  • Navarro
                                • [4]
                                  In order to account for the steepening at the splashback radius (Section, 4.4: #apjsaaee8cs4-4), Diemer & Kravtsov (,: #apjsaaee8cbib30,, DK14: #apjsaaee8cbib30) combined the Einasto profile at small radii with a steepening function in the outer profile,\begin{eqnarray}&&{\rho }_{\mathrm{DK}14}(r)={\rho }_{\mathrm{Einasto}}\times {\left[1+{\left(\displaystyle \frac{r}{{r}_{{\rm{t}}}}\right)}^{\beta }\right]}^{-\tfrac{\gamma }{\beta }},\end{eqnarray} \tag{ 42 } where β determines how rapidly this steepening happens and γ represents the limiting slope of the steepening term. Diemer & Kravtsov (,: #apjsaaee8cbib30) recommend (\beta,\gamma )=(4,8) or (6,4), depending on how the halo sample was selected (the profile shown in Figure, 4: #apjsaaee8cf4 uses (4,8)). The turnover radius {r}_{{\rm{t}}} depends on the location of the splashback radius and thus on the mass accretion rate. The, DK14: #apjsaaee8cbib30 profile makes sense only when combined with a prescription for the outer profile as described below
                                • [1]
                                  The mean density of the universe, \rho ={\rho }_{{\rm{m}}}(z). This term should always be included if the profile is evaluated at large radii
                                  • [2]
                                    An estimate of the 2-halo term based on the linear matter-matter correlation function,\begin{eqnarray}&&{\rho }_{2{\rm{h}}}(r,z)={\rho }_{{\rm{m}}}(z)\xi (r,z)b(\nu ),\end{eqnarray} \tag{ 43 } where the bias b(\nu ) can be estimated based on a model of halo bias (Section, 3.3: #apjsaaee8cs3-3). The 2-halo term shown in the right panels of Figure, 4: #apjsaaee8cf4 corresponds to b = 6.1, appropriate for a very massive halo
                                    • [3]
                                      A power-law outer profile (e.g., Diemer & Kravtsov,: #apjsaaee8cbib30) that can be used to approximate the profile of infalling matter (Bertschinger, 1985: #apjsaaee8cbib5) or mimic a 2-halo term. Mathematically the power-law outer term is described as\begin{eqnarray}&&{\rho }_{\mathrm{PL}}(r,z)={\rho }_{{\rm{m}}}(z)\displaystyle \frac{a}{\tfrac{1}{{\rho }_{\max }}+{\left(\tfrac{r}{{r}_{\mathrm{pivot}}}\right)}^{b}},\end{eqnarray} \tag{ 44 } where a is a normalization, b is the slope, and {r}_{\mathrm{pivot}} is an arbitrary pivot radius that can be set to either a fixed radius or an SO radius. The limiting density {\rho }_{\max } is introduced to avoid spurious contributions at small radii. The power-law outer profile shown in Figure, 4: #apjsaaee8cf4 has a = 1 and b = 1.5 (Diemer & Kravtsov,: #apjsaaee8cbib30)