Source code for slsim.Util.cosmo_util
import numpy as np
import scipy.interpolate as interp
[docs]
def z_scale_factor(z_old, z_new, cosmo):
"""
:param z_old: The original redshift.
:type z_old: float
:param z_new: The redshift where the object will be placed.
:type z_new: float
:param cosmo: The cosmology object. Defaults to a FlatLambdaCDM model if None.
:type cosmo: astropy.cosmology.FLRW, optional
:return: The multiplicative pixel size scaling factor.
:rtype: float
"""
# Calculate angular diameter distance scaling factor
return cosmo.angular_diameter_distance(z_old) / cosmo.angular_diameter_distance(
z_new
)
[docs]
def z_time_interp(cosmo, z_max):
"""Calculates redshift given cosmic time.
:param cosmo: cosmology used to calculate cosmic time
:type cosmo: astropy.cosmology object
:param z_max: maximum redshift for interpolation
:type z_max: float
:return: interpolation function that returns redshift for a given
cosmic time
:return type: scipy.interpolate.interp1d
"""
z_array = np.linspace(0, z_max, 1000)
z_array = z_array[::-1]
t_array = cosmo.age(z_array).to_value()
return interp.interp1d(t_array, z_array, fill_value="extrapolate")