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}$).
source
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}
source
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.
source
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}
source
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.
source
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}
source
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.
source
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}$)
source