Source code for skypy.power_spectrum._classy
import numpy as np
from ._base import TabulatedPowerSpectrum
__all__ = [
'CLASSY',
]
[docs]class CLASSY(TabulatedPowerSpectrum):
"""Return the CLASS computation of the linear matter power spectrum, on a
two dimensional grid of wavenumber and redshift.
"""
[docs] def __init__(self, kmax, redshift, cosmology, **kwargs):
try:
from classy import Class
except ImportError:
raise Exception("classy is required to use skypy.linear.classy")
h2 = cosmology.h * cosmology.h
params = {
'output': 'mPk',
'P_k_max_1/Mpc': kmax,
'z_pk': ', '.join(str(z) for z in np.atleast_1d(redshift)),
'H0': cosmology.H0.value,
'omega_b': cosmology.Ob0 * h2,
'omega_cdm': cosmology.Odm0 * h2,
'T_cmb': cosmology.Tcmb0.value,
'N_eff': cosmology.Neff,
}
params.update(kwargs)
classy_obj = Class()
classy_obj.set(params)
classy_obj.compute()
p, k, z = classy_obj.get_pk_and_k_and_z(nonlinear=False)
z_order = np.argsort(z)
super().__init__(k, z[z_order], p.T[z_order, :])