GRALE
grale::EllipticLens Class Reference

Base class for the lens effect by an elliptical lens, based on the information of the circular equivalent. More...

#include <ellipticlens.h>

Inheritance diagram for grale::EllipticLens:
Inheritance graph
[legend]
Collaboration diagram for grale::EllipticLens:
Collaboration graph
[legend]

List of all members.

Additional Inherited Members

- Public Types inherited from grale::GravitationalLens
enum  LensType {
  Gaussian, MultiplePlummers, Plummer, Pointmass,
  SIS, NSIE, NSIS, SIE,
  Square, MultipleSquares, MultipleGaussians, MassSheet,
  Composite, MassDisk, Profile, PolynomialMassProfile,
  MultipleWendland, DeflectionGrid, NFW, EllipticNFW,
  Sersic, EllipticSersic
}
 Specific lens types. More...
- Public Member Functions inherited from grale::GravitationalLens
LensType getLensType () const
 Returns the type of the lens.
virtual bool init (double D_d, const GravitationalLensParams *pLensParams=0)
 Initializes the lens with parameters params, setting its angular diameter distance to D_d.
bool traceTheta (double D_s, double D_ds, Vector2D< double > theta, Vector2D< double > *pBeta) const
 Calculates the result of the lens equation.
virtual double getInverseMagnification (double D_s, double D_ds, Vector2D< double > theta) const
 Returns the inverse magnification factor for a specific direction.
double getLensDistance () const
 Returns the D_d parameter used in the GravitationalLens::init function.
void setLensDistance (double D_d)
 Changes the lens distance.
const GravitationalLensParamsgetLensParameters () const
 Returns a pointer to a copy of the lens parameters used in the GravitationalLens::init function.
virtual void setDerivativeAngularDistanceScale (double distanceScale)
 Sets a distance scale to be used when estimating the derivatives of the function beta(theta) numerically.
bool write (serut::SerializationInterface &si) const
 Writes the current lens to a serut::SerializationInterface instance.
bool save (const std::string &fileName) const
 Writes the current lens to a file.
GravitationalLenscreateCopy () const
 Creates a copy of the current lens instance.
- Static Public Member Functions inherited from grale::GravitationalLens
static double getInverseMagnification (double D_s, double D_ds, double axx, double ayy, double axy)
 Calculate inverse magnification from derivatives of deflection angle.
static void getShearInfo (double D_s, double D_ds, double axx, double ayy, double axy, double *pShearAngle, double *pShearSize)
 Calculate shear size and angle from derivatives of the deflection angle.
static void getShearInfo (double gamma1, double gamma2, double *pShearAngle, double *pShearSize)
 Calculate shear size and angle from shear components.
static bool read (serut::SerializationInterface &si, GravitationalLens **pLens, std::string &errorString)
 Reads a lens instance from a serut::SerializationInterface object and stores the lens in lens; an error message is stored in errstr if the function is not successful.
static bool load (const std::string &fileName, GravitationalLens **pLens, std::string &errorString)
 Loads a lens instance from a file and stores the lens in lens.
- Protected Member Functions inherited from grale::GravitationalLens
 GravitationalLens (LensType t)
 Meant to be used by a specific lens implementation.
virtual bool processParameters (const GravitationalLensParams *params)=0
 Specific lens implementations implement this function to process the parameters specified in the GravitationalLens::init function.

Detailed Description

Base class for the lens effect by an elliptical lens, based on the information of the circular equivalent.

Suppose we have a circularly symmetric lens, in which the integrated (projected) mass is described by:

\[ \textrm{M}_c(\theta) = 2\pi D_d^2 \int_0^\theta \Sigma_c(\theta') \theta' d\theta' \]

The lens effect by the mass distribution

\[ \Sigma\left(\vec{\theta}\right) = \Sigma_c\left(\sqrt{\theta_x^2+\frac{\theta_y^2}{q^2}}\right) \]

can then be described as follows.

First, define the following quantities:

\[ \xi(u,x,y) = \sqrt{u\left(x^2+\frac{y^2}{1-(1-q^2)u}\right)} \]

\[ \textrm{H}(\theta) = \frac{1}{\theta}\frac{d\Sigma_c}{d\theta}(\theta) \]

\[ \textrm{I}(x,y) = \frac{4 G}{c^2 D_d}\int_0^1 \frac{\textrm{M}_c\left(\xi(u,x,y)\right)}{u} \frac{1}{\sqrt{1-(1-q^2)u}} du \]

\[ \textrm{J}_n(x,y) = \frac{4 \pi G D_d}{c^2} \int_0^1 \frac{\Sigma_c\left(\xi(u,x,y)\right)}{\left(1-(1-q^2)u\right)^{\left(n+\frac{1}{2}\right)}} du \]

\[ \textrm{K}_n(x,y) = \frac{4 \pi G D_d}{c^2} \int_0^1 \textrm{H}\left(\xi(u,x,y)\right) \frac{u}{\left(1-(1-q^2)u\right)^{\left(n+\frac{1}{2}\right)}} du \]

One then has the following expressions for the lensing potential, deflection angle and its derivatives:

\[ \psi\left(\vec{\theta}\right) = \frac{D_{ds}}{D_s} \frac{q}{2} \textrm{I}(\theta_x, \theta_y) \]

\[ \hat{\alpha}_x\left(\vec{\theta}\right) = q \theta_x \textrm{J}_0(\theta_x, \theta_y) \]

\[ \hat{\alpha}_y\left(\vec{\theta}\right) = q \theta_y \textrm{J}_1(\theta_x, \theta_y) \]

\[ \frac{\partial \hat{\alpha}_x}{\partial\theta_x}\left(\vec{\theta}\right) = q \textrm{J}_0(\theta_x, \theta_y) + q \theta_x^2 \textrm{K}_0(\theta_x, \theta_y) \]

\[ \frac{\partial \hat{\alpha}_y}{\partial\theta_y}\left(\vec{\theta}\right) = q \textrm{J}_1(\theta_x, \theta_y) + q \theta_y^2 \textrm{K}_2(\theta_x, \theta_y) \]

\[ \frac{\partial \hat{\alpha}_x}{\partial\theta_y}\left(\vec{\theta}\right) = q \theta_x\theta_y \textrm{K}_1(\theta_x, \theta_y) \]

References


The documentation for this class was generated from the following file: