SpECTRE  v2024.04.12
gr::Solutions::HarmonicSchwarzschild Class Reference

Schwarzschild black hole in Cartesian coordinates with harmonic gauge. More...

#include <HarmonicSchwarzschild.hpp>

Classes

struct  Center
 
class  IntermediateComputer
 Computes the intermediates and quantities that we do not want to recompute across the solution's implementation. More...
 
class  IntermediateVars
 Computes and returns spacetime quantities of interest. More...
 
struct  internal_tags
 Tags defined for intermediates specific to the harmonic Schwarzschild solution. More...
 
struct  Mass
 

Public Types

using options = tmpl::list< Mass, Center >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using CachedBuffer = CachedTempBuffer< internal_tags::x_minus_center< DataType, Frame >, internal_tags::r< DataType >, internal_tags::one_over_r< DataType >, internal_tags::x_over_r< DataType, Frame >, internal_tags::m_over_r< DataType >, internal_tags::sqrt_f_0< DataType >, internal_tags::f_0< DataType >, internal_tags::two_m_over_m_plus_r< DataType >, internal_tags::two_m_over_m_plus_r_squared< DataType >, internal_tags::two_m_over_m_plus_r_cubed< DataType >, internal_tags::spatial_metric_rr< DataType >, internal_tags::one_over_spatial_metric_rr< DataType >, internal_tags::spatial_metric_rr_minus_f_0< DataType >, internal_tags::d_spatial_metric_rr< DataType >, internal_tags::d_f_0< DataType >, internal_tags::d_f_0_times_x_over_r< DataType, Frame >, internal_tags::f_1< DataType >, internal_tags::f_1_times_x_over_r< DataType, Frame >, internal_tags::f_2< DataType >, internal_tags::f_2_times_xxx_over_r_cubed< DataType, Frame >, internal_tags::f_3< DataType >, internal_tags::f_4< DataType >, gr::Tags::Lapse< DataType >, internal_tags::neg_half_lapse_cubed_times_d_spatial_metric_rr< DataType >, gr::Tags::Shift< DataType, 3, Frame >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< DataType, 3, Frame >, DerivSpatialMetric< DataType, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, 3, Frame > >, gr::Tags::DetSpatialMetric< DataType >, internal_tags::one_over_det_spatial_metric< DataType > >
 Buffer for caching computed intermediates and quantities that we do not want to recompute across the solution's implementation. More...
 
- Public Types inherited from gr::AnalyticSolution< 3_st >
using DerivLapse = ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< volume_dim >, Frame >
 
using DerivShift = ::Tags::deriv< gr::Tags::Shift< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
using DerivSpatialMetric = ::Tags::deriv< gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
using tags = tmpl::list< gr::Tags::Lapse< DataType >, ::Tags::dt< gr::Tags::Lapse< DataType > >, DerivLapse< DataType, Frame >, gr::Tags::Shift< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::Shift< DataType, volume_dim, Frame > >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, volume_dim, Frame > >, DerivSpatialMetric< DataType, Frame >, gr::Tags::SqrtDetSpatialMetric< DataType >, gr::Tags::ExtrinsicCurvature< DataType, volume_dim, Frame >, gr::Tags::InverseSpatialMetric< DataType, volume_dim, Frame > >
 

Public Member Functions

 HarmonicSchwarzschild (double mass, const std::array< double, volume_dim > &center, const Options::Context &context={})
 
 HarmonicSchwarzschild (const HarmonicSchwarzschild &)=default
 
HarmonicSchwarzschildoperator= (const HarmonicSchwarzschild &)=default
 
 HarmonicSchwarzschild (HarmonicSchwarzschild &&)=default
 
HarmonicSchwarzschildoperator= (HarmonicSchwarzschild &&)=default
 
 HarmonicSchwarzschild (CkMigrateMessage *)
 
template<typename DataType , typename Frame , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, volume_dim, Frame > &x, double, tmpl::list< Tags... >) const
 Computes and returns spacetime quantities for a Schwarzschild black hole with harmonic coordinates at a specific Cartesian position. More...
 
void pup (PUP::er &p)
 
double mass () const
 Return the mass of the black hole.
 
const std::array< double, volume_dim > & center () const
 Return the center of the black hole.
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from gr::AnalyticSolution< 3_st >
static constexpr size_t volume_dim
 

Detailed Description

Schwarzschild black hole in Cartesian coordinates with harmonic gauge.

Details

This solution represents a Schwarzschild black hole in coordinates that are harmonic in both space and time, as well as horizon-penetrating. Therefore, this solution fulfills the harmonic coordinate conditions Eq. (4.42), (4.44), and (4.45) in [13] :

\begin{align} {}^{(4)}\Gamma^a &= 0 \end{align}

\begin{align} (\partial_t - \beta^j \partial_j)\alpha &= -\alpha^2 K \end{align}

\begin{align} (\partial_t - \beta^j \partial_j)\beta^i &= -\alpha^2 (\gamma^{ij} \partial_j \ln \alpha - \gamma^{jk} \Gamma^i_{jk}) \end{align}

