SpECTRE
v2024.08.03
|
Computes the analytic data for a Linearized solution to the Bondi-Sachs equations described in [11]. More...
#include <LinearizedBondiSachs.hpp>
Classes | |
struct | ExtractionRadius |
struct | Frequency |
struct | InitialModes |
Public Member Functions | |
WRAPPED_PUPable_decl_template (LinearizedBondiSachs) | |
LinearizedBondiSachs (CkMigrateMessage *msg) | |
LinearizedBondiSachs (const std::array< std::complex< double >, 2 > &mode_constants, double extraction_radius, double frequency) | |
std::unique_ptr< WorldtubeData > | get_clone () const override |
void | pup (PUP::er &p) override |
std::unique_ptr< Cce::InitializeJ::InitializeJ< false > > | get_initialize_j (double start_time) 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< 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 Attributes | |
static constexpr Options::String | help |
Protected Member Functions | |
void | prepare_solution (const size_t, const double) const override |
A no-op as the linearized solution does not have substantial shared computation to prepare before the separate component calculations. More... | |
void | linearized_bondi_j (gsl::not_null< SpinWeighted< ComplexDataVector, 2 > * > bondi_j, size_t l_max, double time) const |
Computes the linearized solution for \(J\). More... | |
void | linearized_bondi_u (gsl::not_null< SpinWeighted< ComplexDataVector, 1 > * > bondi_u, size_t l_max, double time) const |
Compute the linearized solution for \(U\). More... | |
void | linearized_bondi_w (gsl::not_null< SpinWeighted< ComplexDataVector, 0 > * > bondi_w, size_t l_max, double time) const |
Computes the linearized solution for \(W\). More... | |
void | linearized_dr_bondi_j (gsl::not_null< SpinWeighted< ComplexDataVector, 2 > * > dr_bondi_j, size_t l_max, double time) const |
Computes the linearized solution for \(\partial_r J\). More... | |
void | linearized_dr_bondi_u (gsl::not_null< SpinWeighted< ComplexDataVector, 1 > * > dr_bondi_u, size_t l_max, double time) const |
Compute the linearized solution for \(\partial_r U\). More... | |
void | linearized_dr_bondi_w (gsl::not_null< SpinWeighted< ComplexDataVector, 0 > * > dr_bondi_w, size_t l_max, double time) const |
Computes the linearized solution for \(\partial_r W\). More... | |
void | linearized_du_bondi_j (gsl::not_null< SpinWeighted< ComplexDataVector, 2 > * > du_bondi_j, size_t l_max, double time) const |
Computes the linearized solution for \(\partial_u J\). More... | |
void | linearized_du_bondi_u (gsl::not_null< SpinWeighted< ComplexDataVector, 1 > * > du_bondi_u, size_t l_max, double time) const |
Compute the linearized solution for \(\partial_u U\). More... | |
void | linearized_du_bondi_w (gsl::not_null< SpinWeighted< ComplexDataVector, 0 > * > du_bondi_w, size_t l_max, double time) const |
Computes the linearized solution for \(\partial_u W\). 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 linearized Bondi-Sachs system. 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 linearized Bondi-Sachs system. 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 time derivative of the spherical coordinate metric from the linearized Bondi-Sachs system. More... | |
void | variables_impl (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, -2 > > * > news, size_t l_max, double time, tmpl::type_< Tags::News >) const override |
Determines the News function from the linearized solution parameters. 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 | |
std::complex< double > | c_2a_ = std::numeric_limits<double>::signaling_NaN() |
std::complex< double > | c_3a_ = std::numeric_limits<double>::signaling_NaN() |
std::complex< double > | c_2b_ = std::numeric_limits<double>::signaling_NaN() |
std::complex< double > | c_3b_ = std::numeric_limits<double>::signaling_NaN() |
double | frequency_ = 0.0 |
Protected Attributes inherited from Cce::Solutions::WorldtubeData | |
IntermediateCacheTuple | intermediate_cache_ |
double | extraction_radius_ = std::numeric_limits<double>::quiet_NaN() |
Computes the analytic data for a Linearized solution to the Bondi-Sachs equations described in [11].
The solution represented by this function is generated with only \((2,\pm2)\) and \((3,\pm3)\) modes, and is constructed according to the linearized solution documented in Section VI of [11]. For this solution, we impose additional restrictions that the linearized solution be asymptotically flat so that it is compatible with the gauge transformations performed in the SpECTRE regularity-preserving CCE. Using the notation of [11], we set:
\begin{align*} B_2 &= B_3 = 0\\ C_{2b} &= 3 C_{2a} / \nu^2\\ C_{3b} &= -3 i C_{3a} / \nu^3 \end{align*}
where \(C_{2a}\) and \(C_{3a}\) may be specified freely and are taken via input option InitialModes
.
|
overrideprotectedvirtual |
Compute the radial derivative of the spherical coordinate metric from the linearized Bondi-Sachs system.
This function dispatches to the individual computations in this class to determine the Bondi-Sachs scalars for the linearized solution. Once the scalars are determined, the radial derivative of the metric is assembled via (note \(\beta = 0\) in this solution)
\begin{align*} \partial_r g_{a b} dx^a dx^b =& - (W + r \partial_r W - 2 r h_{A B} U^A U^B - r^2 (\partial_r h_{A B}) U^A U^B - 2 r^2 h_{A B} U^A \partial_r U^B) (dt - dr)^2 \\ &- (4 r h_{A B} U^B + 2 r^2 ((\partial_r h_{A B}) U^B + h_{AB} \partial_r U^B) ) (dt - dr) dx^A + (2 r h_{A B} + r^2 \partial_r h_{A B}) dx^A dx^B, \end{align*}
where indices with capital letters refer to angular coordinates and the angular tensors may be written in terms of spin-weighted scalars. Doing so gives the metric components,
\begin{align*} \partial_r g_{t t} &= -\left( W + r \partial_r W - 2 r \Re\left(\bar J U^2 + K U \bar U\right) - r^2 \partial_r \Re\left(\bar J U^2 + K U \bar U\right)\right) \\ \partial_r g_{t r} &= -\partial_r g_{t t}\\ \partial_r g_{t \theta} &= 2 r \Re\left(K U + J \bar U\right) + r^2 \partial_r \Re\left(K U + J \bar U\right) \\ \partial_r g_{t \phi} &= 2r \Im\left(K U + J \bar U\right) + r^2 \partial_r \Im\left(K U + J \bar U\right) \\ \partial_r g_{r r} &= \partial_r g_{t t}\\ \partial_r g_{r \theta} &= -\partial_r g_{t \theta}\\ \partial_r g_{r \phi} &= -\partial_r g_{t \phi}\\ \partial_r g_{\theta \theta} &= 2 r \Re\left(J + K\right) + r^2 \Re\left(\partial_r J + \partial_r K\right) \\ \partial_r g_{\theta \phi} &= 2 r \Im\left(J\right) + r^2 \Im\left(\partial_r J\right)\\ \partial_r g_{\phi \phi} &= 2 r \Re\left(K - J\right) + r^2 \Re\left(\partial_r K - \partial_r J\right), \end{align*}
and all other components are zero.
Implements Cce::Solutions::SphericalMetricData.
|
overrideprotectedvirtual |
Compute the time derivative of the spherical coordinate metric from the linearized Bondi-Sachs system.
This function dispatches to the individual computations in this class to determine the Bondi-Sachs scalars for the linearized solution. Once the scalars are determined, the metric is assembled via (note \(\beta = 0\) in this solution, and note that we take coordinate \(t=u\) in converting to the Cartesian coordinates)
\begin{align*} \partial_t g_{a b} dx^a dx^b =& - (r \partial_u W - r^2 \partial_u h_{A B} U^A U^B - 2 r^2 h_{A B} U^B \partial_u U^A) (dt - dr)^2 \\ &- 2 r^2 (\partial_u h_{A B} U^B + h_{A B} \partial_u U^B) (dt - dr) dx^A + r^2 \partial_u h_{A B} dx^A dx^B, \end{align*}
where indices with capital letters refer to angular coordinates and the angular tensors may be written in terms of spin-weighted scalars. Doing so gives the metric components,
\begin{align*} \partial_t g_{t t} &= -\left(r \partial_u W - r^2 \partial_u \Re\left(\bar J U^2 + K U \bar U\right)\right)\\ \partial_t g_{t r} &= -\partial_t g_{t t}\\ \partial_t g_{t \theta} &= r^2 \partial_u \Re\left(K U + J \bar U\right)\\ \partial_t g_{t \phi} &= r^2 \partial_u \Im\left(K U + J \bar U\right)\\ \partial_t g_{r r} &= \partial_t g_{t t}\\ \partial_t g_{r \theta} &= -\partial_t g_{t \theta}\\ \partial_t g_{r \phi} &= -\partial_t g_{t \phi}\\ \partial_t g_{\theta \theta} &= r^2 \Re\left(\partial_u J + \partial_u K\right)\\ \partial_t g_{\theta \phi} &= r^2 \Im\left(\partial_u J\right)\\ \partial_t g_{\phi \phi} &= r^2 \Re\left(\partial_u K - \partial_u J\right), \end{align*}
and all other components are zero.
Implements Cce::Solutions::SphericalMetricData.
|
overridevirtual |
Implements Cce::Solutions::WorldtubeData.
|
overridevirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protected |
Computes the linearized solution for \(J\).
The linearized solution for \(J\) is given by [11],
\[ J = \sqrt{12} ({}_2 Y_{2\,2} + {}_2 Y_{2\, -2}) \mathrm{Re}(J_2(r) e^{i \nu u}) + \sqrt{60} ({}_2 Y_{3\,3} - {}_2 Y_{3\, -3}) \mathrm{Re}(J_3(r) e^{i \nu u}), \]
where
\begin{align*} J_2(r) &= \frac{C_{2a}}{4 r} - \frac{C_{2b}}{12 r^3}, \\ J_3(r) &= \frac{C_{3a}}{10 r} - \frac{i \nu C_{3 b}}{6 r^3} - \frac{C_{3 b}}{4 r^4}. \end{align*}
|
protected |
Compute the linearized solution for \(U\).
The linearized solution for \(U\) is given by [11],
\[ U = \sqrt{3} ({}_1 Y_{2\,2} + {}_1 Y_{2\, -2}) \mathrm{Re}(U_2(r) e^{i \nu u}) + \sqrt{6} ({}_1 Y_{3\,3} - {}_1 Y_{3\, -3}) \mathrm{Re}(U_3(r) e^{i \nu u}), \]
where
\begin{align*} U_2(r) &= \frac{C_{2a}}{2 r^2} + \frac{i \nu C_{2 b}}{3 r^3} + \frac{C_{2b}}{4 r^4} \\ U_3(r) &= \frac{C_{3a}}{2 r^2} - \frac{2 \nu^2 C_{3b}}{3 r^3} + \frac{5 i \nu C_{3b}}{4 r^4} + \frac{C_{3 b}}{r^5} \end{align*}
|
protected |
Computes the linearized solution for \(W\).
The linearized solution for \(W\) is given by [11],
\[ W = \frac{1}{\sqrt{2}} ({}_0 Y_{2\,2} + {}_0 Y_{2\, -2}) \mathrm{Re}(W_2(r) e^{i \nu u}) + \frac{1}{\sqrt{2}} ({}_0 Y_{3\,3} - {}_0 Y_{3\, -3}) \mathrm{Re}(W_3(r) e^{i \nu u}), \]
where
\begin{align*} W_2(r) &= - \frac{\nu^2 C_{2b}}{r^2} + \frac{i \nu C_{2 b}}{r^3} + \frac{C_{2b}}{2 r^4}, \\ W_3(r) &= -\frac{2 i \nu^3 C_{3b}}{r^2} - \frac{4 i \nu^2 C_{3b}}{r^3} + \frac{5 \nu C_{3b}}{2 r^4} + \frac{3 C_{3b}}{r^5}. \end{align*}
|
protected |
Computes the linearized solution for \(\partial_r J\).
The linearized solution for \(\partial_r J\) is given by [11],
\[ \partial_r J = \sqrt{12} ({}_2 Y_{2\,2} + {}_2 Y_{2\, -2}) \mathrm{Re}(\partial_r J_2(r) e^{i \nu u}) + \sqrt{60} ({}_2 Y_{3\,3} - {}_2 Y_{3\, -3}) \mathrm{Re}(\partial_r J_3(r) e^{i \nu u}), \]
where
\begin{align*} \partial_r J_2(r) &= - \frac{C_{2a}}{4 r^2} + \frac{C_{2b}}{4 r^4}, \\ \partial_r J_3(r) &= -\frac{C_{3a}}{10 r^2} + \frac{i \nu C_{3 b}}{2 r^4} + \frac{C_{3 b}}{r^5}. \end{align*}
|
protected |
Compute the linearized solution for \(\partial_r U\).
The linearized solution for \(\partial_r U\) is given by [11],
\[ \partial_r U = \sqrt{3} ({}_1 Y_{2\,2} + {}_1 Y_{2\, -2}) \mathrm{Re}(\partial_r U_2(r) e^{i \nu u}) + \sqrt{6} ({}_1 Y_{3\,3} - {}_1 Y_{3\, -3}) \mathrm{Re}(\partial_r U_3(r) e^{i \nu u}), \]
where
\begin{align*} \partial_r U_2(r) &= -\frac{C_{2a}}{r^3} - \frac{i \nu C_{2 b}}{r^4} - \frac{C_{2b}}{r^5} \\ \partial_r U_3(r) &= -\frac{C_{3a}}{r^3} + \frac{2 \nu^2 C_{3b}}{r^4} - \frac{5 i \nu C_{3b}}{r^5} - \frac{5 C_{3 b}}{r^6} \end{align*}
|
protected |
Computes the linearized solution for \(\partial_r W\).
The linearized solution for \(W\) is given by [11],
\[ \partial_r W = \frac{1}{\sqrt{2}} ({}_0 Y_{2\,2} + {}_0 Y_{2\, -2}) \mathrm{Re}(\partial_r W_2(r) e^{i \nu u}) + \frac{1}{\sqrt{2}} ({}_0 Y_{3\,3} - {}_0 Y_{3\, -3}) \mathrm{Re}(\partial_r W_3(r) e^{i \nu u}), \]
where
\begin{align*} \partial_r W_2(r) &= \frac{2 \nu^2 C_{2b}}{r^3} - \frac{3 i \nu C_{2 b}}{r^4} - \frac{2 C_{2b}}{r^5}, \\ \partial_r W_3(r) &= \frac{4 i \nu^3 C_{3b}}{r^3} + \frac{12 i \nu^2 C_{3b}}{r^4} - \frac{10 \nu C_{3b}}{r^5} - \frac{15 C_{3b}}{r^6}. \end{align*}
|
protected |
Computes the linearized solution for \(\partial_u J\).
The linearized solution for \(\partial_u J\) is given by [11],
\[ \partial_u J = \sqrt{12} ({}_2 Y_{2\,2} + {}_2 Y_{2\, -2}) \mathrm{Re}(i \nu J_2(r) e^{i \nu u}) + \sqrt{60} ({}_2 Y_{3\,3} - {}_2 Y_{3\, -3}) \mathrm{Re}(i \nu J_3(r) e^{i \nu u}), \]
where
\begin{align*} J_2(r) &= \frac{C_{2a}}{4 r} - \frac{C_{2b}}{12 r^3}, \\ J_3(r) &= \frac{C_{3a}}{10 r} - \frac{i \nu C_{3 b}}{6 r^3} - \frac{C_{3 b}}{4 r^4}. \end{align*}
|
protected |
Compute the linearized solution for \(\partial_u U\).
The linearized solution for \(U\) is given by [11],
\[ \partial_u U = \sqrt{3} ({}_2 Y_{2\,2} + {}_2 Y_{2\, -2}) \mathrm{Re}(i \nu U_2(r) e^{i \nu u}) + \sqrt{6} ({}_2 Y_{3\,3} - {}_2 Y_{3\, -3}) \mathrm{Re}(i \nu U_3(r) e^{i \nu u}), \]
where
\begin{align*} U_2(r) &= \frac{C_{2a}}{2 r^2} + \frac{i \nu C_{2 b}}{3 r^3} + \frac{C_{2b}}{4 r^4} \\ U_3(r) &= \frac{C_{3a}}{2 r^2} - \frac{2 \nu^2 C_{3b}}{3 r^3} + \frac{5 i \nu C_{3b}}{4 r^4} + \frac{C_{3 b}}{r^5} \end{align*}
|
protected |
Computes the linearized solution for \(\partial_u W\).
The linearized solution for \(\partial_u W\) is given by [11],
\[ \partial_u W = \frac{1}{\sqrt{2}} ({}_1 Y_{2\,2} + {}_1 Y_{2\, -2}) \mathrm{Re}(i \nu W_2(r) e^{i \nu u}) + \frac{1}{\sqrt{2}} ({}_1 Y_{3\,3} - {}_1 Y_{3\, -3}) \mathrm{Re}(i \nu W_3(r) e^{i \nu u}), \]
where
\begin{align*} W_2(r) &= \frac{\nu^2 C_{2b}}{r^2} + \frac{i \nu C_{2 b}}{r^3} + \frac{C_{2b}}{2 r^4}, \\ W_3(r) &= \frac{2 i \nu^3 C_{3b}}{r^2} - \frac{4 i \nu^2 C_{3b}}{r^3} + \frac{5 \nu C_{3b}}{2 r^4} + \frac{3 C_{3b}}{r^5}. \end{align*}
|
inlineoverrideprotectedvirtual |
A no-op as the linearized solution does not have substantial shared computation to prepare before the separate component calculations.
Implements Cce::Solutions::WorldtubeData.
|
overrideprotectedvirtual |
Compute the spherical coordinate metric from the linearized Bondi-Sachs system.
This function dispatches to the individual computations in this class to determine the Bondi-Sachs scalars for the linearized solution. Once the scalars are determined, the metric is assembled via (note \(\beta = 0\) in this solution)
\begin{align*} ds^2 =& - ((1 + r W) - r^2 h_{A B} U^A U^B) (dt - dr)^2 - 2 (dt - dr) dr \\ &- 2 r^2 h_{A B} U^B (dt - dr) dx^A + r^2 h_{A B} dx^A dx^B, \end{align*}
where indices with capital letters refer to angular coordinates and the angular tensors may be written in terms of spin-weighted scalars. Doing so gives the metric components,
\begin{align*} g_{t t} &= -\left(1 + r W - r^2 \Re\left(\bar J U^2 + K U \bar U\right)\right)\\ g_{t r} &= -1 - g_{t t}\\ g_{r r} &= 2 + g_{t t}\\ g_{t \theta} &= r^2 \Re\left(K U + J \bar U\right)\\ g_{t \phi} &= r^2 \Im\left(K U + J \bar U\right)\\ g_{r \theta} &= -g_{t \theta}\\ g_{r \phi} &= -g_{t \phi}\\ g_{\theta \theta} &= r^2 \Re\left(J + K\right)\\ g_{\theta \phi} &= r^2 \Im\left(J\right)\\ g_{\phi \phi} &= r^2 \Re\left(K - J\right), \end{align*}
and all other components are zero.
Implements Cce::Solutions::SphericalMetricData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
overrideprotectedvirtual |
Determines the News function from the linearized solution parameters.
The News is determined from the formula given in [11],
\begin{align*} N = \frac{1}{2 \sqrt{3}} ({}_{-2} Y_{2\, 2} + {}_{-2} Y_{2\,-2}) \Re\left(i \nu^3 C_{2 b} e^{i \nu u}\right) + \frac{1}{\sqrt{15}} ({}_{-2} Y_{3\, 3} - {}_{-2} Y_{3\, -3}) \Re\left(- \nu^4 C_{3 b} e^{i \nu u} \right) \end{align*}
Implements 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()
.
Reimplemented from Cce::Solutions::SphericalMetricData.
|
protectedvirtual |
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()
.
Reimplemented from Cce::Solutions::SphericalMetricData.
|
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()
.
Reimplemented from Cce::Solutions::SphericalMetricData.
|
protectedvirtual |
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()
.
Reimplemented from Cce::Solutions::SphericalMetricData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
protectedvirtual |
Reimplemented from Cce::Solutions::WorldtubeData.
|
staticconstexpr |