SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
Cce::Solutions::WorldtubeData Struct Referenceabstract

Abstract base class for analytic worldtube data for verifying the CCE system. More...

#include <WorldtubeData.hpp>

Classes

struct  IntermediateCache
struct  IntermediateCacheTag

Public Types

using creatable_classes
using tags
 The set of available tags provided by the analytic solution.

Public Member Functions

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

Protected Types

using IntermediateCacheTuple

Protected Member Functions

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

IntermediateCacheTuple intermediate_cache_
double extraction_radius_ = std::numeric_limits<double>::quiet_NaN()

Detailed Description

Abstract base class for analytic worldtube data for verifying the CCE system.

Details

All of the boundary data quantities are provided by the WorldtubeData::variables() function.

This class provides caching and conversion between different representations of the metric data needed for the worldtube computation and evolution. The set of pure virtual functions (required to be overriden in the derived classes) is:

  • WorldtubeData::get_clone(): should return a std::unique_ptr<WorldtubeData> with cloned state
  • WorldtubeData::variables_impl() (a protected function): should compute and return by not_null pointer the spacetime metric quantity requested in the final (metavariable) tag argument. The function overloads that are required to be overriden in the derived class are gr::Tags::SpacetimeMetric<DataVector, 3>, Tags::dt<gr::Tags::SpacetimeMetric<DataVector, 3>>, gh::Tags::Phi<DataVector, 3>, and Cce::Tags::News.
  • prepare_solution(): Any initial precomputation needed to determine all of the solutions efficiently. This function is called by the base class prior to computing or retrieving from the internal cache the requested quantities.
Warning
This class is not intended to be threadsafe! Therefore, using instances of this class placed into the const global cache results in undefined behavior. The analytic data for CCE is not easily represented as a full closed-form solution for the entire Bondi-Sachs-like metric over the domain, so this class and its descendants perform numerical calculations such as spin-weighted derivatives over the sphere. Instead, it makes best sense to compute the global solution over the extraction sphere, and cache intermediate steps to avoid repeating potentially expensive tensor calculations.

Member Typedef Documentation

◆ creatable_classes

using Cce::Solutions::WorldtubeData::creatable_classes
Initial value:
Analytic solution representing a coordinate oscillation about a stationary Schwarzschild black hole.
Definition BouncingBlackHole.hpp:36
Computes the analytic data for a gauge wave solution described in barkett2019uae.
Definition GaugeWave.hpp:47
Computes the analytic data for a Linearized solution to the Bondi-Sachs equations described in barket...
Definition LinearizedBondiSachs.hpp:115
An analytic solution representing a specialization of the radiative Robinson-Trautman solution descri...
Definition RobinsonTrautman.hpp:58
Computes the analytic data for the rotating Schwarzschild solution described in barkett2019uae,...
Definition RotatingSchwarzschild.hpp:37
Computes the analytic data for a Teukolsky wave solution described in barkett2019uae.
Definition TeukolskyWave.hpp:41

◆ IntermediateCacheTuple

using Cce::Solutions::WorldtubeData::IntermediateCacheTuple
protected
Initial value:
tuples::tagged_tuple_from_typelist<tmpl::transform<
tmpl::bind<IntermediateCacheTag, tmpl::_1>>>
Definition Tags.hpp:220
The derivative with respect to Bondi .
Definition Tags.hpp:145
Definition Tags.hpp:203
Prefix indicating a time derivative.
Definition Prefixes.hpp:28
Auxiliary variable which is analytically the spatial derivative of the spacetime metric.
Definition Tags.hpp:38
Conjugate momentum to the spacetime metric.
Definition Tags.hpp:27
Definition Tags.hpp:65
Definition Tags.hpp:61
Definition Tags.hpp:16
Definition Tags.hpp:25

◆ tags

Member Function Documentation

◆ prepare_solution()

virtual void Cce::Solutions::WorldtubeData::prepare_solution ( size_t output_l_max,
double time ) const
protectedpure virtual

◆ variables()

template<typename... Tags>
tuples::TaggedTuple< Tags... > Cce::Solutions::WorldtubeData::variables ( const size_t output_l_max,
const double time,
tmpl::list< Tags... >  ) const
inline

Retrieve worldtube data represented by the analytic solution, at boundary angular resolution l_max and time time

Details

The set of requested tags are specified by the final argument, which must be a tmpl::list of tags to be retrieved. The set of available tags is found in WorldtubeData::tags, and includes coordinate and Jacobian quantities as well as metric quantities and derivatives thereof.

◆ variables_impl() [1/3]

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
protectedpure virtual

◆ variables_impl() [2/3]

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
protectedpure virtual

◆ variables_impl() [3/3]

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
protectedpure virtual

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