SpECTRE  v2021.12.06
domain::CoordinateMaps::KerrHorizonConforming Class Reference

Distorts cartesian coordinates \(x^i\) such that a coordinate sphere \(\delta_{ij}x^ix^j=C\) is mapped to an ellipsoid of constant Kerr-Schild radius \(r=C\). More...

#include <KerrHorizonConforming.hpp>

Public Member Functions

 KerrHorizonConforming (std::array< double, 3 > spin)
 
template<typename T >
std::array< tt::remove_cvref_wrap_t< T >, 3 > operator() (const std::array< T, 3 > &source_coords) const
 
std::optional< std::array< double, 3 > > inverse (const std::array< double, 3 > &target_coords) const
 
template<typename T >
tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFramejacobian (const std::array< T, 3 > &source_coords) const
 
template<typename T >
tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrameinv_jacobian (const std::array< T, 3 > &source_coords) const
 
bool is_identity () const
 
void pup (PUP::er &p)
 

Static Public Attributes

static constexpr size_t dim = 3
 

Friends

bool operator== (const KerrHorizonConforming &lhs, const KerrHorizonConforming &rhs)
 

Detailed Description

Distorts cartesian coordinates \(x^i\) such that a coordinate sphere \(\delta_{ij}x^ix^j=C\) is mapped to an ellipsoid of constant Kerr-Schild radius \(r=C\).

The Kerr-Schild radius \(r\) is defined as the largest positive root of

\begin{equation*} r^4 - r^2 (x^2 - a^2) - (\vec{a}\cdot \vec{x})^2 = 0. \end{equation*}

In this equation, \(\vec{x}\) are the coordinates of the (distorted) surface, and \(\vec{a}=\vec{S}/M\) is the spin-parameter of the black hole. This is equivalent to the implicit definition of \(r\) in Eq. (47) of [77]. The black hole is assumed to be at the origin.

Details

Given a spin vector \(\vec{a}\), we define the Kerr-Schild radius:

\begin{equation}r(\vec{x}) = \sqrt{\frac{x^2 - a^2 + \sqrt{(x^2 - a^2)^2 + 4 (\vec{x} \cdot \vec{a})^2}}{2}} \end{equation}

We also define the auxiliary variable:

\begin{equation}s(\vec{x}) = \frac{x^2(x^2 + a^2)}{x^4 + (\vec{x} \cdot \vec{a})^2} \end{equation}

The map is then given by:

\begin{equation}\vec{x}(\vec{\xi}) = \vec{\xi} \sqrt{s(\vec{\xi})} \end{equation}

The inverse map is given by:

\begin{equation}\vec{\xi}(\vec{x}) = \vec{x} \frac{r(\vec{x})}{|\vec{x}|} \end{equation}

The jacobian is:

\begin{equation} \frac{\partial \xi^i}{\partial x^j} = \delta_{ij} \sqrt{s(\vec{\xi})} + \frac{\xi_j}{2 \sqrt{s(\vec{\xi})}} \frac{4\xi^2(1 - s(\vec{\xi})) \xi_j + 2a^2\xi_i + 2 s(\vec{\xi}) (\vec{\xi} \cdot \vec{a}) a_i}{\xi^4 + (\vec{\xi} \cdot \vec{a})^2} \end{equation}

The inverse jacobian is:

\begin{equation}\frac{\partial x^i}{\partial \xi^j} = \delta_{ij}\frac{r(\vec{x})}{|\vec{x}|} + \frac{r(\vec{x})^2 x_i + (\vec{x} \cdot \vec{a})a_i}{2r(\vec{x})^3 - r(\vec{x}) (x^2 - a^2)}\frac{x_j}{|\vec{x}|} - \frac{r(\vec{x}) x_i x_j}{x^3} \end{equation}

Constructor & Destructor Documentation

◆ KerrHorizonConforming()

domain::CoordinateMaps::KerrHorizonConforming::KerrHorizonConforming ( std::array< double, 3 >  spin)
explicit

constructs a Kerr horizon conforming map.

Parameters
spin: the dimensionless spin

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