(Note that Eq. 4.45 in [13] is missing a minus sign in front of the \(\Gamma\)-contraction term)

We implement Eqs. (45)–(50) in [41] , which represent the zero-spin limit of the time-harmonic and horizon-penetrating slices of Kerr spacetime presented in the paper. We add the radial transformation \(r \to r + M\) to make the spatial coordinates harmonic as well (see Eq. (43) in [41] ), so the coordinates remain harmonic under boosts.

Consider a Schwarzschild black hole of mass \(M\) and center \(C^i\). The spacetime will be specified using Cartesian coordinates \(x^i\) that are spatially and temporally harmonic. A radius centered on the black hole is

\begin{align} r &= \sqrt{\delta_{ij} \left(x^i - C^i\right)\left(x^j - C^j\right)} \end{align}

For computing the spatial metric, we define the following quantities:

\begin{align} \gamma_{rr} &= 1 + \frac{2M}{M+r} + \left(\frac{2M}{M+r}\right)^2 + \left(\frac{2M}{M+r}\right)^3,\\ \partial_r \gamma_{rr} &= -\frac{1}{2M}\left(\frac{2M}{M+r}\right)^2 -\frac{1}{M}\left(\frac{2M}{M+r}\right)^3 -\frac{3}{2M}\left(\frac{2M}{M+r}\right)^4,\\ \frac{X^i}{r} &= \frac{x^i - C^i}{r},\\ X_j &= X^i \delta_{ij} \end{align}

From these quantities, the spatial metric and its time derivative are computed as

\begin{align} \gamma_{ij} &= \left(\gamma_{rr} - \left(1+\frac{M}{r}\right)^2\right) \frac{X_i}{r} \frac{X_j}{r} + \delta_{ij} \left(1+\frac{M}{r}\right)^2,\\ \partial_t \gamma_{ij} &= 0 \end{align}

The spatial derivative is given in terms of the following quantities:

\begin{align} f_0 &= \left(1+\frac{M}{r}\right)^2\\ \partial_r f_0 &= 2 \left(1+\frac{M}{r}\right)\left(-\frac{M}{r^2}\right),\\ f_1 &= \frac{1}{r} \left(\gamma_{rr} - f_0\right),\\ f_2 &= \partial_r \gamma_{rr} - \partial_r f_0 - 2 f_1 \end{align}

In terms of these, the spatial metric's spatial derivative is

\begin{align} \partial_k \gamma_{ij} &= f_2 \frac{X_i}{r} \frac{X_j}{r} \frac{X_k}{r} + f_1 \frac{X_j}{r} \delta_{ik} + f_1 \frac{X_i}{r} \delta_{jk} + \partial_r f_0 \frac{X_k}{r} \delta_{ij} \end{align}

The lapse and its derivatives are

\begin{align} \alpha &= \gamma_{rr}^{-1/2},\\ \partial_t \alpha &= 0,\\ \partial_i \alpha &= -\frac{1}{2} \gamma_{rr}^{-3/2} \partial_r \gamma_{rr} \frac{X_i}{r} \end{align}

The shift and its time derivative are

\begin{align} \beta^i &= \left(\frac{2M}{M+r}\right)^2 \frac{X^i}{r} \frac{1}{\gamma_{rr}},\\ \partial_t \beta^i &= 0 \end{align}

The spatial derivative of the shift is computed in terms of the following quantities:

\begin{align} f_3 &= \frac{1}{r} \frac{1}{\gamma_{rr}} \left(\frac{2M}{M+r}\right)^2,\\ f_4 &= -f_3 - \frac{1}{M} \frac{1}{\gamma_{rr}} \left(\frac{2M}{M+r}\right)^3 - \partial_r \gamma_{rr} \left(\frac{2 M}{M+r} \frac{1}{\gamma_{rr}}\right)^2 \end{align}

In terms of these, the shift's spatial derivative is

\begin{align} \partial_k \beta^i &= f_4 \frac{X^i}{r} \frac{X_k}{r} + \delta_k^i f_3 \end{align}

Member Typedef Documentation

◆ CachedBuffer

Buffer for caching computed intermediates and quantities that we do not want to recompute across the solution's implementation.

Details

See internal_tags documentation for details on what quantities the internal tags represent

Member Function Documentation

◆ variables()

template<typename DataType , typename Frame , typename... Tags>
tuples::TaggedTuple< Tags... > gr::Solutions::HarmonicSchwarzschild::variables ( const tnsr::I< DataType, volume_dim, Frame > &  x,
double  ,
tmpl::list< Tags... >   
) const
inline

Computes and returns spacetime quantities for a Schwarzschild black hole with harmonic coordinates at a specific Cartesian position.

Parameters
xCartesian coordinates of the position at which to compute spacetime quantities

Member Data Documentation

◆ help

constexpr Options::String gr::Solutions::HarmonicSchwarzschild::help
staticconstexpr
Initial value:
{
"Schwarzschild black hole in Cartesian coordinates with harmonic gauge"}

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