Ejemplo n.º 1
0
def do_all(z_arr, k_arr, cpar, prefix, wig):
    pcs = csm.PcsPar()
    pcs.background_set(cpar['om'], cpar['ol'], cpar['ob'], cpar['w0'],
                       cpar['wa'], cpar['hh'], TCMB)
    if wig:
        typ = 'EH'
    else:
        typ = 'EH_smooth'
    pcs.set_linear_pk(typ, -3, LKMAX, 0.01, cpar['ns'], cpar['s8'])

    gf0 = pcs.growth_factor(1)
    a_arr = 1. / (z_arr + 1)
    gf_arr = np.array([pcs.growth_factor(a) for a in a_arr])
    pk_arr = np.array([[pcs.Pk_linear_0(k) * (gf / gf0)**2 for k in k_arr]
                       for gf in gf_arr])

    if PLOT_STUFF == 1:
        for i in np.arange(len(pk_arr)):
            plt.plot(k_arr, pk_arr[i], label='$z=%.2lf$' % (z_arr[i]))
        plt.xlabel('$k\\,[h\\,{\\rm Mpc}^{-1}]$', fontsize=FS)
        plt.ylabel('$P(k)\\,[{\\rm Mpc}\\,h^{-1}]^3$', fontsize=FS)
        plt.gca().set_xscale('log')
        plt.gca().set_yscale('log')
        plt.legend(loc='lower left')
        plt.show()

    if WRITE_STUFF == 1:
        header_pk = "[0] k (Mpc/h)^-1"
        for i in np.arange(len(z_arr)):
            header_pk += ", [%d]" % (i + 2) + " P(k,z=%.1lf) (Mpc/h)^3" % (
                z_arr[i])
        np.savetxt(prefix + "_pk_eh.txt",
                   np.transpose(np.vstack((k_arr, pk_arr))),
                   header=header_pk)
Ejemplo n.º 2
0
def get_pz(om, ol, ob, hh, get_nm=False):
    """Average electron pressure in the relevant redshift range
    for a set of cosmological parameters"""
    pcs = csm.PcsPar()
    pcs.unset_gsl_eh()
    pcs.background_set(om, ol, ob, -1., 0., hh, 2.7255)
    g_ratio = pcs.growth_factor(
        1.) / dgrowth0  #Growth ratio with respect to background universe
    pcs.set_linear_pk('EH', -5., 3., 0.01, NS, S8 * g_ratio)
    pcs.set_mf_params(LMMIN, LMMAX, DLM)
    cospar = {'OM': om, 'OB': ob, 'h': hh, 'pcs': pcs}

    marr = np.logspace(LMMIN, LMMAX, NLM)
    zarr = np.array([Z_EFF])
    pzarr = np.zeros_like(zarr)
    for iz, z in enumerate(zarr):
        zeff = get_zeff(om, ol, 1 - om - ol, hh,
                        z)  #Equivalent redshift in the effective Universe
        nmarr = np.zeros_like(marr)
        for im, m in enumerate(marr):
            bp = get_battaglia(m, zeff, cospar)
            pmean = integrated_profile(bp)
            nmarr[im] = pmean * pcs.mass_function_logarithmic(
                m, zeff, 'Tinker10_200')
        nmf = interp1d(np.log10(marr), nmarr, bounds_error=False, fill_value=0)
        pzarr[iz] = itg.quad(nmf, 7.5, LMMAX + 0.5)[0]
    if get_nm:
        return marr, nmarr, np.mean(pzarr)
    else:
        return np.mean(pzarr)
Ejemplo n.º 3
0
def do_all(z_arr,cpar,prefix) :
    pcs=csm.PcsPar()
    pcs.background_set(cpar['om'],cpar['ol'],cpar['ob'],cpar['w0'],cpar['wa'],cpar['hh'],TCMB)

    a_arr=1./(z_arr+1)
    chi_arr=np.array([pcs.radial_comoving_distance(a) for a in a_arr])

    if PLOT_STUFF==1 :
        plt.plot(z_arr,chi_arr); plt.xlabel('$z$',fontsize=FS); plt.ylabel('$\\chi(z)\\,[{\\rm Mpc}\\,h^{-1}]$',fontsize=FS); plt.show()

    if WRITE_STUFF==1 :
        np.savetxt(prefix+"_chi.txt",np.transpose([z_arr,chi_arr]),header="[1] z, [2] chi(z) (Mpc/h)")
