PyAutoLens
PyAutoLens copied to clipboard
Dekel-Zhao Profile
The following paper details a mass profile that is well suited to strong lensing, called the Dekel-Zhao profile:
https://arxiv.org/abs/2004.08395
The deflection angle calculation for a spherical model is given by equation (38):

The expression looks pretty complicated, but actually boils down to a fairly straight forward calculation using various scipy / expansions.
It would be good to implement this mass profile in the module autogalaxy.profiles.mass_profiles.dark_mass_profiles:
https://github.com/Jammy2211/PyAutoGalaxy/blob/master/autogalaxy/profiles/mass_profiles/dark_mass_profiles.py
A template for the profile is as follows:
class SphDekel(mp.MassProfile, DarkProfile):
def __init__(
self,
centre: Tuple[float, float] = (0.0, 0.0),
kappa_0: float = 0.05,
another_parameter: float = 1.0,
):
"""
The spherical Dekel profile, used to fit the dark matter halo of the lens.
Parameters
----------
centre
The (y,x) arc-second coordinates of the profile centre.
kappa_0
The overall normalization of the dark matter halo for the Dekel profile.
"""
super().__init__(
centre=centre,
elliptical_comps=(0.0, 0.0),
)
self.kappa_0 = kappa_0
# For new users: These decorators perform geometric transformation of the input grid using its `centre`.
@grid_decorators.grid_2d_to_structure
@grid_decorators.transform
@grid_decorators.relocate_to_radial_minimum
def deflections_2d_from_grid(self, grid, **kwargs):
"""
Calculate the deflection angles at a given set of arc-second gridded coordinates.
Parameters
----------
grid : aa.Grid2D
The grid of (y,x) arc-second coordinates the deflection angles are computed on.
"""
deflections = compute via equation (38)
return deflections