Open patricialarsen opened 4 years ago
Note that this may be a halofit model limitation rather than a CCL issue @beckermr and I are looking into this to confirm
@patricialarsen - It looks like this is an issue that occurs with halofit in general rather than CCL. I'm not sure we have any immediate fix available.
This is what we found too. I am going to close this issue for now.
I'm re-opening this and assigning it to myself. FAST-PT has a resummation method built in (from Ivanov) to do BAO damping at 1loop PT. Exposing this should be straightforward. Generalizing this to damp the halofit BAO is more complicated, but is a good stretch goal.
Note: This issue will require progress on #815
For a more ad-hoc approach, the new HMCode uses a perturbation-theory inspired fitting function (Eq. 14 in https://arxiv.org/pdf/2009.01858.pdf).
@jablazek should this still be open?
@damonge : Good question. I have not exposed the FAST-PT functionality to PTTracers
. However, as @tilmantroester notes, there are now more modern approaches which might be better. Is the HMCode method already available in CCL? If so, maybe that is sufficient?
We can access hmcode via CAMB. It's not ideal, but if we'd rather aim for that than expose the fastpt functionality, we can close this issue and open an HMCode-specific one (or keep both open!)
Keep this open for now. I have a few fast-pt -> CCL housekeeping tasks to do.
Tagging this as a v3 milestone since it's time we updated the old halofit
option with a more modern version like the one implemented in HMCode
.
Removed it from v3 milestones because it will work much better after #1063 .
There appears to be under-damping of the BAO signal in the correlation_3d function for halofit. The attached plot shows the comparison between linear, halofit and cosmic emu results from ccl using the code snippet below. (Note that I didn't explictly set m_nu to zero here, but doing this doesn't substantially change the result)
import pyccl import numpy as np import matplotlib.pyplot as plt
cosmo = pyccl.Cosmology(transfer_function='boltzmann_camb', matter_power_spectrum='linear', Omega_c=0.26067, Omega_b=0.02242/0.67662,h=0.6766, n_s=0.9665, sigma8=0.8102) cosmo2 = pyccl.Cosmology(transfer_function='boltzmann_camb', matter_power_spectrum='halofit', Omega_c=0.26067, Omega_b=0.02242/0.67662,h=0.6766, n_s=0.9665, sigma8=0.8102) cosmo3 = pyccl.Cosmology(transfer_function='boltzmann_camb', matter_power_spectrum='emu', Omega_c=0.26067, Omega_b=0.02242/0.6766**2,h=0.6766, n_s=0.9665, sigma8=0.8102, Neff = 3.04)
r = np.linspace(0.0,200.,1000) corr_lin = pyccl.correlation_3d(cosmo,1.0,r/0.6766) corr_halofit = pyccl.correlation_3d(cosmo2,1.0,r/0.6766) corr_emu = pyccl.correlation_3d(cosmo3,1.0,r/0.6766)
plt.figure() plt.plot(r,corr_lin*r2,label="linear") plt.plot(r,corr_halofit*r*2,'--',label="halofit") plt.plot(r,corr_emur2,'-.',label="emu") plt.legend() plt.xlabel('r Mpc/h') plt.ylabel('r^2 zeta_mm (r) Mpc/h ^2') plt.legend() plt.show()