Ejemplo n.º 4
0
def get_s8(cp):
    cospar = cp.copy()
    pcs = csm.PcsPar()
    if DEBUG:
        pcs.set_verbosity(1)
    else:
        pcs.set_verbosity(0)
    om = (cospar['och2'] + cospar['obh2'] +
          cospar['mnu'] * 0.001 / 93.14) / cospar['hh']**2
    ob = cospar['obh2'] / cospar['hh']**2
    pcs.background_set(om, 1 - om, ob, cospar['w0'], cospar['wa'],
                       cospar['hh'], TCMB)
    write_class_param_file(cospar, np.array([0]))
    pcs.set_linear_pk(PREFIX_SAVE + "pk.dat", -4., 3., 0.01, cospar['ns'], -1)

    return np.sqrt(pcs.sig0_L(8, 8, 'TopHat', 'TopHat'))
Ejemplo n.º 5
0
def get_mfunc(cospar, z_min, z_max, nz, lm_min, lm_max, nm, fsky):
    z_arr = z_min + (z_max - z_min) * (np.arange(nz) + 0.5) / nz
    z0_arr = z_min + (z_max - z_min) * (np.arange(nz) + 0.0) / nz
    zf_arr = z_min + (z_max - z_min) * (np.arange(nz) + 1.0) / nz

    pcs = csm.PcsPar()
    if DEBUG:
        pcs.set_verbosity(1)
    else:
        pcs.set_verbosity(0)
    om = (cospar['och2'] + cospar['obh2'] +
          cospar['mnu'] * 0.001 / 93.14) / cospar['hh']**2
    ob = cospar['obh2'] / cospar['hh']**2
    pcs.background_set(om, 1 - om, ob, cospar['w0'], cospar['wa'],
                       cospar['hh'], TCMB)
    write_class_param_file(cospar, z_arr)

    m_arr = 10.**(lm_min + (lm_max - lm_min) * (np.arange(nm) + 0.5) / nm)
    r_arr = np.array([pcs.M2R(m) for m in m_arr])
    m2_arr = 10.**(lm_min + (lm_max - lm_min) * (np.arange(nm + 1) + 0.0) / nm)
    lmarr = np.log10(m2_arr)
    r2_arr = np.array([pcs.M2R(m) for m in m2_arr])

    nm_arr = np.zeros([nz, nm])
    for iz in np.arange(nz):
        z = z_arr[iz]
        z0 = z0_arr[iz]
        zf = zf_arr[iz]
        r0 = pcs.radial_comoving_distance(1. / (1 + z0))
        rf = pcs.radial_comoving_distance(1. / (1 + zf))
        pcs.set_linear_pk(PREFIX_SAVE + "z%d_pk.dat" % (iz + 1), -4., 3., 0.01,
                          cospar['ns'], -1)
        volz = 4 * np.pi * fsky * (rf**3 - r0**3) / (
            3 * (zf - z0)
        )  #pcs.radial_comoving_distance(1./(1+z))**2/pcs.hubble(1./(1+z))
        sigM_arr = np.sqrt(
            np.array([pcs.sig0_L(r, r, 'TopHat', 'TopHat') for r in r_arr]))
        sig2_arr = np.sqrt(
            np.array([pcs.sig0_L(r, r, 'TopHat', 'TopHat') for r in r2_arr]))
        dlsdlm_arr = -np.log10(sig2_arr[1:] / sig2_arr[:-1]) / (lmarr[1:] -
                                                                lmarr[:-1])
        nm_arr[iz, :] = (np.log(10.) * volz * dlsdlm_arr * om * RHOCRIT0 *
                         g_nu(sigM_arr, z, cospar['mfName']) / m_arr)
    os.system("rm " + PREFIX_SAVE + "*")

    return pcs, nm_arr
