Plummer Lens
The Plummer lens is based on the Plummer model (Plummer, 1911), originally introduced to describe the density distribution in globular clusters. Its three-dimensional density profile is given by
\[\begin{equation*} ρ(r) = \frac{3M}{4π a^3} \left( 1 + \frac{r^2}{a^2} \right)^{-5/2}, \end{equation*}\]
where $M$ is the total mass of the lens and $a$ is the Plummer (core) radius. The corresponding projected surface mass density is
\[\begin{equation*} Σ(R) = \frac{M}{π a^2} \left( 1 + \frac{R^2}{a^2} \right)^{-2}. \end{equation*}\]
Defining the angular core radius $θ_s = a / D_d$, the lens potential can be written as
\[\begin{equation*} ψ(\pmb{θ}) = \frac{4{\rm G} M} {\rm c^2} \frac{1}{D_d} \ln\left[ \sqrt{θ_s^2 + |\pmb{θ} - \pmb{θ}_c|^2} \right], \end{equation*}\]
where $\pmb{θ}_c$ represents the lens center, leading to the deflection angle
\[\begin{equation*} \pmb{α}(\pmb{θ}) = \frac{4{\rm G} M} {\rm c^2} \frac{1}{D_d} \frac{\pmb{θ} - \pmb{θ}_c}{θ_s^2 + |\pmb{θ} - \pmb{θ}_c|^2}. \end{equation*}\]
In the limit $θ_s → 0$, the above equations reduce to the corresponding point mass lens equations, i.e., the Plummer lens acts as a softened point mass lens.
In LensFactory, to define a Plummer lens, the user needs to specify five parameters: its position in the image plane ($x_c,~y_c$), its mass ($M$), the core radius ($x_s \equiv θ_s$), and the angular diameter distance to the lens ($D_d$). By default, the lens is placed at the origin, i.e., ($x_c,~y_c$) = (0, 0).
LensFactory.Lenses.init_PlummerLens — Type
init_PlummerLens(D_d::Real = NaN,
x_c::Real = 0.0,
y_c::Real = 0.0,
mass::Real = NaN,
x_s::Real = NaN)Initialize a Plummer lens with the given parameters.
Keyword Arguments
D_d::Real = NaN: ADD from observer to lens (in $\rm \mathbf{meters}$).x_c::Real = 0.0: x-coordinate of the lens (in $\rm \mathbf{arcseconds}$).y_c::Real = 0.0: y-coordinate of the lens (in $\rm \mathbf{arcseconds}$).mass::Real= NaN: Mass of the lens (in $\rm \mathbf{M_\odot}$).x_s::Real = NaN: Core radius (in $\rm \mathbf{arcseconds}$).
LensFactory.Lenses.PlummerLens.potential! — Function
potential!(ψ::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:Real, S<:Real, T<:Real}potential!(ψ::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:ROA, S<:ROA, T<:Real}Calculate potential at given coordinates for a Plummer lens and update the potential (ψ) in place.
Arguments
ψ: Potential at given coordinatesθx: x-coordinate(s) (in $\rm \mathbf{arcseconds}$).θy: y-coordinate(s) (in $\rm \mathbf{arcseconds}$).D_d: ADD from the observer to the lens (in $\rm \mathbf{meters}$).θxc: x-coordinate of the lens (in $\rm \mathbf{arcseconds}$).θyc: y-coordinate of the lens (in $\rm \mathbf{arcseconds}$).mass: Mass of the lens (in $\rm \mathbf{M_\odot}$).θs: Core radius (in $\rm \mathbf{arcseconds}$).
Returns
nothing: Updates the potential (ψ) in place.
LensFactory.Lenses.PlummerLens.deflection! — Function
deflection!(ψx::U, ψy::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:Real, S<:Real, T<:Real}deflection!(ψx::U, ψy::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:ROA, S<:ROA, T<:Real}Calculate deflection at given coordinates for a Plummer lens and update the deflection components (ψx, ψy) in place.
Arguments
ψx: x-component of the deflection at given coordinatesψy: y-component of the deflection at given coordinatesθx: x-coordinate(s) (in $\rm \mathbf{arcseconds}$).θy: y-coordinate(s) (in $\rm \mathbf{arcseconds}$).D_d: ADD from the observer to the lens (in $\rm \mathbf{meters}$).θxc: x-coordinate of the lens (in $\rm \mathbf{arcseconds}$).θyc: y-coordinate of the lens (in $\rm \mathbf{arcseconds}$).mass: Mass of the lens (in $\rm \mathbf{M_\odot}$).θs: Core radius (in $\rm \mathbf{arcseconds}$).
Returns
nothing: Updates the deflection (ψx, ψy) in place.
LensFactory.Lenses.PlummerLens.jacobian! — Function
jacobian!(ψxx::U, ψyy::U, ψxy::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:Real, S<:Real, T<:Real}jacobian!(ψxx::U, ψyy::U, ψxy::U, θx::S, θy::S, D_d::T, θxc::T, θyc::T, mass::T, θs::T) where {U<:ROA, S<:ROA, T<:Real}Calculate jacobian at given coordinates for a Plummer lens and update the jacobian components (ψxx, ψyy, ψxy) in place.
Arguments
ψxx: x-component of the jacobian at given coordinatesψyy: y-component of the jacobian at given coordinatesψxy: xy-component of the jacobian at given coordinatesθx: x-coordinate(s) (in $\rm \mathbf{arcseconds}$).θy: y-coordinate(s) (in $\rm \mathbf{arcseconds}$).D_d: ADD from the observer to the lens (in $\rm \mathbf{meters}$).θxc: x-coordinate of the lens (in $\rm \mathbf{arcseconds}$).θyc: y-coordinate of the lens (in $\rm \mathbf{arcseconds}$).mass: Mass of the lens (in $\rm \mathbf{M_\odot}$).θs: Core radius (in $\rm \mathbf{arcseconds}$).
Returns
nothing: Updates the jacobian (ψxx, ψyy, ψxy) in place.
LensFactory.Lenses.PlummerLens.einstein_angle — Function
einstein_angle(; D_d::Real = NaN,
D_ds::Real = NaN,
D_s::Real = NaN,
mass::Real = NaN,
x_s::Real = NaN)Calculate the Einstein angle for a Plummer lens,
\[\theta_E = \sqrt{\frac{4 \, \rm{G} \, M}{\rm{c}^2} \frac{D_{ds}}{D_d D_s} - x_s^2}.\]
Keyword Arguments
D_d: ADD from observer to lens (in $\rm \mathbf{meters}$).D_ds: ADD from lens to source (in $\rm \mathbf{meters}$).D_s: ADD from observer to source (in $\rm \mathbf{meters}$).mass: Mass of the lens (in $\rm \mathbf{M_\odot}$).x_s: Core radius (in $\rm \mathbf{arcseconds}$).
Returns
θE: Einstein angle (in $\rm \mathbf{arcseconds}$)