def test_class_setup(): cosmology = astropy.cosmology.Planck13 assert cosmology.Om0 == cosmology.Odm0 + cosmology.Ob0 assert 1 == (cosmology.Om0 + cosmology.Ode0 + cosmology.Ok0 + cosmology.Ogamma0 + cosmology.Onu0) class_parameters = get_class_parameters(cosmology) try: from classy import Class cosmo = Class() cosmo.set(class_parameters) cosmo.compute() assert cosmo.h() == cosmology.h assert cosmo.T_cmb() == cosmology.Tcmb0.value assert cosmo.Omega_b() == cosmology.Ob0 # Calculate Omega(CDM)_0 two ways: assert abs((cosmo.Omega_m() - cosmo.Omega_b()) - (cosmology.Odm0 - cosmology.Onu0)) < 1e-8 assert abs(cosmo.Omega_m() - (cosmology.Om0 - cosmology.Onu0)) < 1e-8 # CLASS calculates Omega_Lambda itself so this is a non-trivial test. calculated_Ode0 = cosmo.get_current_derived_parameters( ['Omega_Lambda'])['Omega_Lambda'] assert abs(calculated_Ode0 - (cosmology.Ode0 + cosmology.Onu0)) < 1e-5 cosmo.struct_cleanup() cosmo.empty() except ImportError: pass
M = Class() M.set(common_settings) M.set({'z_pk': z_rec}) M.compute() # # load transfer functions at recombination # one_time = M.get_transfer(z_rec) print one_time.viewkeys() k = one_time['k (h/Mpc)'] Theta0 = 0.25 * one_time['d_g'] phi = one_time['phi'] psi = one_time['psi'] theta_b = one_time['t_b'] # compute related quantitites R = 3. / 4. * M.Omega_b() / M.Omega_g() / ( 1 + z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec zero_point = -(1. + R) * psi # zero point of oscillations: -(1.+R)*psi # # get Theta0 oscillation amplitude (for vertical scale of plot) # Theta0_amp = max(Theta0.max(), -Theta0.min()) # # use table of background quantitites to find the wavenumbers corresponding to # Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs) # background = M.get_background() # load background table #print background.viewkeys() # background_tau = background[ 'conf. time [Mpc]'] # read confromal times in background table
# all_k = M.get_perturbations( ) # this potentially constains scalars/tensors and all k values print all_k['scalar'][0].viewkeys() # one_k = all_k['scalar'][ 0] # this contains only the scalar perturbations for the requested k values # tau = one_k['tau [Mpc]'] Theta0 = 0.25 * one_k['delta_g'] phi = one_k['phi'] psi = one_k['psi'] theta_b = one_k['theta_b'] a = one_k['a'] # compute related quantitites R = 3. / 4. * M.Omega_b() / M.Omega_g() * a # R = 3/4 * (rho_b/rho_gamma) zero_point = -(1. + R) * psi # zero point of oscillations: -(1.+R)*psi # # get Theta0 oscillation amplitude (for vertical scale of plot) # Theta0_amp = max(Theta0.max(), -Theta0.min()) # # get the time of decoupling # quantities = M.get_current_derived_parameters(['tau_rec']) # print times.viewkeys() tau_rec = quantities['tau_rec'] # # use table of background quantitites to find the time of # Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi) #
# save the total Cl's (we will plot them in the last step) # cl_tot = M.raw_cl(5000) # # # load transfer functions at recombination # one_time = M.get_transfer(z_rec) print (one_time.keys()) k = one_time['k (h/Mpc)'] Theta0 = 0.25*one_time['d_g'] phi = one_time['phi'] psi = one_time['psi'] theta_b = one_time['t_b'] # compute related quantitites R = 3./4.*M.Omega_b()/M.Omega_g()/(1+z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi Theta0_amp = max(Theta0.max(),-Theta0.min()) # Theta0 oscillation amplitude (for vertical scale of plot) print ('At z_rec: R=',R,', Theta0_amp=',Theta0_amp) # In[ ]: # use table of background quantitites to find the wavenumbers corresponding to # Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs) # background = M.get_background() # load background table print (background.keys()) # background_tau = background['conf. time [Mpc]'] # read confromal times in background table