SpECTRE  v2024.05.11
ScalarTensor::AnalyticData::KerrSphericalHarmonic Class Reference

Analytic initial data for a pure spherical harmonic in three dimensions in a KerrSchild background. More...

#include <KerrSphericalHarmonic.hpp>

Classes

struct  Amplitude
 The amplitude of the scalar field. More...
 
struct  Mass
 The mass of the black hole. More...
 
struct  Mode
 The spherical harmonic mode of the scalar field. More...
 
struct  Radius
 The location of the scalar field. More...
 
struct  Spin
 The spin of the black hole. More...
 
struct  Width
 The width of the scalar field. More...
 

Public Types

using options = tmpl::list< Mass, Spin, Amplitude, Radius, Width, Mode >
 
template<typename DataType , typename Frame = Frame::Inertial>
using tags = tmpl::flatten< tmpl::list< typename AnalyticDataBase::template tags< DataType >, gr::Tags::DerivDetSpatialMetric< DataType, 3, Frame >, gr::Tags::TraceExtrinsicCurvature< DataType >, gr::Tags::SpatialChristoffelFirstKind< DataType, 3, Frame >, gr::Tags::SpatialChristoffelSecondKind< DataType, 3, Frame >, gr::Tags::TraceSpatialChristoffelSecondKind< DataType, 3, Frame > > >
 
- Public Types inherited from ScalarTensor::AnalyticDataBase
template<typename DataType >
using tags = tmpl::push_back< typename gr::AnalyticDataBase< volume_dim >::template tags< DataType >, CurvedScalarWave::Tags::Psi, CurvedScalarWave::Tags::Pi, CurvedScalarWave::Tags::Phi< volume_dim > >
 

Public Member Functions

 KerrSphericalHarmonic (const KerrSphericalHarmonic &)=default
 
KerrSphericalHarmonicoperator= (const KerrSphericalHarmonic &)=default
 
 KerrSphericalHarmonic (KerrSphericalHarmonic &&)=default
 
KerrSphericalHarmonicoperator= (KerrSphericalHarmonic &&)=default
 
 KerrSphericalHarmonic (double mass, const std::array< double, 3 > &dimensionless_spin, double amplitude, double radius, double width, std::pair< size_t, int > mode)
 
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const
 Retrieve a collection of scalar variables at x
 
template<typename DataType , typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >) const
 Retrieve the metric variables.
 
void pup (PUP::er &) override
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< CurvedScalarWave::Tags::Psi >) const -> tuples::TaggedTuple< CurvedScalarWave::Tags::Psi >
 Retrieve scalar variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< CurvedScalarWave::Tags::Phi< 3_st > >) const -> tuples::TaggedTuple< CurvedScalarWave::Tags::Phi< 3_st > >
 Retrieve scalar variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< CurvedScalarWave::Tags::Pi >) const -> tuples::TaggedTuple< CurvedScalarWave::Tags::Pi >
 Retrieve scalar variable at x
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from ScalarTensor::AnalyticDataBase
static constexpr size_t volume_dim = 3_st
 

Protected Attributes

double mass_ = std::numeric_limits<double>::signaling_NaN()
 
std::array< double, volume_dim > dimensionless_spin_
 
double amplitude_ = std::numeric_limits<double>::signaling_NaN()
 
double radius_ {std::numeric_limits<double>::signaling_NaN()}
 
double width_sq_ {std::numeric_limits<double>::signaling_NaN()}
 
std::pair< size_t, int > mode_
 
gr::Solutions::KerrSchild background_spacetime_ {}
 

Friends

bool operator== (const KerrSphericalHarmonic &lhs, const KerrSphericalHarmonic &rhs)
 

Detailed Description

Analytic initial data for a pure spherical harmonic in three dimensions in a KerrSchild background.

Details

The initial data is taken from [162] , Eqs. 4.1–4.3, and sets the evolved variables of the scalar wave as follows:

\begin{align} \Psi &= 0 \\ \Phi_i &= 0 \\ \Pi &= \Pi_0(r, \theta, \phi) = A e^{- (r - r_0)^2 / w^2} Y_{lm}(\theta, \phi), \end{align}

where \(A\) is the amplitude of the profile, \(r_0\) is its radius and \(w\) is its width. This describes a pure spherical harmonic mode \(Y_{lm}(\theta, \phi)\) truncated by a circular Gaussian window function.

When evolved, the scalar field \(\Phi\) will briefly build up around the radius \(r_0\) and then disperse. This can be used to study the ringdown behavior and late-time tails in the Kerr spacetime.

See also
CurvedScalarWave::AnalyticData::PureSphericalHarmonic and gr::Solutions::KerrSchild.

Member Function Documentation

◆ get_clone()

auto ScalarTensor::AnalyticData::KerrSphericalHarmonic::get_clone ( ) const -> std::unique_ptr< evolution::initial_data::InitialData >
overridevirtual

Member Data Documentation

◆ dimensionless_spin_

std::array<double, volume_dim> ScalarTensor::AnalyticData::KerrSphericalHarmonic::dimensionless_spin_
protected
Initial value:

◆ help

constexpr Options::String ScalarTensor::AnalyticData::KerrSphericalHarmonic::help
staticconstexpr
Initial value:
= {
"Initial data for a pure spherical harmonic mode truncated by a circular "
"Gaussian window funtion. The expression is taken from Scheel(2003), "
"equations 4.1-4.3."}

◆ mode_

std::pair<size_t, int> ScalarTensor::AnalyticData::KerrSphericalHarmonic::mode_
protected

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