SpECTRE
v2024.12.16
|
Abstract base class for analytic worldtube data most easily derived in spherical coordinate form. More...
#include <SphericalMetricData.hpp>
Public Member Functions | |
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< WorldtubeData > | get_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 Member Functions | |
static void | dr_jacobian (gsl::not_null< SphericaliCartesianJ * > dr_jacobian, size_t l_max) |
Protected Member Functions | |
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 |
Additional Inherited Members | |
Public Types inherited from Cce::Solutions::WorldtubeData | |
using | creatable_classes = implementation defined |
using | tags = implementation defined |
The set of available tags provided by the analytic solution. | |
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 > > > |
Protected Attributes inherited from Cce::Solutions::WorldtubeData | |
IntermediateCacheTuple | intermediate_cache_ |
double | extraction_radius_ = std::numeric_limits<double>::quiet_NaN() |
Abstract base class for analytic worldtube data most easily derived in spherical coordinate form.
This class provides the functions required by the WorldtubeData
interface that convert from a spherical coordinate spacetime metric to Cartesian coordinates. Derived classes of SphericalMetricData
need not implement the variables_impl
s for the Cartesian quantities. Instead, the derived classes must override the protected functions:
SphericalMetricData::spherical_metric()
SphericalMetricData::dr_spherical_metric()
SphericalMetricData::dt_spherical_metric()
Derived classes are still responsible for overriding WorldtubeData::get_clone()
, WorldtubeData::variables_impl()
for tag Cce::Tags::News
, and WorldtubeData::prepare_solution()
.
void Cce::Solutions::SphericalMetricData::dr_inverse_jacobian | ( | gsl::not_null< CartesianiSphericalJ * > | dr_inverse_jacobian, |
size_t | l_max | ||
) | const |
Computes the first radial derivative of the Jacobian:
The first radial derivative of the Jacobian (with
|
static |
Computes the first radial derivative of the Jacobian:
The radial derivative of the Jacobian (with
|
protectedpure virtual |
Must be overriden in the derived class; should compute the first radial derivative of the spacetime metric of the analytic solution in spherical coordinates.
Implemented in Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, and Cce::Solutions::TeukolskyWave.
|
protectedpure virtual |
Must be overriden in the derived class; should compute the first time derivative of the spacetime metric of the analytic solution in spherical coordinates.
Implemented in Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, and Cce::Solutions::TeukolskyWave.
void Cce::Solutions::SphericalMetricData::inverse_jacobian | ( | gsl::not_null< CartesianiSphericalJ * > | inverse_jacobian, |
size_t | l_max | ||
) | const |
Computes the Jacobian
The Jacobian (with
void Cce::Solutions::SphericalMetricData::jacobian | ( | gsl::not_null< SphericaliCartesianJ * > | jacobian, |
size_t | l_max | ||
) | const |
Computes the Jacobian
The Jacobian (with
|
protectedpure virtual |
Must be overriden in the derived class; should compute the spacetime metric of the analytic solution in spherical coordinates.
Implemented in Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, and Cce::Solutions::TeukolskyWave.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Implements Cce::Solutions::WorldtubeData.
|
overrideprotected |
Computes the time derivative of the Cartesian spacetime metric from the spherical solution provided by the derived classes.
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()
.
|
protectedvirtual |
Implements Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
overrideprotectedvirtual |
Computes the Cartesian spacetime metric from the spherical solution provided by the derived classes.
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()
.
Implements Cce::Solutions::WorldtubeData.
Reimplemented in Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, Cce::Solutions::TeukolskyWave, Cce::Solutions::TeukolskyWave, Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, and Cce::Solutions::TeukolskyWave.
|
protectedvirtual |
Implements Cce::Solutions::WorldtubeData.
Reimplemented in Cce::Solutions::TeukolskyWave, Cce::Solutions::TeukolskyWave, and Cce::Solutions::TeukolskyWave.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
overrideprotectedvirtual |
Computes the spatial derivatives of the Cartesian spacetime metric from the spherical solution provided by the derived classes.
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()
.
Implements Cce::Solutions::WorldtubeData.
Reimplemented in Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, Cce::Solutions::TeukolskyWave, Cce::Solutions::TeukolskyWave, Cce::Solutions::GaugeWave, Cce::Solutions::LinearizedBondiSachs, Cce::Solutions::RobinsonTrautman, Cce::Solutions::RotatingSchwarzschild, and Cce::Solutions::TeukolskyWave.
|
protectedvirtual |
Implements Cce::Solutions::WorldtubeData.
Reimplemented in Cce::Solutions::TeukolskyWave, Cce::Solutions::TeukolskyWave, and Cce::Solutions::TeukolskyWave.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.