Source code for lenstronomy.GalKin.cosmo

import lenstronomy.Util.constants as const
import numpy as np

__all__ = ["Cosmo"]


[docs] class Cosmo(object): """Cosmological quantities."""
[docs] def __init__(self, d_d, d_s, d_ds): """ :param d_d: angular diameter distance to the deflector :param d_s: angular diameter distance to the source :param d_ds: angular diameter distance between deflector and source """ if d_ds <= 0 or d_s <= 0 or d_d <= 0: raise ValueError( "input angular diameter distances Dd: %s, Ds: %s, Dds: %s are not suppored for a lens" " model!" % (d_d, d_s, d_ds) ) self.dd = float( d_d ) # angular diameter distance from observer to deflector in physical Mpc self.ds = float( d_s ) # angular diameter distance from observer to source in physical Mpc self.dds = float( d_ds ) # angular diameter distance from deflector to source in physical Mpc
[docs] def arcsec2phys_lens(self, theta): """Converts are seconds to physical units on the deflector. :param theta: angle observed on the sky in units of arc seconds :return: physical distance of the angle in units of Mpc """ return theta * const.arcsec * self.dd
@property def epsilon_crit(self): """Returns the critical projected mass density in units of M_sun/Mpc^2 (physical units)""" const_si = const.c**2 / ( 4 * np.pi * const.G ) # c^2/(4*pi*G) in units of [kg/m] conversion = const.Mpc / const.M_sun # converts [kg/m] to [M_sun/Mpc] pre_const = const_si * conversion # c^2/(4*pi*G) in units of [M_sun/Mpc] epsilon_crit = self.ds / (self.dd * self.dds) * pre_const # [M_sun/Mpc^2] return epsilon_crit