PyAutoLens
PyAutoLens copied to clipboard
Self interacting dark matter profile deflections
The following paper details a mass profile that represents self interacting dark matter halos:
https://arxiv.org/abs/2105.05259
The deflection angle calculation for a spherical model is given by equations (7) and (12):


The deflections can therefore be computed via integration of equation (7).
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 SphSIDM(mp.MassProfile, DarkProfile):
def __init__(
self,
centre: Tuple[float, float] = (0.0, 0.0),
rho_s: float = 0.05,
truncation : float = 1.0,
core_radius : float = 1.0,
alpha : float = 10.0,
another_parameter: float = 1.0,
):
"""
The spherical SIDM profile, used to fit the dark matter halo of the lens.
Parameters
----------
centre
The (y,x) arc-second coordinates of the profile centre.
rho_s
The overall normalization of the dark matter halo for the SIDM profile.
"""
super().__init__(
centre=centre,
elliptical_comps=(0.0, 0.0),
)
self.rho_s = rho_s
self.truncation = truncation
self.core_radius = core_radius
self.alpha = alpha
# 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 (7) and (12)
return deflections