Skip to content

Background

Marc Paterno edited this page Jun 27, 2019 · 5 revisions

The physics context

The integration task that prompted this project appears in the context of an analysis being performed by some of the members of the Dark Energy Survey (DES). This analysis is looking to obtain constraints on the values of several parameters of a cosmological model by analyzing the distribution of clusters of galaxies observed by DES.

The analysis technique employed is Bayesian parameter estimation, and the calculational tool used for the analysis is CosmoSIS. CosmoSIS is modular software for Markov Chain Monte Carlo (MCMC) parameter estimation.

For the clusters analysis in question, we are writing a CosmoSIS module that calculates the predicted number and mass densities of galaxy clusters expected to be observed by DES, and some related quantities. The calculation of these predictions requires the calculation of some integrals that are computationally expensive. For each sample, there are many calculated quantities, each corresponding to one of the integrals described below.

The calculational context

CosmoSIS is a modular Python-based MPI program, which can call modules written in any of Python, Fortran, C, and C++. For each MCMC sample generated in a CosmoSIS run, a pipeline of modules are invoked; each module is passed the set of cosmological parameters being sampled, as well as a host of derived quantities, which are accumulated by the calls to each module in the pipeline.

In a typical analysis, hundreds of thousands of MCMC samples (or even millions of samples) might be needed to allow the parameter estimation to have the necessary statistical accuracy.

The cluster analysis calculations

The modules being developed to calculate the galaxy cluster number density, etc., are written in C++. The calculation of the predictions makes use of a variety of quantities calculated from the cosmological parameters (and which therefore vary for each MCMC sample). They are implemented by a moderately complicated set of models, each of which calculates a physically meaningful set of quantities, combined to yield the predicted quantities.

These models consist of a mixture of one- and two-dimensional lookup tables, as well as analytic mathematical functions. The CPU-based version of the code uses mathematical functions provided by the C++ standard library, as well as some functions provided by GSL (for interpolation).

For each MCMC sample produced, the integrand in question is used to calculate multiple integrals.

  • The integration is done over several different volumes (ranges of integration).
  • For each volume, the integral is evaluated on a grid of several hundred values of radius and redshift (two quantities that constant parameters involved in the calculation of the integrals).

The result is that for every sample, about 1500 numerical integrations are required. These 1500 numbers (and associated error estimates, convergence diagnostics, etc.) are the results for a single MCMC sample.

Clone this wiki locally