SpECTRE  v2021.10.04
Cce::Solutions::RobinsonTrautman Struct Reference

An analytic solution representing a specialization of the radiative Robinson-Trautman solution described in [36]. More...

#include <RobinsonTrautman.hpp>

Classes

struct  ExtractionRadius
 
struct  InitialModes
 
struct  LMax
 
struct  StartTime
 
struct  Tolerance
 

Public Types

using options = tmpl::list< InitialModes, ExtractionRadius, LMax, Tolerance, StartTime >
 
- 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< 3, ::Frame::Inertial, DataVector >, ::Tags::dt< gr::Tags::SpacetimeMetric< 3, ::Frame::Inertial, DataVector > >, GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial >, GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial >, gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector >, ::Tags::dt< gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector > >, Tags::Dr< gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector > >, gr::Tags::Shift< 3, ::Frame::Inertial, DataVector >, ::Tags::dt< gr::Tags::Shift< 3, ::Frame::Inertial, DataVector > >, Tags::Dr< gr::Tags::Shift< 3, ::Frame::Inertial, DataVector > >, 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 (RobinsonTrautman)
 
 RobinsonTrautman (CkMigrateMessage *msg)
 
 RobinsonTrautman (std::vector< std::complex< double > > initial_modes, double extraction_radius, size_t l_max, double tolerance, double start_time, const Options::Context &context)
 
std::unique_ptr< WorldtubeDataget_clone () const override
 
void pup (PUP::er &p) override
 
bool use_noninertial_news () const 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 (size_t output_l_max, double time) const override
 The Robinson-Trautman solution performs the time-stepping to advance the internal member scalar used to generate the metric solution to the correct state for time. 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 of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\). 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 radial derivative of the spherical coordinate metric of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\). 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 time derivative of the spherical coordinate metric of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\). More...
 
void variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > News, size_t l_max, double time, tmpl::type_< Tags::News >) const override
 Compute the news associated with the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\). 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) const=0
 Computes the time derivative of 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 > * > pi, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) const=0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > pi, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) const =0
 
virtual void variables_impl (gsl::not_null< tnsr::aa< DataVector, 3 > * > pi, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial > >) const
 
virtual void variables_impl (gsl::not_null< tnsr::iaa< DataVector, 3 > * > d_spacetime_metric, size_t output_l_max, double time, tmpl::type_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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< 3, ::Frame::Inertial, DataVector > > >) 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
 

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< 3, ::Frame::Inertial, DataVector >, GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial >, GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial >, gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector >, gr::Tags::Shift< 3, ::Frame::Inertial, DataVector >, gr::Tags::Lapse< DataVector >, ::Tags::dt< gr::Tags::SpacetimeMetric< 3, ::Frame::Inertial, DataVector > >, ::Tags::dt< gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector > >, ::Tags::dt< gr::Tags::Shift< 3, ::Frame::Inertial, DataVector > >, ::Tags::dt< gr::Tags::Lapse< DataVector > >, Tags::Dr< gr::Tags::SpatialMetric< 3, ::Frame::Inertial, DataVector > >, Tags::Dr< gr::Tags::Shift< 3, ::Frame::Inertial, DataVector > >, Tags::Dr< gr::Tags::Lapse< DataVector > >, Tags::News >, tmpl::bind< IntermediateCacheTag, tmpl::_1 > > >
 
- Protected Attributes inherited from Cce::Solutions::WorldtubeData
IntermediateCacheTuple intermediate_cache_
 
double extraction_radius_ = std::numeric_limits<double>::quiet_NaN()
 

Detailed Description

An analytic solution representing a specialization of the radiative Robinson-Trautman solution described in [36].

Details

This solution is not quite analytic, in the sense that there is a single scalar field that must be evolved. Ultimately, it is a partial specialization of the Characteristic equations such that \(J = 0\) and the evolution equations have been manipulated to give a time evolution equation for \(e^{-2 \beta}\), which is equivalent to the Robinson-Trautman scalar \(\omega_{\text{RT}}\) (denoted \(W\) in [36] – we deviate from their notation because the symbol \(W\) is already used elsewhere in the CCE system).

