Source code for lenstronomy.LensModel.Profiles.flexion

from lenstronomy.LensModel.Profiles.base_profile import LensProfileBase

__all__ = ["Flexion"]


[docs] class Flexion(LensProfileBase): """Class for flexion.""" param_names = ["g1", "g2", "g3", "g4", "ra_0", "dec_0"] lower_limit_default = { "g1": -0.1, "g2": -0.1, "g3": -0.1, "g4": -0.1, "ra_0": -100, "dec_0": -100, } upper_limit_default = { "g1": 0.1, "g2": 0.1, "g3": 0.1, "g4": 0.1, "ra_0": 100, "dec_0": 100, }
[docs] def function(self, x, y, g1, g2, g3, g4, ra_0=0, dec_0=0): x_ = x - ra_0 y_ = y - dec_0 f_ = ( 1.0 / 6 * ( g1 * x_**3 + 3 * g2 * x_**2 * y_ + 3 * g3 * x_ * y_**2 + g4 * y_**3 ) ) return f_
[docs] def derivatives(self, x, y, g1, g2, g3, g4, ra_0=0, dec_0=0): x_ = x - ra_0 y_ = y - dec_0 f_x = 1.0 / 2.0 * g1 * x_**2 + g2 * x_ * y_ + 1.0 / 2.0 * g3 * y_**2 f_y = 1.0 / 2.0 * g2 * x_**2 + g3 * x_ * y_ + 1.0 / 2.0 * g4 * y_**2 return f_x, f_y
[docs] def hessian(self, x, y, g1, g2, g3, g4, ra_0=0, dec_0=0): x_ = x - ra_0 y_ = y - dec_0 f_xx = g1 * x_ + g2 * y_ f_yy = g3 * x_ + g4 * y_ f_xy = g2 * x_ + g3 * y_ return f_xx, f_xy, f_xy, f_yy