SpECTRE  v2024.04.12
gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame > Class Template Reference

Computes the intermediates and quantities that we do not want to recompute across the solution's implementation. More...

#include <HarmonicSchwarzschild.hpp>

Public Types

using CachedBuffer = HarmonicSchwarzschild::CachedBuffer< DataType, Frame >
 

Public Member Functions

 IntermediateComputer (const HarmonicSchwarzschild &solution, const tnsr::I< DataType, 3, Frame > &x)
 Constructs a computer for spacetime quantities of a given gr::Solutions::HarmonicSchwarzschild solution at at a specific Cartesian position. More...
 
void operator() (gsl::not_null< tnsr::I< DataType, 3, Frame > * > x_minus_center, gsl::not_null< CachedBuffer * >, internal_tags::x_minus_center< DataType, Frame >) const
 Computes the intermediate defined by internal_tags::x_minus_center
 
void operator() (gsl::not_null< Scalar< DataType > * > r, gsl::not_null< CachedBuffer * > cache, internal_tags::r< DataType >) const
 Computes the radius defined by internal_tags::r
 
void operator() (gsl::not_null< Scalar< DataType > * > one_over_r, gsl::not_null< CachedBuffer * > cache, internal_tags::one_over_r< DataType >) const
 Computes the intermediate defined by internal_tags::one_over_r
 
void operator() (gsl::not_null< tnsr::I< DataType, 3, Frame > * > x_over_r, gsl::not_null< CachedBuffer * > cache, internal_tags::x_over_r< DataType, Frame >) const
 Computes the intermediate defined by internal_tags::x_over_r
 
void operator() (gsl::not_null< Scalar< DataType > * > m_over_r, gsl::not_null< CachedBuffer * > cache, internal_tags::m_over_r< DataType >) const
 Computes the intermediate defined by internal_tags::m_over_r
 
void operator() (gsl::not_null< Scalar< DataType > * > sqrt_f_0, gsl::not_null< CachedBuffer * > cache, internal_tags::sqrt_f_0< DataType >) const
 Computes the intermediate defined by internal_tags::sqrt_f_0
 
void operator() (gsl::not_null< Scalar< DataType > * > f_0, gsl::not_null< CachedBuffer * > cache, internal_tags::f_0< DataType >) const
 Computes the intermediate defined by internal_tags::f_0
 
void operator() (gsl::not_null< Scalar< DataType > * > two_m_over_m_plus_r, gsl::not_null< CachedBuffer * > cache, internal_tags::two_m_over_m_plus_r< DataType >) const
 Computes the intermediate defined by internal_tags::two_m_over_m_plus_r
 
void operator() (gsl::not_null< Scalar< DataType > * > two_m_over_m_plus_r_squared, gsl::not_null< CachedBuffer * > cache, internal_tags::two_m_over_m_plus_r_squared< DataType >) const
 Computes the intermediate defined by internal_tags::two_m_over_m_plus_r_squared
 
void operator() (gsl::not_null< Scalar< DataType > * > two_m_over_m_plus_r_cubed, gsl::not_null< CachedBuffer * > cache, internal_tags::two_m_over_m_plus_r_cubed< DataType >) const
 Computes the intermediate defined by internal_tags::two_m_over_m_plus_r_cubed
 
void operator() (gsl::not_null< Scalar< DataType > * > spatial_metric_rr, gsl::not_null< CachedBuffer * > cache, internal_tags::spatial_metric_rr< DataType >) const
 Computes the intermediate defined by internal_tags::spatial_metric_rr
 
void operator() (gsl::not_null< Scalar< DataType > * > one_over_spatial_metric_rr, gsl::not_null< CachedBuffer * > cache, internal_tags::one_over_spatial_metric_rr< DataType >) const
 Computes the intermediate defined by internal_tags::one_over_spatial_metric_rr
 
void operator() (gsl::not_null< Scalar< DataType > * > spatial_metric_rr_minus_f_0, gsl::not_null< CachedBuffer * > cache, internal_tags::spatial_metric_rr_minus_f_0< DataType >) const
 Computes the intermediate defined by internal_tags::spatial_metric_rr_minus_f_0
 
void operator() (gsl::not_null< Scalar< DataType > * > d_spatial_metric_rr, gsl::not_null< CachedBuffer * > cache, internal_tags::d_spatial_metric_rr< DataType >) const
 Computes the intermediate defined by internal_tags::d_spatial_metric_rr
 
