SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
Cce::Solutions::RotatingSchwarzschild Struct Reference

Computes the analytic data for the rotating Schwarzschild solution described in [11], section VI.C. More...

#include <RotatingSchwarzschild.hpp>

Classes

struct  ExtractionRadius
struct  Frequency
struct  Mass

Public Types

using options = tmpl::list<ExtractionRadius, Mass, Frequency>
Public Types inherited from Cce::Solutions::WorldtubeData
using creatable_classes
using tags
 The set of available tags provided by the analytic solution.

Public Member Functions

 WRAPPED_PUPable_decl_template (RotatingSchwarzschild)
 RotatingSchwarzschild (CkMigrateMessage *msg)
 RotatingSchwarzschild (double extraction_radius, double mass, double frequency)
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)
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
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 rotating Schwarzschild solution does not have substantial shared computation to prepare before the separate component calculations.
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 rotating Schwarzschild metric.
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 rotating Schwarzschild metric.
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
 The time derivative of the spherical coordinate metric in the rotating Schwarzschild metric vanishes.
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 in the rotating Schwarzschild metric.
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
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.
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.
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.
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.
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 > * > 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::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

Protected Attributes

double frequency_ = std::numeric_limits<double>::signaling_NaN()
double mass_ = 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

Detailed Description

Computes the analytic data for the rotating Schwarzschild solution described in [11], section VI.C.

Details

This is a comparatively simple test which simply determines the Schwarzschild metric in transformed coordinates given by \(\phi\rightarrow \phi + \omega u\), where \(u\) is the retarded time.

Member Function Documentation

◆ dr_spherical_metric()

void Cce::Solutions::RotatingSchwarzschild::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 rotating Schwarzschild metric.

Details

The rotating Schwarzschild takes the coordinate form [11],

\begin{align}\partial_r g_{a b} dx^a dx^b =& -\left(\frac{2 M}{r^2} - 2 \omega^2 r \sin^2 \theta\right) dt^2 - \frac{2 M}{(r - 2 M)^2} dr^2 + 4 \omega r \sin^2 \theta dt d\phi + 2 r d\Omega^2 \end{align}

Implements Cce::Solutions::SphericalMetricData.

◆ dt_spherical_metric()

void Cce::Solutions::RotatingSchwarzschild::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

The time derivative of the spherical coordinate metric in the rotating Schwarzschild metric vanishes.

Implements Cce::Solutions::SphericalMetricData.

◆ get_clone()

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

◆ prepare_solution()

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

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

Implements Cce::Solutions::WorldtubeData.

◆ spherical_metric()

void Cce::Solutions::RotatingSchwarzschild::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 rotating Schwarzschild metric.

Details

The rotating Schwarzschild takes the coordinate form [11],

\begin{align}ds^2 = -\left(1 - \frac{2 M}{r} - \omega^2 r^2 \sin^2 \theta\right) dt^2 + \frac{1}{1 - \frac{2 M}{r}} dr^2 + 2 \omega r^2 \sin^2 \theta dt d\phi + r^2 d\Omega^2 \end{align}

Implements Cce::Solutions::SphericalMetricData.

◆ variables_impl() [1/17]

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/17]

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/17]

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/17]

void Cce::Solutions::RotatingSchwarzschild::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 in the rotating Schwarzschild metric.

Implements Cce::Solutions::WorldtubeData.

◆ variables_impl() [5/17]

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() [6/17]

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() [7/17]

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() [8/17]

virtual void Cce::Solutions::WorldtubeData::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
protectedvirtual

◆ variables_impl() [9/17]

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() [10/17]

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() [11/17]

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() [12/17]

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() [13/17]

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() [14/17]

virtual void Cce::Solutions::WorldtubeData::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
protectedvirtual

◆ variables_impl() [15/17]

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() [16/17]

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() [17/17]

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

Options::String Cce::Solutions::RotatingSchwarzschild::help
staticconstexpr
Initial value:
= {
"Analytic solution representing a Schwarzschild black hole in a rotating "
"frame"}

The documentation for this struct was generated from the following file:
  • src/Evolution/Systems/Cce/AnalyticSolutions/RotatingSchwarzschild.hpp