SpECTRE  v2024.09.29
Cce::Solutions::GaugeWave Struct Reference

Computes the analytic data for a gauge wave solution described in [11]. More...

#include <GaugeWave.hpp>

Classes

struct  Amplitude
 
struct  Duration
 
struct  ExtractionRadius
 
struct  Frequency
 
struct  Mass
 
struct  PeakTime
 

Public Types

using options = tmpl::list< ExtractionRadius, Mass, Frequency, Amplitude, PeakTime, Duration >
 
- Public Types inherited from Cce::Solutions::WorldtubeData
using creatable_classes = tmpl::list< BouncingBlackHole, GaugeWave, LinearizedBondiSachs, RobinsonTrautman, RotatingSchwarzschild, TeukolskyWave >
 
using tags = tmpl::list< Tags::CauchyCartesianCoords, Tags::Dr< Tags::CauchyCartesianCoords >, gr::Tags::SpacetimeMetric< DataVector, 3 >, ::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > >, gh::Tags::Pi< DataVector, 3 >, gh::Tags::Phi< DataVector, 3 >, gr::Tags::SpatialMetric< DataVector, 3 >, ::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > >, Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > >, gr::Tags::Shift< DataVector, 3 >, ::Tags::dt< gr::Tags::Shift< DataVector, 3 > >, Tags::Dr< gr::Tags::Shift< DataVector, 3 > >, gr::Tags::Lapse< DataVector >, ::Tags::dt< gr::Tags::Lapse< DataVector > >, Tags::Dr< gr::Tags::Lapse< DataVector > >, Tags::News >
 The set of available tags provided by the analytic solution.
 

Public Member Functions

 WRAPPED_PUPable_decl_template (GaugeWave)
 
 GaugeWave (CkMigrateMessage *msg)
 
 GaugeWave (double extraction_radius, double mass, double frequency, double amplitude, double peak_time, double duration)
 
std::unique_ptr< WorldtubeDataget_clone () const override
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from Cce::Solutions::SphericalMetricData
 WRAPPED_PUPable_abstract (SphericalMetricData)
 
 SphericalMetricData (CkMigrateMessage *msg)
 
 SphericalMetricData (const double extraction_radius)
 
void jacobian (gsl::not_null< SphericaliCartesianJ * > jacobian, size_t l_max) const
 
void inverse_jacobian (gsl::not_null< CartesianiSphericalJ * > inverse_jacobian, size_t l_max) const
 
void dr_inverse_jacobian (gsl::not_null< CartesianiSphericalJ * > dr_inverse_jacobian, size_t l_max) const
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from Cce::Solutions::WorldtubeData
 WRAPPED_PUPable_abstract (WorldtubeData)
 
 WorldtubeData (const double extraction_radius)
 
 WorldtubeData (CkMigrateMessage *msg)
 
virtual std::unique_ptr< WorldtubeDataget_clone () const =0
 
template<typename... Tags>
tuples::TaggedTuple< Tags... > variables (const size_t output_l_max, const double time, tmpl::list< Tags... >) const
 Retrieve worldtube data represented by the analytic solution, at boundary angular resolution l_max and time time More...
 
void pup (PUP::er &p) override
 
virtual std::unique_ptr< Cce::InitializeJ::InitializeJ< false > > get_initialize_j (const double) const
 
virtual bool use_noninertial_news () const
 

Static Public Attributes

static constexpr Options::String help
 

Protected Member Functions

void prepare_solution (const size_t, const double) const override
 A no-op as the gauge wave solution does not have substantial shared computation to prepare before the separate component calculations. More...
 
void spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > spherical_metric, size_t l_max, double time) const override
 Compute the spherical coordinate metric from the closed-form gauge wave metric. More...
 
void dr_spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > dr_spherical_metric, size_t l_max, double time) const override
 Compute the radial derivative of the spherical coordinate metric from the closed-form gauge wave metric. More...
 
void dt_spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > dt_spherical_metric, size_t l_max, double time) const override
 Compute the spherical coordinate metric from the closed-form gauge wave metric. More...
 
void variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > News, size_t l_max, double time, tmpl::type_< Tags::News >) const override
 The News vanishes, because the wave is pure gauge. More...
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::CauchyCartesianCoords >) const
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > dr_cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::Dr< Tags::CauchyCartesianCoords > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > spacetime_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >) const=0
 Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > dt_spacetime_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >) const=0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > pi, size_t output_l_max, double time, tmpl::type_< gh::Tags::Pi< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< gh::Tags::Phi< DataVector, 3 > >) const=0
 Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > spatial_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpatialMetric< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dt_spatial_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dr_spatial_metric, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > shift, size_t output_l_max, double time, tmpl::type_< gr::Tags::Shift< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dt_shift, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dr_shift, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > lapse, size_t output_l_max, double time, tmpl::type_< gr::Tags::Lapse< DataVector > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dt_lapse, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dr_lapse, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > news, size_t output_l_max, double time, tmpl::type_< Tags::News >) const=0
 
void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > spacetime_metric, size_t l_max, double time, tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >) const override
 Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > dt_spacetime_metric, size_t l_max, double time, tmpl::type_< ::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >) const override
 Computes the time derivative of the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t l_max, double time, tmpl::type_< gh::Tags::Phi< DataVector, 3 > >) const override
 Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
- Protected Member Functions inherited from Cce::Solutions::SphericalMetricData
void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > spacetime_metric, size_t l_max, double time, tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >) const override
 Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > dt_spacetime_metric, size_t l_max, double time, tmpl::type_< ::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >) const override
 Computes the time derivative of the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t l_max, double time, tmpl::type_< gh::Tags::Phi< DataVector, 3 > >) const override
 Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes. More...
 
virtual void spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > spherical_metric, size_t l_max, double time) const =0
 Must be overriden in the derived class; should compute the spacetime metric of the analytic solution in spherical coordinates. More...
 
virtual void dr_spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > dr_spherical_metric, size_t l_max, double time) const =0
 Must be overriden in the derived class; should compute the first radial derivative of the spacetime metric of the analytic solution in spherical coordinates. More...
 
virtual void dt_spherical_metric (gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * > dt_spherical_metric, size_t l_max, double time) const =0
 Must be overriden in the derived class; should compute the first time derivative of the spacetime metric of the analytic solution in spherical coordinates. More...
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::CauchyCartesianCoords >) const
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > dr_cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::Dr< Tags::CauchyCartesianCoords > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > spacetime_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >) const=0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > dt_spacetime_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >) const=0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > pi, size_t output_l_max, double time, tmpl::type_< gh::Tags::Pi< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< gh::Tags::Phi< DataVector, 3 > >) const=0
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > spatial_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpatialMetric< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dt_spatial_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dr_spatial_metric, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > shift, size_t output_l_max, double time, tmpl::type_< gr::Tags::Shift< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dt_shift, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dr_shift, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > lapse, size_t output_l_max, double time, tmpl::type_< gr::Tags::Lapse< DataVector > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dt_lapse, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dr_lapse, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > news, size_t output_l_max, double time, tmpl::type_< Tags::News >) const=0
 
- Protected Member Functions inherited from Cce::Solutions::WorldtubeData
template<typename Tag >
const auto & cache_or_compute (const size_t output_l_max, const double time) const
 
virtual void prepare_solution (size_t output_l_max, double time) const =0
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::CauchyCartesianCoords >) const
 
virtual void variables_impl (gsl::not_null< tnsr::i< DataVector, 3 > * > dr_cartesian_coordinates, size_t output_l_max, double time, tmpl::type_< Tags::Dr< Tags::CauchyCartesianCoords > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > spacetime_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >) const =0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > dt_spacetime_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >) const =0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > pi, size_t output_l_max, double time, tmpl::type_< gh::Tags::Pi< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< gh::Tags::Phi< DataVector, 3 > >) const =0
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > spatial_metric, size_t output_l_max, double time, tmpl::type_< gr::Tags::SpatialMetric< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dt_spatial_metric, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::ii< DataVector, 3 > * > dr_spatial_metric, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > shift, size_t output_l_max, double time, tmpl::type_< gr::Tags::Shift< DataVector, 3 > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dt_shift, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::I< DataVector, 3 > * > dr_shift, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Shift< DataVector, 3 > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > lapse, size_t output_l_max, double time, tmpl::type_< gr::Tags::Lapse< DataVector > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dt_lapse, size_t output_l_max, double time, tmpl::type_<::Tags::dt< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< DataVector > * > dr_lapse, size_t output_l_max, double time, tmpl::type_< Tags::Dr< gr::Tags::Lapse< DataVector > > >) const
 