Note
The value of \(\omega_{\text{RT}}\) should be real and near 1, which is imposed by the solution itself, any modes specified in the input file are treated as perturbations to the leading value of 1.0 for the Robinson-Trautman scalar \(\omega_{\text{RT}}\).
The use of substep time-steppers in conjunction with RobinsonTrautman analytic data is explictly forbidden by checks in Cce::Actions::InitializeWorldtubeBoundary. The reason is that any time the RobinsonTrautman receives a request for data at a time in the past of its current state, it must re-start its internal time stepper from the beginning of the evolution. This is a reasonable cost for multistep methods that only have non-ordered time steps during self-start, but will lead to \(\mathcal O(N^2)\) internal steps in the RobinsonTrautman solution if a substep method is used, where \(N\) is the number of steps performed by the substep method. If you find an unavoidable need to use RobinsonTrautman with a substep method, you will either need to only do so for very short evolutions, or need to write more sophisticated caching of the internal time step data.

Member Function Documentation

◆ dr_spherical_metric()

void Cce::Solutions::RobinsonTrautman::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 radial derivative of the spherical coordinate metric of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\).

Details

The radial derivative (at constant time t) of the Robinson-Trautman solution is obtained by differentiating the expressions from the documentation for RobinsonTrautman::spherical_metric():

\begin{align*} (\partial_r g_{a b} + \partial_t g_{a b}) dx^a dx^b = - (\omega_{\text{RT}} (r \partial_r W + W) - 2 r U \bar U - r^2 (\bar U\partial_r U + U \partial_r \bar U)) (dt - dr)^2 - 2 r U^A q_{A B} dx^B (dt - dr) + 2 r q_{A B} dx^A dx^B \end{align*}

where \(q_{A B}\) represents the angular unit sphere metric, and the remaining Bondi-Sachs scalars and angular tensors are defined in terms of the Robinson-Trautman scalar \(\omega_{\text{RT}}\)

\begin{align*} W &= \frac{1}{r}\left(\omega_{\text{RT}} + \eth \bar \eth \omega_{\text{RT}} - 1\right) - \frac{2}{r^2 \omega_{\text{RT}}^2}\\ \partial_r W &= -\frac{1}{r^2} \left(\omega_{\text{RT}} + \eth \bar \eth \omega_{\text{RT}} - 1\right) + \frac{4}{r^3 \omega_{\text{RT}}^2}\\ U &\equiv U^A q_A = \frac{\eth \omega_{\text{RT}}}{r}. \end{align*}

and \(q_A\) is the angular dyad on the unit sphere. The Robinson-Trautman scalar \(\omega_{\text{RT}}\) is independent of the Bondi radius \(r\), so all radial derivatives of \(\omega_{\text{RT}}\) have been dropped

Implements Cce::Solutions::SphericalMetricData.

◆ dt_spherical_metric()

void Cce::Solutions::RobinsonTrautman::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 time derivative of the spherical coordinate metric of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\).

Details

The time derivative of the Robinson-Trautman solution is obtained by differentiating the expressions from the documentation for RobinsonTrautman::spherical_metric():

\begin{align*} \partial_t g_{a b} dx^a dx^b = -( \partial_u \omega_{\text{RT}} (r W + 1) + \omega_{\text{RT}} \partial_u W - r^2 (\bar U \partial_u U + U \partial_u \bar U)) (dt - dr)^2 - 2 \partial_u \omega_{\text{RT}} (dt - dr) dr - 2 r^2 \partial_u U^A q_{AB} dx^B (dt - dr), \end{align*}

where \(q_{A B}\) represents the angular unit sphere metric, and the remaining Bondi-Sachs scalars and angular tensors are defined in terms of the Robinson-Trautman scalar \(\omega_{\text{RT}}\)

\begin{align*} W &= \frac{1}{r}\left(\omega_{\text{RT}} + \eth \bar \eth \omega_{\text{RT}} - 1\right) - \frac{2}{r^2 \omega_{\text{RT}}^2}\\ \partial_u W &= \frac{1}{r}\left(\partial_u \omega_{\text{RT}} + \eth \bar \eth \partial_u \omega_{\text{RT}}\right) + \frac{4 \partial_u \omega_{\text{RT}}}{r^2 \omega_{\text{RT}}^3} \\ \partial_u U &= q_A \partial_u U^A = \frac{\eth \partial_u \omega_{\text{RT}}}{r}, \end{align*}

and \(q_A\) is the angular dyad on the unit sphere; and the time derivative of the Robinson-Trautman scalar \(\omega_{\text{RT}}\) is

\[ \partial_u \omega_{\text{RT}} = \frac{1}{12} \left(-\omega^4_{\text{RT}} \eth^2 \bar \eth^2 \omega_{\text{RT}} + \omega_{\text{RT}}^3 (\eth^2 \omega_{\text{RT}}) (\bar \eth^2 \omega_{\text{RT}}) \right) \]

Implements Cce::Solutions::SphericalMetricData.

◆ get_clone()

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

