Source code for lenstronomy.LensModel.Profiles.convergence
__author__ = 'sibirrer'
import lenstronomy.Util.param_util as param_util
from lenstronomy.LensModel.Profiles.base_profile import LensProfileBase
__all__ = ['Convergence']
[docs]class Convergence(LensProfileBase):
"""
a single mass sheet (external convergence)
"""
param_names = ['kappa_ext', 'ra_0', 'dec_0']
lower_limit_default = {'kappa_ext': -10, 'ra_0': -100, 'dec_0': -100}
upper_limit_default = {'kappa_ext': 10, 'ra_0': 100, 'dec_0': 100}
[docs] def function(self, x, y, kappa_ext, ra_0=0, dec_0=0):
"""
lensing potential
:param x: x-coordinate
:param y: y-coordinate
:param kappa_ext: external convergence
:return: lensing potential
"""
theta, phi = param_util.cart2polar(x - ra_0, y - dec_0)
f_ = 1./2 * kappa_ext * theta**2
return f_
[docs] def derivatives(self, x, y, kappa_ext, ra_0=0, dec_0=0):
"""
deflection angle
:param x: x-coordinate
:param y: y-coordinate
:param kappa_ext: external convergence
:return: deflection angles (first order derivatives)
"""
x_ = x - ra_0
y_ = y - dec_0
f_x = kappa_ext * x_
f_y = kappa_ext * y_
return f_x, f_y
[docs] def hessian(self, x, y, kappa_ext, ra_0=0, dec_0=0):
"""
Hessian matrix
:param x: x-coordinate
:param y: y-coordinate
:param kappa_ext: external convergence
:return: second order derivatives f_xx, f_xy, f_yx, f_yy
"""
gamma1 = 0
gamma2 = 0
kappa = kappa_ext
f_xx = kappa + gamma1
f_yy = kappa - gamma1
f_xy = gamma2
return f_xx, f_xy, f_xy, f_yy