From 15a630fbc505da3cdc1dcbe0157774c1c5c02d28 Mon Sep 17 00:00:00 2001 From: Jyotirmaya Shivottam <31299799+JeS24@users.noreply.github.com> Date: Mon, 18 May 2020 13:25:50 +0530 Subject: [PATCH 1/3] Added EPE0004: Addition of RayTracing module --- EPE_00004/1-2.png | Bin 0 -> 8348 bytes EPE_00004/3-4.png | Bin 0 -> 6068 bytes EPE_00004/5.png | Bin 0 -> 2708 bytes EPE_00004/6-7.png | Bin 0 -> 7054 bytes EPE_00004/8.png | Bin 0 -> 3409 bytes EPE_00004/EPE_00004.rst | 500 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 500 insertions(+) create mode 100644 EPE_00004/1-2.png create mode 100644 EPE_00004/3-4.png create mode 100644 EPE_00004/5.png create mode 100644 EPE_00004/6-7.png create mode 100644 EPE_00004/8.png create mode 100644 EPE_00004/EPE_00004.rst diff --git a/EPE_00004/1-2.png b/EPE_00004/1-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb5c66aa8bcf513bb1ba4381f73f9b3840168ef GIT binary patch literal 8348 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 literal 0 HcmV?d00001 diff --git a/EPE_00004/3-4.png b/EPE_00004/3-4.png new file mode 100644 index 0000000000000000000000000000000000000000..2e35bbcf93ffc64d44990f1e4ffd7f5b8cabf05d GIT binary patch literal 6068 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�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 D83;D4 literal 0 HcmV?d00001 diff --git a/EPE_00004/6-7.png b/EPE_00004/6-7.png new file mode 100644 index 0000000000000000000000000000000000000000..6d02676e6716a954124a6bd353a67aa63640a7d6 GIT binary patch literal 7054 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 NwuXUvovI!DzW_m^NhAOO literal 0 HcmV?d00001 diff --git a/EPE_00004/8.png b/EPE_00004/8.png new file mode 100644 index 0000000000000000000000000000000000000000..9447bdf6c91858e8927700c21aecd6739ce19a9d GIT binary patch literal 3409 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 Bm2Ln4 literal 0 HcmV?d00001 diff --git a/EPE_00004/EPE_00004.rst b/EPE_00004/EPE_00004.rst new file mode 100644 index 0000000..6f8cbbe --- /dev/null +++ b/EPE_00004/EPE_00004.rst @@ -0,0 +1,500 @@ +Implementation of a Ray-Tracing Module +-------------------------------------- + +Author: Jyotirmaya Shivottam (`JeS24 `_) + +date-created: 2020 May 18 + +date-last-revised: 2020 May 18 + +date-accepted: TBA + +type: Standard Track + +status: Discussion + +-------------- + +Abstract +-------- + +.. The abstract should be a short description of what the EPE will achieve. + +In this EPE, I have detailed the plan for implementing a Ray-Tracing +module for Kerr and Schwarzschild spacetimes, in EinsteinPy. + + +-------------- + +Detailed description +-------------------- + +.. This section describes the need for the EPE. It should describe the existing +.. problem that it is trying to solve and why this EPE makes the situation better. +.. It should include examples of how the new functionality would be used and +.. perhaps some use cases. + +Our goal with this EPE is to implement a Ray-Tracing module, for Kerr +and Schwarzschild spacetimes, that does the following: + +#. Helps in visualizing space-time distortion in a strong gravity region + (here, a Black Hole or BH) +#. Obtains BH shadow in both spacetimes +#. Performs Time-Independent Radiative Transfer: + + #. To visualize Keplerian Disc/Shell with Lensing effect + #. To calculate associated Intensities for Gravitational Redshift + calculations + +While we will be working with the aforementioned spacetimes, we aim to +keep the module general to other geometries, as well. + +-------------- + +Branches and pull requests (If applicable) +------------------------------------------ + +.. Any pull requests or development branches containing work on this EPE +.. should be linked to from here. (An EPE does not need to be implemented +.. in a single pull request if it makes sense to implement it in discrete phases). +.. If no code is yet implemented, just put "N/A" + +This section will be updated, as and when features are implemented. + +-------------- + +Implementation +-------------- + +.. This section lists the major steps required to implement the EPE. Where +.. possible, it should be noted where one step is dependent on another, and which +.. steps may be optionally omitted. Where it makes sense, each step should +.. include a link related pull requests as the implementation progresses. + + +A. Approaches +~~~~~~~~~~~~~ + +There are two main ways to achieve the aforementioned goals: + +#. Numerically Integrating the Geodesic Equation (References `1, 2, 3 & + 4 `__) +#. Implementing a semi-analytical solution, particular to the spacetime + (References `5 & 6 `__) + +A brief comparison of these approaches on relevant factors, is given +below: + ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Numerical Integration | Analytical Method (Elliptical Functions) | ++==================================================================================+================================================================================================================================================================+ +| Computationally slower, as each point on the geodesic has to be evaluated | Computationally faster, as arbitrary sections of the geodesic can be computed | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Usually less accurate (Adaptive meshing can help here) | Spatial accuracy independent of integration step size | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Usually makes no assumptions on the underlying geometry | Makes several assumptions to make the problem analytically tractable and computationally faster | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Generalizable to most spacetimes, which is useful for perturbative simulations | Analytical solutions are specific to the spacetime. Since metric and connection must be known in advance, perturbations cannot be handled in a hands-off way | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Handles 3D accretion flow well | Analytical formula for 3D seems complex and computationally intensive to implement | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Simpler and faster for higher dimensions | Faster in most other computations | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Can be massively sped up by using parallel programming | Since calculations are implementation (Math) - specific, speed improvements are negligible | ++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Based on these factors and more importantly, since we require a general +module, we should go with a Numerical Solver. As far as computation +speed is concerned, parallel programming seems helpful in bridging the +gap between the two approaches. To these ends, after an extensive +literature review, I have the narrowed down to these papers in Numerical +Relativity: + +#. `RAPTOR - Bronzwaer et al + (2018) `__ - + `PDF `__ +#. `Odyssey - Pu et al + (2016) `__ + - + `PDF `__ +#. `GRay2 - Chan et al + (2018) `__ + - + `PDF `__ +#. `EHT Collab\* - Rummel et al + (2019) `__ + - + `PDF `__ + +\*Others are names of software packages, supplementing their work. +``EHT Collab`` is not. I am using it as a label, in this document. + +We will be making use of relevant portions of these works, as described +below and cited accordingly. + +B. Numerical Integration Strategies +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Based on the papers, listed above, we have two strategies for the whole +problem: + +1. Integrate geodesics and Time-Independent Radiative Transfer ODEs, at + each integration step (simultaneously), like ``RAPTOR`` and + ``Odyssey`` do. + +- Each step is computationally complex. +- Integration needs to be performed exactly once. +- Same step-sizes are used for both calculations, making the overall + simulation more accurate. +- GPU/CUDA dependency, through ``numba`` or ``cuPy`` may be needed. + +2. Integrate geodesics and have a separate sub-module, that integrates + Radiative Transfer equations, using the obtained geodesics, like we + have done (somewhat) in the current + ``einsteinpy.metric.Schwarzschild`` class or as in ``EHT Collab``. + +- Requires another round of integration, but this time, only on the + calculated geodesics, instead of the affine parameter space. +- Will be easier to troubleshoot. +- In case, one requires only the geodesics (e.g. for plotting geodesics + or obtaining the BH Shadow), extra computations will be avoided. +- ``numba`` alone should be sufficient. + +C. Background +~~~~~~~~~~~~~ + +Geometries +^^^^^^^^^^ + +We will be working mainly with the Kerr Metric, which is a stationary, +exact vacuum solution of the Einstein Field Equations for empty +spacetime, around an uncharged, rotating, axisymmetric BH. This is a +generalization of the Schwarzschild Metric, that is an EFE solution for +an uncharged, non-rotating BH. The rotation of the BH is accounted for, +by the Spin Parameter, :math:`a = J/M` (Angular Momentum / Mass). Under proper +scaling of units (Geometrized Units, for example), :math:`0 \le a \le 1`. +In :math:`a \to 0` limit, we recover the Schwarzschild Metric. As such, a +single module for Kerr Null Geodesics can be extended to Schwarzschild +Null Geodesics, by simply setting :math:`a = 0`. + +The Kerr Metric is usually given in Boyer-Lindquist Coordinates +(``BL``), but one other useful coordinate system is Modified Kerr-Schild +Coordinates (``KS``). We already have an implementation for +Boyer-Lindquist Coordinates in ``einsteinpy.coordinates``. We can +implement Modified Kerr-Schild similarly. + +Geodesic Equation +^^^^^^^^^^^^^^^^^ + +The Geodesic Equation is a numerically stiff second order ODE, which can +be derived by maximizing the action in 4D spacetime, using variational +methods. It can be written succinctly using Christoffel Symbols +(:math:`\Gamma_{bc}^{a}`), as follows (N.B: Einstein Summation has been +used throughout this document): + +.. image:: 1-2.png + :align: center + +Here, :math:`X` denotes 4-position (point on the geodesic), :math:`g` is the +metric tensor and :math:`\lambda` denotes the affine parameter. To make the +computation more accurate, easier to follow and modular to implement, we +can break down Eq. (1) into two coupled first order ODEs, per coordinate +(8 in total - :math:`X^a, U^a`): + +.. image:: 3-4.png + :align: center + +Here, :math:`U` and :math:`A` are 4-velocity and 4-accelaration, respectively. + +Geometrized Unit System +^^^^^^^^^^^^^^^^^^^^^^^ + +Using SI in Numerical Relativity is rather cumbersome due to the huge +scales involved. It is better and more "natural" to shift to Geometrized +Units, where we set :math:`G = c = 1` and scale other quantities accordingly. +We will be using these units in all the calculations in this module. For +ease-of-use, we will let users input the necessary quantities in SI and +convert them to Geometric Units implicitly. We will store the final +outputs in SI, as well. + +A list of scaling factors for SI :math:`\leftrightarrow` Geometric can be found +`here `__. + +Ray-Tracing +^^^^^^^^^^^ + +In reality, one has to consider all light rays (*Photons*) close to the +BH and evolve them according to the Geodesic Equation (Eq. (1) or (3) & +(4)) to see, which *photons* arrive at the observer's position and also, +from which direction. This is computationally intractable, given the +huge number of initial conditions to consider. To handle this +efficiently, we can instead assume, that the observer is located far +from the BH and that all rays, arriving at the observer's location, are +parallel (as is the case for cosmological observations) and trace the +*photon(s)* backwards in time (so-called *Ray-Tracing*), from the +observer's location to the BH. + +D. Implementation Details +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Camera/Image Setup +^^^^^^^^^^^^^^^^^^ + +For Ray-Tracing, we first set up a virtual *Camera/Image*, which +represents a consolidated view into what an observer (placed at each +pixel of the camera/image) will see. It is a 2D, flat grid of pixels +(using the aforementioned assumption), with the overall dimensions given +by *Impact Parameters*, :math:`\alpha` or ``alpha`` horizontally, and +:math:`\beta` or ``beta`` vertically. These form the coordinates in the +observer's frame. For an observer (at a pixel) who receives the ray +(photon) at an inclination angle, :math:`\theta_{Obs}` (from the BH Spin +Axis), and radial position :math:`r_{Obs} \to \infty`, the celestial +coordinates in the observer’s frame, :math:`(\alpha, \beta)` can be given +by Eqs. (16) and (17) in ``Odyssey``. So, we require :math:`\theta_{Obs}` +and :math:`r_{Obs}`, as the inputs for the placement of the null +geodesic/photon in the image. + +Initial Conditions +^^^^^^^^^^^^^^^^^^ + +A summary of the required initial conditions is given below: + ++-----------------+---------------------------------+ +| Parameter | Use | ++=================+=================================+ +| ``r_obs`` | Distance from BH Spin Axis | ++-----------------+---------------------------------+ +| ``theta_obs`` | Inclination from BH Spin Axis | ++-----------------+---------------------------------+ +| ``a`` | BH Spin Parameter | ++-----------------+---------------------------------+ +| ``alpha`` | Horizontal Impact Parameter | ++-----------------+---------------------------------+ +| ``beta`` | Vertical Impact Parameter | ++-----------------+---------------------------------+ + +Mathematically, :math:`r_{Obs} \to \infty`. For practical purposes, we will +keep ``r_obs`` sufficiently large, such that, any spacetime curvature, +in the camera/image plane, is less than the numerical tolerance of the +simulation - in other words, the flat space approximation for the +observer holds. + +These parameters can be used to specify the initial conditions for the +photon, i.e. its 4-position and 4-momentum (Eqs. (3) & (4)), that we can +package together in a vector of length 8 - ``initial_photon_vector``. +Also, we will have to perform a coordinate transformation from the +observer's frame, at (:math:`\alpha, \beta`) to the BH frame, and then +perhaps a transformation to our coordinate system of choice, either BL +or KS. For initial conditions and related tasks, we can use the +equations in either Section 2.2 of ``Odyssey`` or Section 2.3 of +``RAPTOR``. At each integration step, we will compute the covariant +photon momentum and related quantities, and use these values to update a +``photon_vector``, that is a length-8 vector, storing values needed for +the next integration step. These momentum values (:math:`P_\alpha` or +:math:`k_\alpha`) will be used to perform Radiative Transfer calculations, +as described in below, under "Radiative Transfer". + +A point to note here is, that the Kerr Spacetime admits 2 Killing +Vectors, leading to Energy (:math:`E`) and Angular Momentum (:math:`L_z`) +Conservation. Another composite conserved quantity or a constant of +motion is Carter's Constant, :math:`Q`. Using these, we can eliminate the +calculations, pertaining to time, :math:`t` and azimuthal angle, :math:`\phi`. This +will reduce the number of differential equations to be solved from 8 to +6 (or 5, if axisymmetry is assumed throughout the integration period). +However, this is a Kerr-specific optimization, that is not extensible to +most spacetimes. Even in Kerr spacetime, realistic models of the BH +surroundings require a :math:`\phi` dependence. So, we can either account for +these constants of motion (see ``Odyssey`` or ``EHT Collab``) or be +completely general (see ``RAPTOR]``). + +Boundary Conditions +^^^^^^^^^^^^^^^^^^^ + +We also need to set limits on the BH itself, as getting too close to the +BH would imply photon absorption/capture into the BH. Similarly, some +photons may miss the BH by a large distance and evolve infinitely far +away from the BH. The lower (or closer) limit can be set, using the +equation for Kerr BH Event Horizon, given as follows (in Geometrized +units): + +.. image:: 5.png + :align: center + +This is replaced with the expression for the Inner Most Circular Orbit +(ISCO), which is dependent on :math:`a`, while considering Radiative Transfer +calculations, vis-a-vis a Keplerian Disk. As for the outer (or farther) +limit, we can set it arbitrarily, depending on the BH features, we wish +to study. For example, for a Keplerian Disk, the outer limit is much +larger, than for plotting null geodesics. + +Radiative Transfer +^^^^^^^^^^^^^^^^^^ + +As ray-traced photons travel close to the BH, their intensities, +:math:`I_\nu`, change due to frequency shifts caused by the motion of the +plasma. To account for this frequency shift, a correction from the +observed frequency :math:`I_{\nu,\:Obs}` to the local frequency :math:`I_\nu` +is required at every point along the ray, because physical processes +take place in the local comoving frame. For this portion of the module, +we will follow the formulation in Section 3 of ``RAPTOR`` or Section 2.3 +of ``Odyssey``. Both papers use the same second order ODE with Optical +Depth (:math:`\tau`) as a parameter, however ``Odyssey`` decouples them into +two first order ODEs and ``RAPTOR`` makes some modifications to make the +integration numerically performant. We will be using these +modifications. The final set of ODEs, that will be integrated along the +geodesic (backward in time), are given below (Eqs. 30 & 31 in +``Odyssey`` or Eqs. 36 & 37 in ``RAPTOR``): + +.. image:: 6-7.png + :align: center + +Here, :math:`j` and :math:`\alpha` are respectively, the Emission and Absorption +Coefficients, evaluated at a frequency, :math:`\nu`; and :math:`\gamma` is the +Relative Energy Shift, between radiation emitted from material +circulating around the black hole, with 4-velocity, :math:`U^\alpha`, and the +radiation, that is received by a distant observer (at +:math:`\lambda_{Obs}`). It is given as follows: + +.. image:: 8.png + :align: center + +Since, we calculate the covariant 4-momentum (:math:`P_\alpha` or +:math:`k_\alpha`) at each integration step for Eqs. (3) and (4), we can use +these values directly to compute :math:`\gamma`. Eq. (8), along with Eqs. (6) +and (7) give us the photon intensities. + +E. Notes: +~~~~~~~~~ + +#. In ``Gray2``, the authors use KS Coordinates, instead of BL. Their + claim is that, this helps with the overall stability of the solver, + as we do not have to worry about the polar singularities of BL + coordinates. In addition to this, they have opened up Christoffel + Symbols, :math:`\Gamma`, into metric derivatives and combined the + symmetrized terms, claiming performance improvements, from doing so. + These claims need to be verified, but nonetheless provide a potential + source of optimization for the module. +#. In this module, we will not include Compton scattering, refraction + effects and polarization effects due to the plasma. Optical Depth is + the main parameter for our plasma models. + +F. Module Structure +~~~~~~~~~~~~~~~~~~~ + +I have listed the major structural components of the module below. +Please note, that module/class/function names are subject to change, as +the module develops. + +1. Null Geodesics Integrator +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +First, we require a ``NullGeodesic`` class, that inherits from (a +modified version of) ``einsteinpy.Geodesic``, to solve Eqs. (3) & (4) +and get the geodesics. This will be able to simulate a photon sheet, +leading to obtaining Black Hole Shadows. A photon sheet is simply a +bundle of parallel photons, ray-traced to the BH. For this class, we can +have the following structure: + +:: + + NullGeodesic(Geodesic) + | + |--- initialize_photon() : To initialize the length-8 initial_photon_vector, at a particular pixel in the camera/image + | + |--- _stepsize() : Calculates optimal step-size, for the next integration step (Based on `RAPTOR`'s implementation) + | + |--- _connection_coef() : To calculate metric derivatives or Christoffel Symbols + | + |--- integrate() : Moves integration by 1 step + | : Calls all 3 methods + +For ``integrate()``, possible pathways are: + +1. Implement our own solver. Some preferable ones are: + + - RK45, with adaptive meshing - Higher accuracy, Stabler, Slower + - Verlet Integrator - Lower accuracy, Faster + - Adam-Bashforth-Moulton (Predictor-Corrector) Method - Medium accuracy, Most stable, Medium speed + +2. Use solvers provided in ``scipy.integrate``, like: + + - ``solve_ivp`` + - ``odeint`` + - ``RK45`` + +2. Time-Independent Radiative Transfer +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For this portion, we will create a ``RadiativeTransfer()`` class, that +will inherit ``NullGeodesic()`` from earlier. We can have the following +structure for this class: + +***To be updated*** + +:: + + RadiativeTransfer(NullGeodesic) + | + |--- _initialize_photon() : + | + +A noteworthy point is, if we decide to go with a ``RAPTOR``-like +implementation with simultaneous geodesic and radiative transfer +integration, ``numba`` optimizations may be insufficient and we may have +to go with CUDA/GPU code. For this, we can use ``cuPy`` or ``dask``. + + +References: +^^^^^^^^^^^ + +#. `Bronzwaer et al; RAPTOR I: Time-dependent radiative transfer in + arbitrary spacetimes + (2018) `__ +#. `Chan et al; GRay2: A General Purpose Geodesic Integrator for Kerr + Spacetimes + (2018) `__ +#. `Dexter et al; A FAST NEW PUBLIC CODE FOR COMPUTING PHOTON ORBITS IN + A KERR SPACETIME + (2009) `__ +#. `Pu et al; ODYSSEY: A PUBLIC GPU-BASED CODE FOR GENERAL RELATIVISTIC + RADIATIVE TRANSFER IN KERR SPACETIME + (2016) `__ +#. `Rummel et al; Constraining Fundamental Physics with the Event + Horizon Telescope (2019) `__ +#. `Yang et al; YNOGK: A NEW PUBLIC CODE FOR CALCULATING NULL GEODESICS + IN THE KERR SPACETIME + (2013) `__ + +For a relevant literature review and runtime profiling of various +implementations, including the papers cited in this document, please +check `here `__. + +-------------- + +Backward compatibility +---------------------- + +.. This section describes the ways in which the EPE breaks backward compatibility. + +This EPE does not break backward compatibility, but it can potentially +add to installation overheads with new dependencies, like ``cuPy`` or +``dask``. This is related to the Radiative Transfer portion of the +project. + +-------------- + +Alternatives +------------ + +.. If there were any alternative solutions to solving the same problem, they should +.. be discussed here, along with a justification for the chosen approach. + +Alternatives have been discussed `up here `__ + +-------------- + +Decision rationale +------------------ + + + From a28f213a4a17ef8d26052f016a8fbfc0389ad975 Mon Sep 17 00:00:00 2001 From: Jyotirmaya Shivottam <31299799+JeS24@users.noreply.github.com> Date: Mon, 18 May 2020 13:30:12 +0530 Subject: [PATCH 2/3] EPE00004: Added links --- EPE_00004/EPE_00004.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EPE_00004/EPE_00004.rst b/EPE_00004/EPE_00004.rst index 6f8cbbe..9c7e361 100644 --- a/EPE_00004/EPE_00004.rst +++ b/EPE_00004/EPE_00004.rst @@ -78,9 +78,9 @@ A. Approaches There are two main ways to achieve the aforementioned goals: #. Numerically Integrating the Geodesic Equation (References `1, 2, 3 & - 4 `__) + 4 `__) #. Implementing a semi-analytical solution, particular to the spacetime - (References `5 & 6 `__) + (References `5 & 6 `__) A brief comparison of these approaches on relevant factors, is given below: @@ -489,7 +489,7 @@ Alternatives .. If there were any alternative solutions to solving the same problem, they should .. be discussed here, along with a justification for the chosen approach. -Alternatives have been discussed `up here `__ +Alternatives have been discussed `up here `__. -------------- From 3476e6ffb5086eca77d6589cc2692f1909330c24 Mon Sep 17 00:00:00 2001 From: Jyotirmaya Shivottam <31299799+JeS24@users.noreply.github.com> Date: Mon, 18 May 2020 13:31:50 +0530 Subject: [PATCH 3/3] EPE00004: Edited Links --- EPE_00004/EPE_00004.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EPE_00004/EPE_00004.rst b/EPE_00004/EPE_00004.rst index 9c7e361..182be69 100644 --- a/EPE_00004/EPE_00004.rst +++ b/EPE_00004/EPE_00004.rst @@ -78,9 +78,9 @@ A. Approaches There are two main ways to achieve the aforementioned goals: #. Numerically Integrating the Geodesic Equation (References `1, 2, 3 & - 4 `__) + 4 <#references>`__) #. Implementing a semi-analytical solution, particular to the spacetime - (References `5 & 6 `__) + (References `5 & 6 <#references>`__) A brief comparison of these approaches on relevant factors, is given below: @@ -489,7 +489,7 @@ Alternatives .. If there were any alternative solutions to solving the same problem, they should .. be discussed here, along with a justification for the chosen approach. -Alternatives have been discussed `up here `__. +Alternatives have been discussed `up here <#a-approaches>`__. --------------