## Progress so far…

The refactor of the `coordinates`

module of EinsteinPy was completed over the last week and PR #521 was merged. With this, EinsteinPy now supports 4-Position and 4-Velocity calculations. To better reflect these additions across EinsteinPy, a few changes were also made to `einsteinpy.metric`

and `einsteinpy.geodesic`

modules. All core modules of EinsteinPy are well-integrated now. As an aside, new metric and coordinate classes can now be added to the numerical side of EinsteinPy and we welcome community contributions for the same. Please refer to #525 for more details.

In my last blog, I had mentioned that this PR would also add support for Kerr-Schild (KS) coordinates and KS forms of the vacuum solutions. However, after discussions with my mentors, we have rejigged the schedule a bit and we are now prioritizing the implementation of Null Geodesics calculation and Radiative Transfer functionality in EinsteinPy, with the addition of KS coordinates becoming optional now. This has been put up as issue #526, and as before, community contributions are welcome. Nonetheless, as promised, let’s discuss what KS perturbations are and why KS coordinates are so interesting.

### A case of hard differential equations

Einstein’s Field Equations (EFE), at their core, describe a field theory for gravity, quite similar to how Maxwell’s Equations define a field theory for Electromagnetism. In Electromagnetism, electric and magnetic fields are basic physical entities, which both affect and are affected by a matter property called charge. Similarly, in GR, there is an underlying structure of spacetime, quantified by the metric tensor, which is calculated using EFE. These equations are second order, non-linear differential equations, which makes finding solutions for general matter-energy distributions rather difficult.

However, let’s say, we are only interested in cases, where the deviation from a known distribution is “small”, for example, when we go from a perfectly spherical body to a spheroidal body. In these cases, we can look for an approximate “perturbed” solution (metric) to this “perturbed” distribution by writing the approximate solution as $g_{ab}(\lambda) = {^0g_{ab}}(\lambda) + h_{ab}(\lambda)$, where $\lambda$ is a parameter, ${^0g_{ab}}$ is the known exact solution for the underlying distribution and $h_{ab}$ is a linear perturbation (“Linear”, as $g_{ab}$ depends on the first power of $h_{ab}$). Kerr-Schild perturbations are a way of linearizing EFE or to form linearized approximation to EFE. Note that, EFE are in general, non-linear. So, these approximations usually only describe the solution till the first order and higher order corrections become necessary as systems grow in complexity. However, Kerr-Schild class of perturbations is unique as all higher order corrections vanish.

### Kerr-Schild Perturbation

A generalized Kerr-Schild perturbation has the form:
\(h_{ab}^{KS}(\lambda) = V l_a l_b\)
where, $V$ is some scalar and $l$ are *one-forms* or *functionals*, defined with respect to the underlying or background metric, ${^0g_{ab}}$. A functional can be understood as a usual function, which outputs a number, but instead of accepting numbers as inputs, it takes in functions. Now, the form of $h_{ab}^{KS}$ might seem arbitrary. However, there are some reasonable constraints on this form. First among them is, for $\lambda \to 0$, we must recover ${^0g_{ab}}$. Also, $l$ must be *null* with respect to ${^0g_{ab}}$, i.e. ${^0g_{ab}}l_a l_b = 0 \implies {g_{ab}}l_a l_b = 0$. And, depending on the spacetime, there are additional properties that must be satisfied.

Due to the strictly linear nature of KS perturbations, we obtain some nice features for the perturbed metric, that can even be linked back to the background metric,${^0g_{ab}}$. For example, the causality of an arbitrary vector, $v^a$ is guaranteed to remain the same across ${^0g_{ab}}$ and $g_{ab}$. This implies timelike and spacelike vectors remain timelike and spacelike, respectively, even in the perturbed spacetime. This also extends to null geodesics, meaning that the two metrics have shared light rays. This property, in particular, is incredibly useful from the perspective of my project. But a more notable property is that, KS perturbations impose a structure on the Stress-Energy Tensor, $T_b^a$.

These properties make the KS forms of the metric particularly suited to describe vacuum solutions, on a flat underlying metric, such as Schwarzschild and Kerr solutions. In these cases, a particular set of coordinates, called the (cartesian form of) Kerr-Schild coordinates, are chosen to define $V$ and $l$. These coordinates are usually more involved than the most basic coordinate for the spacetime (such as Schwarzschild or Boyer-Lindquist Coordinates), but they have an interesting property, in that they expose the singularity structure well, with no coordinate singularities.

More interesting spacetimes, such as *pp*-waves and *anti-de Sitter* space can also be generated through KS perturbations. Not all solutions however, can be linearized to a KS form, as we only have three degrees of freedom in varying $V$ and $l$. Moreover, as is usual with perturbation techniques, it is difficult to estimate how small $\lambda$ must be, so that the approximation has sufficient accuracy. In any case, Perturbation Theory is a powerful mathematical tool, that most physicists use on a regular basis. A (surprisingly) simple and general introduction can be found at Wikipedia.

## Until next time…

While I am not working on KS perturbation functionality for EinsteinPy, at the moment, I have opened an issue (#526) for it. Addition of KS perturbed forms of metrics to EinsteinPy is relatively easy now, due to the structure of the Metric classes in `einsteinpy.metric`

. Feel free to take a look and contribute. Currently, I am working on the crux of the project - *Null Geodesics and Radiative Transfer in Kerr spacetime*, figuring out the equations and validating them for use with SI units, with proper unit conversions. Once this is done, I will start putting them into code and hopefully, we will soon have this new functionality ready to be merged into EinsteinPy and open to people for use. I expect my next blog to be on Null Geodesics.