void operator() (gsl::not_null< Scalar< DataType > * > d_f_0, gsl::not_null< CachedBuffer * > cache, internal_tags::d_f_0< DataType >) const
 Computes the intermediate defined by internal_tags::d_f_0
 
void operator() (gsl::not_null< tnsr::i< DataType, 3, Frame > * > d_f_0_times_x_over_r, gsl::not_null< CachedBuffer * > cache, internal_tags::d_f_0_times_x_over_r< DataType, Frame >) const
 Computes the intermediate defined by internal_tags::d_f_0_times_x_over_r
 
void operator() (gsl::not_null< Scalar< DataType > * > f_1, gsl::not_null< CachedBuffer * > cache, internal_tags::f_1< DataType >) const
 Computes the intermediate defined by internal_tags::f_1
 
void operator() (gsl::not_null< tnsr::i< DataType, 3, Frame > * > f_1_times_x_over_r, gsl::not_null< CachedBuffer * > cache, internal_tags::f_1_times_x_over_r< DataType, Frame >) const
 Computes the intermediate defined by internal_tags::f_1_times_x_over_r
 
void operator() (gsl::not_null< Scalar< DataType > * > f_2, gsl::not_null< CachedBuffer * > cache, internal_tags::f_2< DataType >) const
 Computes the intermediate defined by internal_tags::f_2
 
void operator() (gsl::not_null< tnsr::iii< DataType, 3, Frame > * > f_2_times_xxx_over_r_cubed, gsl::not_null< CachedBuffer * > cache, internal_tags::f_2_times_xxx_over_r_cubed< DataType, Frame >) const
 Computes the intermediate defined by internal_tags::f_2_times_xxx_over_r_cubed
 
void operator() (gsl::not_null< Scalar< DataType > * > f_3, gsl::not_null< CachedBuffer * > cache, internal_tags::f_3< DataType >) const
 Computes the intermediate defined by internal_tags::f_3
 
void operator() (gsl::not_null< Scalar< DataType > * > f_4, gsl::not_null< CachedBuffer * > cache, internal_tags::f_4< DataType >) const
 Computes the intermediate defined by internal_tags::f_4
 
void operator() (gsl::not_null< Scalar< DataType > * > lapse, gsl::not_null< CachedBuffer * > cache, gr::Tags::Lapse< DataType >) const
 Computes the lapse. More...
 
void operator() (gsl::not_null< Scalar< DataType > * > neg_half_lapse_cubed_times_d_spatial_metric_rr, gsl::not_null< CachedBuffer * > cache, internal_tags::neg_half_lapse_cubed_times_d_spatial_metric_rr< DataType >) const
 Computes the intermediate defined by internal_tags::neg_half_lapse_cubed_times_d_spatial_metric_rr
 
void operator() (gsl::not_null< tnsr::I< DataType, 3, Frame > * > shift, gsl::not_null< CachedBuffer * > cache, gr::Tags::Shift< DataType, 3, Frame >) const
 Computes the shift. More...
 
void operator() (gsl::not_null< tnsr::iJ< DataType, 3, Frame > * > deriv_shift, gsl::not_null< CachedBuffer * > cache, DerivShift< DataType, Frame >) const
 Computes the spatial derivative of the shift. More...
 
void operator() (gsl::not_null< tnsr::ii< DataType, 3, Frame > * > spatial_metric, gsl::not_null< CachedBuffer * > cache, gr::Tags::SpatialMetric< DataType, 3, Frame >) const
 Computes the spatial metric. More...
 
void operator() (gsl::not_null< tnsr::ijj< DataType, 3, Frame > * > deriv_spatial_metric, gsl::not_null< CachedBuffer * > cache, DerivSpatialMetric< DataType, Frame >) const
 Computes the spatial derivative of the spatial metric. More...
 
void operator() (gsl::not_null< tnsr::ii< DataType, 3, Frame > * > dt_spatial_metric, gsl::not_null< CachedBuffer * > cache, ::Tags::dt< gr::Tags::SpatialMetric< DataType, 3, Frame > >) const
 Sets the time derivative of the spatial metric to 0.
 
void operator() (gsl::not_null< Scalar< DataType > * > det_spatial_metric, gsl::not_null< CachedBuffer * > cache, gr::Tags::DetSpatialMetric< DataType >) const
 Computes the determinant of the spatial metric.
 