◆ prepare_solution()

void Cce::Solutions::RobinsonTrautman::prepare_solution ( size_t  output_l_max,
double  time 
) const
overrideprotectedvirtual

The Robinson-Trautman solution performs the time-stepping to advance the internal member scalar used to generate the metric solution to the correct state for time.

Details

The generating scalar \(\omega_{\text{RT}}\) is evolved using equation (2.5) from [36] (manipulated to a form convenient for our numerical utilities)

\[ \partial_u \omega_{\text{RT}} = - \left(\omega^4_{\text{RT}} \eth^2 \bar \eth^2 \omega_{\text{RT}} - \omega_{\text{RT}}^3 (\eth^2 \omega_{\text{RT}}) (\bar \eth^2 \omega_{\text{RT}}) \right) \]

As the scalar \(\omega_{\text{RT}}\) is evolved, it is filtered by zeroing the highest two angular modes.

Implements Cce::Solutions::WorldtubeData.

◆ spherical_metric()

void Cce::Solutions::RobinsonTrautman::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 of the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\).

Details

The spacetime metric of the Robinson-Trautman solution can be expressed as a specialization of the Bondi-Sachs metric (note the metric signature change as compared to equation (1.2) from [36])

\[ ds^2 = -((r W + 1) \omega_{\text{RT}} - r^2 U \bar U) (dt - dr)^2 - 2 \omega_{\text{RT}} (dt - dr) dr - 2 r^2 U^A q_{AB} dx^B (dt - dr) + r^2 q_{A B} dx^A dx^B, \]

where \(q_{A B}\) represents the angular unit sphere metric, and the remaining Bondi-Sachs scalars and angular tensors are defined in terms of the Robinson-Trautman scalar \(\omega_{\text{RT}}\)

\begin{align*} W &= \frac{1}{r}\left(\omega_{\text{RT}} + \eth \bar \eth \omega_{\text{RT}} - 1\right) - \frac{2}{r^2 \omega_{\text{RT}}^2}\\ U &\equiv U^A q_A = \frac{\eth \omega_{\text{RT}}}{r}. \end{align*}

and \(q_A\) is the angular dyad on the unit sphere.

The angular part of the metric can be expressed in terms of the \(U\) scalar as

\begin{align*} g_{u \theta} &= r^2 \Re U\\ g_{u \phi} &= r^2 \Im U \end{align*}

Implements Cce::Solutions::SphericalMetricData.

◆ use_noninertial_news()

bool Cce::Solutions::RobinsonTrautman::use_noninertial_news ( ) const
inlineoverridevirtual

Reimplemented from Cce::Solutions::WorldtubeData.

◆ 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::RobinsonTrautman::variables_impl ( gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * >  News,
size_t  l_max,
double  time,
tmpl::type_< Tags::News  
) const
overrideprotectedvirtual

Compute the news associated with the Robinson-Trautman solution generated by the time-evolved scalar \(\omega_{\text{RT}}\).

Details

The Bondi-Sachs news in the Robinson-Trautman solution is

\begin{align*} N = \frac{\bar \eth \bar \eth \omega_{\text{RT}}}{\omega_{\text{RT}}} \end{align*}

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< 3, ::Frame::Inertial, DataVector > > >   
) const
overrideprotectedvirtual

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().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ variables_impl() [7/20]

virtual void Cce::Solutions::WorldtubeData::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< 3, ::Frame::Inertial, DataVector > > >   
) const
protectedvirtual

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().

Reimplemented from Cce::Solutions::SphericalMetricData.

◆ 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_< GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial > >   
) 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< 3, ::Frame::Inertial, DataVector > >   
) 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< 3, ::Frame::Inertial, DataVector > >   
) 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< 3, ::Frame::Inertial, DataVector > > >   
) 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< 3, ::Frame::Inertial, DataVector > > >   
) 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< 3, ::Frame::Inertial, DataVector > >   
) 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_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >   
) 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_< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > >   
) 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< 3, ::Frame::Inertial, DataVector > > >   
) 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< 3, ::Frame::Inertial, DataVector > > >   
) 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< 3, ::Frame::Inertial, DataVector > >   
) const
protectedvirtual

Reimplemented from Cce::Solutions::WorldtubeData.

Member Data Documentation

◆ help

constexpr Options::String Cce::Solutions::RobinsonTrautman::help
staticconstexpr
Initial value:
= {
"Analytic solution representing worldtube data for the nonlinear "
"semi-analytic Robinson-Trautman metric, which requires a single "
"scalar on the boundary to be evolved to determine the metric"}

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