lesgourg / class_public

Public repository of the Cosmic Linear Anisotropy Solving System (master for the most recent version of the standard code; GW_CLASS to include Cosmic Gravitational Wave Background anisotropies; classnet branch for acceleration with neutral networks; ExoCLASS branch for exotic energy injection; class_matter branch for FFTlog)
220 stars 291 forks source link

Pathological matter power spectrum at high k with ETHOS interacting dark matter. #512

Open jp-barron opened 1 year ago

jp-barron commented 1 year ago

Hello,

I'm looking for some advice on an issue I've been encountering in my version of class (https://github.com/jp-barron/class_adm-3.1.git), which adds an atomic dark matter sector to the content of the universe. In the code, I calculate the thermodynamic evolution of the added atomic dark matter species, including the opacity, then at the end of the thermodynamics module relabel them as idm_dr species, mapping atomic dark matter parameters to ETHOS parameters. The perturbation evolution is computed using the Boltzmann equations built into CLASS for the ETHOS formalism. I'm finding that at very high values of k (~100 Mpc^-1, depending on the aDM parameters), the matter power spectrum computed by CLASS begins to fluctuate wildly instead of continuing to decrease with higher k.

I'm wondering whether it's expected that CLASS might not able to compute the matter power spectrum correctly up to these high values of k, or if it should be able to, where I might expect the source of the error to be. The only difference from ETHOS dark matter as far as the perturbation module knows is that the idm-dr interaction rate is calculated exactly for the aDM model, rather than given by a power law as in ETHOS. Because of recombination in the dark sector, the interaction rate drops exponentially with temperature around the time of recombination, but has a power law dependence on temperature otherwise.

Since this isn't a bug in the default version of CLASS, I'm not looking for a specific bug fix, but I'd welcome any thoughts on whether there might be an easy fix for this or if it's likely to be much more involved. I'd be happy to go into more detail if more information is needed.

Thanks very much!

Here's an example plot of the transfer function - from k ~ 0.1 to 10 Mpc^-1 we have dark acoustic oscillations as expected, but at higher k there's increasingly large fluctuations.

classadm_mpk_highk