void operator() (gsl::not_null< Scalar< DataType > * > one_over_det_spatial_metric, gsl::not_null< CachedBuffer * > cache, internal_tags::one_over_det_spatial_metric< DataType >) const
 Computes one over the determinant of the spatial metric.
 

Detailed Description

template<typename DataType, typename Frame = ::Frame::Inertial>
class gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >

Computes the intermediates and quantities that we do not want to recompute across the solution's implementation.

Constructor & Destructor Documentation

◆ IntermediateComputer()

template<typename DataType , typename Frame = ::Frame::Inertial>
gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::IntermediateComputer ( const HarmonicSchwarzschild solution,
const tnsr::I< DataType, 3, Frame > &  x 
)

Constructs a computer for spacetime quantities of a given gr::Solutions::HarmonicSchwarzschild solution at at a specific Cartesian position.

Parameters
solutionthe given gr::Solutions::HarmonicSchwarzschild solution
xCartesian coordinates of the position at which to compute spacetime quantities

Member Function Documentation

◆ operator()() [1/5]

template<typename DataType , typename Frame = ::Frame::Inertial>
void gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::operator() ( gsl::not_null< Scalar< DataType > * >  lapse,
gsl::not_null< CachedBuffer * >  cache,
gr::Tags::Lapse< DataType >   
) const

Computes the lapse.

Details

Computed as

\begin{align} \alpha &= \gamma_{rr}^{-1/2} \end{align}

where \(\gamma_{rr}\) is a component of the spatial metric defined by internal_tags::spatial_metric_rr.

◆ operator()() [2/5]

template<typename DataType , typename Frame = ::Frame::Inertial>
void gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::operator() ( gsl::not_null< tnsr::I< DataType, 3, Frame > * >  shift,
gsl::not_null< CachedBuffer * >  cache,
gr::Tags::Shift< DataType, 3, Frame >   
) const

Computes the shift.

Details

Computed as

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

where \(M\) is the mass of the black hole, \(r\) is the radius defined by internal_tags::r, \(X^i\) is defined by internal_tags::x_minus_center, and \(\gamma_{rr}\) is defined by internal_tags::spatial_metric_rr.

◆ operator()() [3/5]

template<typename DataType , typename Frame = ::Frame::Inertial>
void gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::operator() ( gsl::not_null< tnsr::ii< DataType, 3, Frame > * >  spatial_metric,
gsl::not_null< CachedBuffer * >  cache,
gr::Tags::SpatialMetric< DataType, 3, Frame >   
) const

Computes the spatial metric.

Details

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 \end{align}

where \(M\) is the mass of the black hole, \(r\) is the radius defined by internal_tags::r, \(\gamma_{rr}\) is defined by internal_tags::spatial_metric_rr, and \(X_j = X^i \delta_{ij}\) where \(X^i\) is defined by internal_tags::x_minus_center.

◆ operator()() [4/5]

template<typename DataType , typename Frame = ::Frame::Inertial>
void gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::operator() ( gsl::not_null< tnsr::iJ< DataType, 3, Frame > * >  deriv_shift,
gsl::not_null< CachedBuffer * >  cache,
DerivShift< DataType, Frame >   
) const

Computes the spatial derivative of the shift.

Details

Computed as

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

where \(r\) is the radius defined by internal_tags::r, \(X^i\) is defined by internal_tags::x_minus_center, \(X_j = X^i \delta_{ij}\), \(f_3\) is defined by internal_tags::f_3, and \(f_4\) is defined by internal_tags::f_4.

◆ operator()() [5/5]

template<typename DataType , typename Frame = ::Frame::Inertial>
void gr::Solutions::HarmonicSchwarzschild::IntermediateComputer< DataType, Frame >::operator() ( gsl::not_null< tnsr::ijj< DataType, 3, Frame > * >  deriv_spatial_metric,
gsl::not_null< CachedBuffer * >  cache,
DerivSpatialMetric< DataType, Frame >   
) const

Computes the spatial derivative of the spatial metric.

Details

Computed as

\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}

where \(r\) is the radius defined by internal_tags::r, \(\partial_r f_0\) is defined by internal_tags::d_f_0, \(f_1\) is defined by internal_tags::f_1, \(f_2\) is defined by internal_tags::f_2, and \(X_j = X^i \delta_{ij}\) where \(X^i\) is defined by internal_tags::x_minus_center.


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