virtual void variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > news, size_t output_l_max, double time, tmpl::type_< Tags::News >) const =0
 

Protected Attributes

double mass_ = std::numeric_limits<double>::signaling_NaN()
 
double frequency_ = std::numeric_limits<double>::signaling_NaN()
 
double amplitude_ = std::numeric_limits<double>::signaling_NaN()
 
double peak_time_ = std::numeric_limits<double>::signaling_NaN()
 
double duration_ = std::numeric_limits<double>::signaling_NaN()
 
- Protected Attributes inherited from Cce::Solutions::WorldtubeData
IntermediateCacheTuple intermediate_cache_
 
double extraction_radius_ = std::numeric_limits<double>::quiet_NaN()
 

Additional Inherited Members

- Static Public Member Functions inherited from Cce::Solutions::SphericalMetricData
static void dr_jacobian (gsl::not_null< SphericaliCartesianJ * > dr_jacobian, size_t l_max)
 
- Protected Types inherited from Cce::Solutions::WorldtubeData
using IntermediateCacheTuple = tuples::tagged_tuple_from_typelist< tmpl::transform< tmpl::list< Tags::CauchyCartesianCoords, Tags::Dr< Tags::CauchyCartesianCoords >, gr::Tags::SpacetimeMetric< DataVector, 3 >, gh::Tags::Pi< DataVector, 3 >, gh::Tags::Phi< DataVector, 3 >, gr::Tags::SpatialMetric< DataVector, 3 >, gr::Tags::Shift< DataVector, 3 >, gr::Tags::Lapse< DataVector >, ::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > >, ::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > >, ::Tags::dt< gr::Tags::Shift< DataVector, 3 > >, ::Tags::dt< gr::Tags::Lapse< DataVector > >, Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > >, Tags::Dr< gr::Tags::Shift< DataVector, 3 > >, Tags::Dr< gr::Tags::Lapse< DataVector > >, Tags::News >, tmpl::bind< IntermediateCacheTag, tmpl::_1 > > >
 

Detailed Description

Computes the analytic data for a gauge wave solution described in [11].

Details

This test computes an analytic solution of a pure-gauge perturbation of the Schwarzschild metric. The gauge perturbation is constructed using the time-dependent coordinate transformation of the ingoing Eddington-Finklestein coordinate \(\nu \rightarrow \nu + F(t - r) / r\), where

\[ F(u) = A \sin(\omega u) e^{- (u - u_0)^2 / k^2}. \]

Note
In the paper [11], a translation map was applied to the solution to make the test more demanding. For simplicity, we omit that extra map. The behavior of translation-independence is tested by the Cce::Solutions::BouncingBlackHole solution.

Member Function Documentation

◆ dr_spherical_metric()

void Cce::Solutions::GaugeWave::dr_spherical_metric ( gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * >  dr_spherical_metric,
size_t  l_max,
double  time 
) const
overrideprotectedvirtual

Compute the radial derivative of the spherical coordinate metric from the closed-form gauge wave metric.

Details

The transformation of the ingoing Eddington-Finkelstein coordinate produces the radial derivative of the metric components in spherical coordinates:

\begin{align*} \partial_r g_{tt} + \partial_t g_{tt} =& \frac{2}{r^4} \left[r + \partial_u F(u)\right] \left[- M r + (r - 3 M)\partial_u F(u)\right] \\ \partial_r g_{rt} + \partial_t g_{rt} =& - \frac{1}{r^5} \left\{2 M r^3 + 2 r F(u) (r - 3M) + \partial_u F(u)[r^3 + F(u)(3r - 8 M)] + 2 r [\partial_u F(u)]^2 (r - 3M)\right\}\\ \partial_r g_{rr} + \partial_t g_{rr} =& \frac{2}{r^6} \left\{- M r^4 + F(u)^2 (2r - 5M) + \partial_u F(u) r^2 \left[4 M r + \partial_u F(u) (r - 3 M)\right] + F(u) r \left[6 M r + \partial_u F(u) (3r - 8 M)\right]\right\} \\ g_{\theta \theta} =& 2 r \\ g_{\phi \phi} =& 2 r \sin^2(\theta), \end{align*}