Ejemplo n.º 6
0
def do_all(z_arr, cpar, prefix):
    pcs = csm.PcsPar()
    pcs.background_set(cpar['om'], cpar['ol'], cpar['ob'], cpar['w0'],
                       cpar['wa'], cpar['hh'], TCMB)

    a_arr = 1. / (z_arr + 1)
    gf_arr = np.array([pcs.growth_factor(a) for a in a_arr])

    if PLOT_STUFF == 1:
        plt.plot(a_arr, gf_arr)
        plt.xlabel('$a$', fontsize=FS)
        plt.ylabel('$D(z)$', fontsize=FS)
        plt.show()

    if WRITE_STUFF == 1:
        np.savetxt(prefix + "_gf.txt",
                   np.transpose([z_arr, gf_arr]),
                   header="[1] z, [2] D(z)")
Ejemplo n.º 7
0
def do_all(m_arr, cpar, prefix):
    pcs = csm.PcsPar()
    pcs.background_set(cpar['om'], cpar['ol'], cpar['ob'], cpar['w0'],
                       cpar['wa'], cpar['hh'], TCMB)
    pcs.set_linear_pk('BBKS', -3, LKMAX, 0.01, cpar['ns'], cpar['s8'])

    r_arr = np.array([pcs.M2R(m) for m in m_arr])
    sm_arr = np.sqrt(
        np.array([pcs.sig0_L(r, r, 'TopHat', 'TopHat') for r in r_arr]))

    if PLOT_STUFF == 1:
        plt.plot(m_arr, sm_arr)
        plt.xlabel('$M\\,[M_{\\odot}\\,h^{-1}]$', fontsize=FS)
        plt.ylabel('$\\sigma(M)$', fontsize=FS)
        plt.gca().set_xscale('log')
        plt.gca().set_yscale('log')
        plt.show()

    if WRITE_STUFF == 1:
        np.savetxt(prefix + "_sm.txt",
                   np.transpose([m_arr, sm_arr]),
                   header="[1] M (M_sun/h), [2] sigma(M)")
Ejemplo n.º 8
0
RHOCRIT0 = 2.7744948E11
OM0 = 0.3
HH0 = 0.7
FB0 = 0.1666666
NS = 0.96
S8 = 0.8
NRMAX = 10.
LMMIN = 8.
LMMAX = 16.
DLM = 0.1
NLM = 64
B_CMASS = 2.
Z_EFF = 0.5

#Cosmological parameters outside the voide
pcs_BG0 = csm.PcsPar()
pcs_BG0.unset_gsl_eh()
pcs_BG0.background_set(OM0, 1 - OM0, OM0 * FB0, -1., 0., HH0, 2.7255)
dgrowth0 = pcs_BG0.growth_factor(1.)  #Normalization of the growth factor
#Factor needed to scale the void profile at z=Z_EFF to z=0
scale_delta = B_CMASS * pcs_BG0.growth_factor(1. / (1 + Z_EFF)) / dgrowth0


def rDelta(m, z, Delta, cpar):
    """Returns r_Delta
    """
    hn = (cpar['pcs']).hubble(1. / (1 + z)) / (cpar['pcs']).hubble(1.)
    rhoc = RHOCRIT0 * hn * hn
    return (3 * m / (4 * np.pi * Delta * rhoc))**0.333333333 * (1 + z)

Ejemplo n.º 9
0
import numpy as np
import py_cosmo_mad as csm

KMAX = 0.2
pcs = csm.PcsPar()
pcs.set_verbosity(1)
pcs.background_set(0.315, 0.685, 0.049, -1., 0., 0.67, 2.725)


def reprocess_file(fname, forgetlmax):
    data = np.loadtxt(fname, unpack=True)
    z0 = data[0]
    zf = data[1]
    sz = data[2]
    marg = data[3]
    zm = (z0 + zf) / 2
    if forgetlmax:
        lmax = 2000 * np.ones_like(sz)
    else:
        lmax = np.array([
            int(pcs.radial_comoving_distance(1. / (1 + z)) * KMAX) for z in zm
        ])
    np.savetxt(fname,
               np.transpose([z0, zf, sz, marg, lmax]),
               fmt='%lf %lf %lf %d %d',
               header='[0]z0 [1]zf [2]sigma_z [3]marg_sz [4]lmax')


reprocess_file('bins_red.txt', False)
reprocess_file('bins_blue.txt', False)
reprocess_file('bins_gold.txt', True)