SpECTRE
v2024.04.12
|
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 > ¢er, const Options::Context &context={}) | |
HarmonicSchwarzschild (const HarmonicSchwarzschild &)=default | |
HarmonicSchwarzschild & | operator= (const HarmonicSchwarzschild &)=default |
HarmonicSchwarzschild (HarmonicSchwarzschild &&)=default | |
HarmonicSchwarzschild & | operator= (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 |
Schwarzschild black hole in Cartesian coordinates with harmonic gauge.
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}
Buffer for caching computed intermediates and quantities that we do not want to recompute across the solution's implementation.
See internal_tags
documentation for details on what quantities the internal tags represent
|
inline |
Computes and returns spacetime quantities for a Schwarzschild black hole with harmonic coordinates at a specific Cartesian position.
x | Cartesian coordinates of the position at which to compute spacetime quantities |
|
staticconstexpr |