Source code for skypy.power_spectrum._camb

import numpy as np
from astropy import units
from ._base import TabulatedPowerSpectrum


__all__ = [
    'CAMB',
]


[docs]class CAMB(TabulatedPowerSpectrum): '''CAMB linear matter power spectrum. Compute the linear matter power spectrum on a two dimensional grid of redshift and wavenumber using CAMB. '''
[docs] def __init__(self, kmax, redshift, cosmology, A_s, n_s, **kwargs): try: from camb import CAMBparams, model, get_results except ImportError: raise Exception("camb is required to use skypy.power_spectrum.camb") h2 = cosmology.h * cosmology.h pars = CAMBparams() pars.set_cosmology(H0=cosmology.H0.value, ombh2=cosmology.Ob0 * h2, omch2=cosmology.Odm0 * h2, omk=cosmology.Ok0, TCMB=cosmology.Tcmb0.value, mnu=np.sum(cosmology.m_nu.to_value(units.eV)), standard_neutrino_neff=cosmology.Neff ) pars.InitPower.ns = n_s pars.InitPower.As = A_s pars.NonLinear = model.NonLinear_none k_per_logint, var1, var2, hubble_units, nonlinear = None, None, None, False, False pars.set_matter_power(redshifts=redshift, kmax=kmax, k_per_logint=k_per_logint, silent=True) results = get_results(pars) k, z, p = results.get_linear_matter_power_spectrum(var1, var2, hubble_units, nonlinear=nonlinear) super().__init__(k*cosmology.h, z, p)