and all other components vanish (these formulae are obtained simply by applying radial derivatives to those given in GaugeWave::spherical_metric()). Here, \(F(u)\) is defined as

\begin{align*} F(u) &= A \sin(\omega u) e^{-(u - u_0)^2 /k^2},\\ \partial_u F(u) &= A \left[-2 \frac{u - u_0}{k^2} \sin(\omega u) + \omega \cos(\omega u)\right] e^{-(u - u_0)^2 / k^2}. \end{align*}

Warning
The \(\phi\) components are returned in a form for which the \(\sin(\theta)\) factors are omitted, assuming that derivatives and Jacobians will be applied similarly omitting those factors (and therefore improving precision of the tensor expression). If you require the \(\sin(\theta)\) factors, be sure to put them in by hand in the calling code.

Implements Cce::Solutions::SphericalMetricData.

◆ dt_spherical_metric()

void Cce::Solutions::GaugeWave::dt_spherical_metric ( gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * >  dt_spherical_metric,
size_t  l_max,
double  time 
) const
overrideprotectedvirtual

Compute the spherical coordinate metric from the closed-form gauge wave metric.

Details

The transformation of the ingoing Eddington-Finkelstein coordinate produces metric components in spherical coordinates:

\begin{align*} \partial_t g_{tt} =& \frac{-2 \partial_u^2 F(u)}{r^3} \left(r - 2 M\right) \left(r + \partial_u F(u)\right) \\ \partial_t g_{rt} =& \frac{1}{r^4} \Bigg\{\partial_u^2 F(u) \left[2 M r^2 + \left(r - 2 M\right) (r \partial_u F(u) + F(u))\right] \\ &+ \left[r + \partial_u F(u)\right] \left(r - 2M\right) \left[r \partial_u^2 F(u) + \partial_u F(u) \right]\Bigg\} \\ \partial_t g_{rr} =& \frac{1}{r^5}\Bigg\{-\left[r \partial_u^2 F(u) + \partial_u F(u)\right] \left[r^3 + 2 M r^2 + \left(r - 2 M\right) \left(r \partial_u F(u) + F(u)\right)\right]\\ &+ \left[r^2 - r \partial_u F(u) - F(u)\right] \left(r - 2 M\right) \left[r \partial_u^2 F(u) + \partial_u F(u)\right]\Bigg\} \\ \partial_t g_{\theta \theta} =& 0 \\ \partial_t g_{\phi \phi} =& 0, \end{align*}

and all other components vanish. Here, \(F(u)\) is defined as

\begin{align*} F(u) &= A \sin(\omega u) e^{-(u - u_0)^2 /k^2},\\ \partial_u F(u) &= A \left[-2 \frac{u - u_0}{k^2} \sin(\omega u) + \omega \cos(\omega u)\right] e^{-(u - u_0)^2 / k^2},\\ \partial^2_u F(u) &= \frac{A}{k^4} \left\{-4 k^2 \omega (u - u_0) \cos(\omega u) + \left[-2 k^2 + 4 (u - u_0)^2 - k^4 \omega^2\right] \sin(\omega u)\right\} e^{-(u - u_0) / k^2} \end{align*}

Warning
The \(\phi\) components are returned in a form for which the \(\sin(\theta)\) factors are omitted, assuming that derivatives and Jacobians will be applied similarly omitting those factors (and therefore improving precision of the tensor expression). If you require the \(\sin(\theta)\) factors, be sure to put them in by hand in the calling code.

Implements Cce::Solutions::SphericalMetricData.

◆ get_clone()

std::unique_ptr< WorldtubeData > Cce::Solutions::GaugeWave::get_clone ( ) const
overridevirtual

◆ prepare_solution()

void Cce::Solutions::GaugeWave::prepare_solution ( const  size_t,
const double   
) const
inlineoverrideprotectedvirtual

