def rho0(z): global _rho0_func if _critical_density_func is None: zs = np.linspace(0, 10, 1000) rho_0 = 2.77536627e11 density = cosmo.critical_density(zs) / cosmo.critical_density0 * rho_0 _critical_density_func = np.interp(z, density)
def projected_rho_mean(z1, z2): # return the mean density of the unvierse integrated across redshifts # z1 and z2, in comoving (M_sun/h)(Mpc/h)^-3 pc0 = cosmo.critical_density(0).to(units.Msun / units.Mpc**3).value Om0 = cosmo.Om0 rho_mean_0 = Om0 * pc0 d1 = cosmo.comoving_distance(z1).value d2 = cosmo.comoving_distance(z2).value return rho_mean_0 * (d2 - d1) / cosmo.h
def tdyn_nsnap(nsnap): z_t = z_nsnap(nsnap) rho_m = WMAP7.Om(z_t) * WMAP7.critical_density(z_t) return ((4./3. * np.pi * 200. * rho_m * Const.G)**-0.5).to(U.Gyr).value