Source code for astropy.cosmology.funcs
# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
Convenience functions for `astropy.cosmology`.
"""
from .core import get_current as _get_current
from math import pi as _pi
_arcsec_in_radians = 1 / 3600. * _pi / 180
_arcmin_in_radians = 1 / 60. * _pi / 180
[docs]def kpc_comoving_per_arcmin(z, cosmo=None):
""" Separation in transverse comoving kpc corresponding to an
arcminute at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
d : ndarray, or float if input scalar
The distance in comoving kpc corresponding to an arcmin at each
input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.comoving_transverse_distance(z) * 1.e3 * _arcmin_in_radians
[docs]def kpc_proper_per_arcmin(z, cosmo=None):
""" Separation in transverse proper kpc corresponding to an
arcminute at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
d : ndarray, or float if input scalar
The distance in proper kpc corresponding to an arcmin at each
input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.angular_diameter_distance(z) * 1.e3 * _arcmin_in_radians
[docs]def arcsec_per_kpc_comoving(z, cosmo=None):
""" Angular separation in arcsec corresponding to a comoving kpc
at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
theta : ndarray, or float if input scalar
The angular separation in arcsec corresponding to a comoving kpc
at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return 1 / (cosmo.comoving_transverse_distance(z) *
1.e3 * _arcsec_in_radians)
[docs]def arcsec_per_kpc_proper(z, cosmo=None):
""" Angular separation in arcsec corresponding to a proper kpc at
redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
theta : ndarray, or float if input scalar
The angular separation in arcsec corresponding to a proper kpc
at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return 1 / (cosmo.angular_diameter_distance(z) * 1.e3 * _arcsec_in_radians)
[docs]def distmod(z, cosmo=None):
""" Distance modulus at redshift `z`.
The distance modulus is defined as the (apparent magnitude -
absolute magnitude) for an object at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
distmod : ndarray, or float if input scalar
Distance modulus at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.distmod(z)
[docs]def H(z, cosmo=None):
""" Hubble parameter (km/s/Mpc) at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
H : ndarray, or float if input scalar
Hubble parameter at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.H(z)
[docs]def scale_factor(z, cosmo=None):
""" Scale factor at redshift `z`.
The scale factor is defined as `a = 1 / (1 + z)`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
distmod : ndarray, or float if input scalar
Scale factor at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.scale_factor(z)
[docs]def critical_density(z, cosmo=None):
""" Critical density in grams per cubic cm at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
critdens : ndarray, or float if input scalar
Critical density at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.critical_density(z)
[docs]def lookback_time(z, cosmo=None):
""" Lookback time in Gyr to redshift `z`.
The lookback time is the difference between the age of the
Universe now and the age at redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
t : ndarray, or float if input scalar
Lookback time at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.lookback_time(z)
[docs]def comoving_distance(z, cosmo=None):
""" Comoving distance in Mpc at redshift `z`.
The comoving distance along the line-of-sight between two objects
remains constant with time for objects in the Hubble flow.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
codist : ndarray, or float if input scalar
Comoving distance at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.comoving_distance(z)
[docs]def angular_diameter_distance(z, cosmo=None):
""" Angular diameter distance in Mpc at a given redshift.
This gives the proper (sometimes called 'physical') transverse
distance corresponding to an angle of 1 radian for an object at
redshift `z`.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
angdist : ndarray, or float if input scalar
Angular diameter distance at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.angular_diameter_distance(z)
[docs]def luminosity_distance(z, cosmo=None):
""" Luminosity distance in Mpc at redshift `z`.
This is the distance to use when converting between the bolometric
flux from an object at redshift `z` and its bolometric luminosity.
Parameters
----------
z : array_like
Input redshifts.
Returns
-------
lumdist : ndarray, or float if input scalar
Angular diameter distance at each input redshift.
"""
if cosmo is None:
cosmo = _get_current()
return cosmo.luminosity_distance(z)