A no-op as the gauge wave solution does not have substantial shared computation to prepare before the separate component calculations.

Implements Cce::Solutions::WorldtubeData.

◆ spherical_metric()

void Cce::Solutions::GaugeWave::spherical_metric ( gsl::not_null< tnsr::aa< DataVector, 3, ::Frame::Spherical<::Frame::Inertial > > * >  spherical_metric,
size_t  l_max,
double  time 
) const
overrideprotectedvirtual

Compute the spherical coordinate metric from the closed-form gauge wave metric.

Details

The transformation of the ingoing Eddington-Finkelstein coordinate produces metric components in spherical coordinates (identical up to minor manipulations of the metric given in Eq. (149) of [11]):

\begin{align*} g_{tt} &= \frac{-1}{r^3}\left(r - 2 M\right) \left[r + \partial_u F(u)\right]^2\\ g_{rt} &= \frac{1}{r^4} \left[r + \partial_u F(u)\right] \left\{2 M r^2 + \left(r - 2 M\right) \left[r \partial_u F(u) + F(u)\right]\right\} \\ g_{rr} &= \frac{1}{r^5} \left[r^2 - r \partial_u F(u) - F(u)\right] \left\{r^3 + 2 M r^2 + \left(r - 2 M\right) \left[r \partial_u F(u) + F(u)\right]\right\} \\ g_{\theta \theta} &= r^2 \\ g_{\phi \phi} &= r^2 \sin^2(\theta), \end{align*}

and all other components vanish. Here, \(F(u)\) is defined as

\begin{align*} F(u) &= A \sin(\omega u) e^{-(u - u_0)^2 /k^2},\\ \partial_u F(u) &= A \left[-2 \frac{u - u_0}{k^2} \sin(\omega u) + \omega \cos(\omega u)\right] e^{-(u - u_0)^2 / k^2}. \end{align*}

Warning
The \(\phi\) components are returned in a form for which the \(\sin(\theta)\) factors are omitted, assuming that derivatives and Jacobians will be applied similarly omitting those factors (and therefore improving precision of the tensor expression). If you require the \(\sin(\theta)\) factors, be sure to put them in by hand in the calling code.

Implements Cce::Solutions::SphericalMetricData.

