SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
domain::CoordinateMaps::KerrHorizonConforming Class Reference

Distorts cartesian coordinates xi such that a coordinate sphere δijxixj=C2 is mapped to an ellipsoid of constant Kerr-Schild radius r=C. More...

#include <KerrHorizonConforming.hpp>

Public Member Functions

 KerrHorizonConforming (const double mass, std::array< double, 3 > dimensionless_spin)
 Constructs a Kerr horizon conforming map. More...
 
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 xi such that a coordinate sphere δijxixj=C2 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

r4r2(x2a2)(ax)2=0.

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

Details

Given a spin vector a, we define the Kerr-Schild radius:

(1)r(x)=x2a2+(x2a2)2+4(xa)22

We also define the auxiliary variable:

(2)s(x)=x2(x2+a2)x4+(xa)2

The map is then given by:

(3)x(ξ)=ξs(ξ)

The inverse map is given by:

(4)ξ(x)=xr(x)|x|

The jacobian is:

(5)ξixj=δijs(ξ)+ξj2s(ξ)4ξ2(1s(ξ))ξj+2a2ξi+2s(ξ)(ξa)aiξ4+(ξa)2

The inverse jacobian is:

(6)xiξj=δijr(x)|x|+r(x)2xi+(xa)ai2r(x)3r(x)(x2a2)xj|x|r(x)xixjx3

Constructor & Destructor Documentation

◆ KerrHorizonConforming()

domain::CoordinateMaps::KerrHorizonConforming::KerrHorizonConforming ( const double  mass,
std::array< double, 3 >  dimensionless_spin 
)
explicit

Constructs a Kerr horizon conforming map.

Parameters
massThe Kerr mass parameter M
dimensionless_spinThe dimensionless spin χ=a/M=S/M2, where M is the Kerr mass parameter, S is the angular momentum or quasilocal spin, and a is the Kerr spin parameter.
Note
The horizon depends only on the dimensionful spin parameter a=Mχ. This constructor takes M and χ separately for consistency with other code such as gr::Solutions::KerrSchild, and hence to avoid bugs where the wrong spin quantity is used accidentally.

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