Source code for lenstronomy.Cosmo._cosmo_interp_astropy_v4

import astropy

if float(astropy.__version__[0]) < 5.0:
    from astropy.cosmology.core import vectorize_if_needed
else:
    Warning(
        "This routines are only supported for astropy version <5. Current version is %s."
        % astropy.__version__
    )
#
from scipy.integrate import quad


[docs] class CosmoInterp(object): """Class which interpolates the comoving transfer distance and then computes angular diameter distances from it This class is modifying the astropy.cosmology routines."""
[docs] def __init__(self, cosmo): """ :param cosmo: astropy.cosmology instance (version 4.0 as private functions need to be supported) """ self._cosmo = cosmo
def _integral_comoving_distance_z1z2(self, z1, z2): """Comoving line-of-sight distance in Mpc between objects at redshifts z1 and z2. The comoving distance along the line-of-sight between two objects remains constant with time for objects in the Hubble flow. Parameters ---------- z1, z2 : array_like, shape (N,) Input redshifts. Must be 1D or scalar. Returns ------- d : `~astropy.units.Quantity` Comoving distance in Mpc between each input redshift. """ f = lambda z1, z2: quad( self._cosmo._inv_efunc_scalar, z1, z2, args=self._cosmo._inv_efunc_scalar_args, )[0] return self._cosmo._hubble_distance * vectorize_if_needed(f, z1, z2)