◆ variables_impl() [1/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< Scalar< DataVector > * >  dr_lapse,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::Dr< gr::Tags::Lapse< DataVector > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [2/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< Scalar< DataVector > * >  dt_lapse,
size_t  output_l_max,
double  time,
tmpl::type_<::Tags::dt< gr::Tags::Lapse< DataVector > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [3/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< Scalar< DataVector > * >  lapse,
size_t  output_l_max,
double  time,
tmpl::type_< gr::Tags::Lapse< DataVector > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [4/20]

void Cce::Solutions::GaugeWave::variables_impl ( gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * >  News,
size_t  l_max,
double  time,
tmpl::type_< Tags::News  
) const
overrideprotectedvirtual

The News vanishes, because the wave is pure gauge.

Implements Cce::Solutions::WorldtubeData.

◆ variables_impl() [5/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * >  news,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::News  
) const
protectedvirtual

◆ variables_impl() [6/20]

void Cce::Solutions::SphericalMetricData::variables_impl ( gsl::not_null< tnsr::aa< DataVector, 3 > * >  dt_spacetime_metric,
size_t  l_max,
double  time,
tmpl::type_< ::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >   
) const
overrideprotected

Computes the time derivative of the Cartesian spacetime metric from the spherical solution provided by the derived classes.

Details

The derived classes provide the time derivative of the spherical metric data via the virtual function SphericalMetricData::dt_spherical_metric() at a resolution determined by the l_max argument. This function performs the coordinate transformation using the Jacobian computed from SphericalMetricData::inverse_jacobian().

◆ variables_impl() [7/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::aa< DataVector, 3 > * >  dt_spacetime_metric,
size_t  output_l_max,
double  time,
tmpl::type_<::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > > >   
) const
protectedvirtual

◆ variables_impl() [8/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::aa< DataVector, 3 > * >  pi,
size_t  output_l_max,
double  time,
tmpl::type_< gh::Tags::Pi< DataVector, 3 > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [9/20]

void Cce::Solutions::SphericalMetricData::variables_impl ( gsl::not_null< tnsr::aa< DataVector, 3 > * >  spacetime_metric,
size_t  l_max,
double  time,
tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >   
) const
overrideprotectedvirtual

Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes.

Details

The derived classes provide spherical metric data via the virtual function SphericalMetricData::spherical_metric() at a resolution determined by the l_max argument. This function performs the coordinate transformation using the Jacobian computed from SphericalMetricData::inverse_jacobian().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ variables_impl() [10/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::aa< DataVector, 3 > * >  spacetime_metric,
size_t  l_max,
double  time,
tmpl::type_< gr::Tags::SpacetimeMetric< DataVector, 3 > >   
) const
protectedvirtual

Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes.

Details

The derived classes provide spherical metric data via the virtual function SphericalMetricData::spherical_metric() at a resolution determined by the l_max argument. This function performs the coordinate transformation using the Jacobian computed from SphericalMetricData::inverse_jacobian().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ variables_impl() [11/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::i< DataVector, 3 > * >  cartesian_coordinates,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::CauchyCartesianCoords  
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [12/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::i< DataVector, 3 > * >  dr_cartesian_coordinates,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::Dr< Tags::CauchyCartesianCoords > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [13/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::I< DataVector, 3 > * >  dr_shift,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::Dr< gr::Tags::Shift< DataVector, 3 > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [14/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::I< DataVector, 3 > * >  dt_shift,
size_t  output_l_max,
double  time,
tmpl::type_<::Tags::dt< gr::Tags::Shift< DataVector, 3 > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [15/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::I< DataVector, 3 > * >  shift,
size_t  output_l_max,
double  time,
tmpl::type_< gr::Tags::Shift< DataVector, 3 > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [16/20]

void Cce::Solutions::SphericalMetricData::variables_impl ( gsl::not_null< tnsr::iaa< DataVector, 3 > * >  d_spacetime_metric,
size_t  l_max,
double  time,
tmpl::type_< gh::Tags::Phi< DataVector, 3 > >   
) const
overrideprotectedvirtual

Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes.

Details

The derived classes provide the radial derivative of the spherical metric data via the virtual function SphericalMetricData::dr_spherical_metric() at a resolution determined by the l_max_ argument. This function performs the additional angular derivatives necessary to assemble the full spatial derivative and performs the coordinate transformation to Cartesian coordinates via the Jacobians computed in SphericalMetricData::inverse_jacobian() and SphericalMetricData::inverse_jacobian().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ variables_impl() [17/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::iaa< DataVector, 3 > * >  d_spacetime_metric,
size_t  l_max,
double  time,
tmpl::type_< gh::Tags::Phi< DataVector, 3 > >   
) const
protectedvirtual

Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes.

Details

The derived classes provide the radial derivative of the spherical metric data via the virtual function SphericalMetricData::dr_spherical_metric() at a resolution determined by the l_max_ argument. This function performs the additional angular derivatives necessary to assemble the full spatial derivative and performs the coordinate transformation to Cartesian coordinates via the Jacobians computed in SphericalMetricData::inverse_jacobian() and SphericalMetricData::inverse_jacobian().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ variables_impl() [18/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::ii< DataVector, 3 > * >  dr_spatial_metric,
size_t  output_l_max,
double  time,
tmpl::type_< Tags::Dr< gr::Tags::SpatialMetric< DataVector, 3 > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [19/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::ii< DataVector, 3 > * >  dt_spatial_metric,
size_t  output_l_max,
double  time,
tmpl::type_<::Tags::dt< gr::Tags::SpatialMetric< DataVector, 3 > > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ variables_impl() [20/20]

virtual void Cce::Solutions::WorldtubeData::variables_impl ( gsl::not_null< tnsr::ii< DataVector, 3 > * >  spatial_metric,
size_t  output_l_max,
double  time,
tmpl::type_< gr::Tags::SpatialMetric< DataVector, 3 > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

Member Data Documentation

◆ help

constexpr Options::String Cce::Solutions::GaugeWave::help
staticconstexpr
Initial value:
= {
"Analytic solution representing worldtube data for a pure-gauge "
"perturbation near a Schwarzschild metric in spherical coordinates"}

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