Forked by Ivan Esteban and Jordi Salvado from the CLASS code by Julien Lesgourgues and Thomas Tram.
This is a fork of CLASS 2.9.2, designed to implement the cosmology of scalar-mediated long range interactions among fermions. For details, see the companion paper.
There are two ipython notebooks in the notebooks/ folder, longrange.ipynb and longrange_checks.ipynb, that you can have a look at to familiarize yourself with this code.
- longrangescalar -- If 'y' or 'Y', include scalar-mediated long range interactions
- longrangescalar_phi_pt -- If 'y' or 'Y', include scalar field perturbations (see caveats below)
- longrangescalar_nuggets -- If 'y' or 'Y', include fermion nugget formation (see caveats below)
- lrs_g_over_M -- Interaction coupling over scalar mass in eV-1
- lrs_M_phi -- Scalar mass in eV. Only relevant if scalar field perturbations are being taken into account
- lrs_m_F -- Fermion mass in eV
- log10_lrs -- If 'y' or 'Y', the input parameters lrs_g_over_M, lrs_M_phi and lrs_m_F are interpreted as the base-10 logarithms of the corresponding physical parameters
- lrs_g_F -- Number of internal degrees of freedom of the fermion
- lrs_T_F -- Fermion temperature over photon temperature, assumed to be constant
The main physical issue is that density perturbations of a system of attractive long-range interacting fermions are unstable. When fermions become non-relativistic, they collapse into non-linear nuggets that a linear code as CLASS cannot properly model. This can be overcome by assuming that nugget formation takes place over timescales and distances much smaller than cosmological scales. In this case, one can enforce an instantaneous transition to a dust-like behaviour below some pre-computed fermion temperature Tnug. This is equivalent to setting
longrangescalar_phi_pt = 'N'
longrangescalar_nuggets = 'y'
It is important to turn off scalar field perturbations, as they may make perturbations exponentially grow if Tnug is not 100% precise. For the details on how we estimate Tnug, see Appendix B in the companion paper.
The code can also be run with scalar field perturbations, in which case non-relativistic fermion density perturbations will exponentially grow. Notice, though, that this growth is stronger at scales much smaller than those computed by CLASS, what in turn affects the background. Such simulations are therefore unphysical.
Apart from that, the implementation largely follows the CLASS 2.9.2 implementation of warm relics (named ncdm in the code). The fermion momentum distribution function is hard-coded to be Fermi-Dirac of an ultrarelativistic relic. This can be easily modified in the function background_lrs_distribution of the file source/longrange.c. Fluid approximations are in principle implemented, but their accuracy has not been tested. Tensor perturbations have not been properly implemented.