SpECTRE  2021.08.02
Xcts::Solutions::Kerr< Registrars > Class Template Reference

Kerr spacetime in general relativity. More...

#include <Kerr.hpp>

Public Member Functions

 WRAPPED_PUPable_decl_template (Kerr)
 
template<typename DataType , typename... RequestedTags>
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< RequestedTags... >) const noexcept
 
template<typename DataType , typename... RequestedTags>
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, const Mesh< 3 > &mesh, const InverseJacobian< DataVector, 3, Frame::Logical, Frame::Inertial > &inv_jacobian, tmpl::list< RequestedTags... >) const noexcept
 
void pup (PUP::er &p) noexcept override
 
- Public Member Functions inherited from Xcts::Solutions::AnalyticSolution< tmpl::list< Solutions::Registrars::Kerr > >
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< RequestedTags... >) const noexcept
 
- Public Member Functions inherited from AnalyticData< Dim, Registrars >
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, Dim > &x, tmpl::list< Tags... >) const noexcept
 Retrieve a collection of tensor fields at spatial coordinate(s) x
 
template<typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataVector, Dim > &x, const Mesh< Dim > &mesh, const InverseJacobian< DataVector, Dim, Frame::Logical, Frame::Inertial > &inv_jacobian, tmpl::list< Tags... >) const noexcept
 Retrieve a collection of tensor fields at spatial coordinate(s) x More...
 
- Public Member Functions inherited from gr::Solutions::KerrSchild
 KerrSchild (double mass, Spin::type dimensionless_spin, Center::type center, const Options::Context &context={})
 
 KerrSchild (CkMigrateMessage *) noexcept
 
 KerrSchild (const KerrSchild &)=default
 
KerrSchildoperator= (const KerrSchild &)=default
 
 KerrSchild (KerrSchild &&) noexcept=default
 
KerrSchildoperator= (KerrSchild &&) noexcept=default
 
template<typename DataType , typename Frame , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, volume_dim, Frame > &x, double, tmpl::list< Tags... >) const noexcept
 
void pup (PUP::er &p) noexcept
 
double mass () const noexcept
 
const std::array< double, volume_dim > & center () const noexcept
 
const std::array< double, volume_dim > & dimensionless_spin () const noexcept
 

Additional Inherited Members

- Public Types inherited from Xcts::Solutions::AnalyticSolution< tmpl::list< Solutions::Registrars::Kerr > >
using registrars = tmpl::list< Solutions::Registrars::Kerr >
 
using creatable_classes = Registration::registrants< registrars >
 
- Public Types inherited from AnalyticData< Dim, Registrars >
using registrars = Registrars
 
using creatable_classes = Registration::registrants< registrars >
 
- Public Types inherited from gr::Solutions::KerrSchild
using options = tmpl::list< Mass, Spin, Center >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using CachedBuffer = CachedTempBuffer< IntermediateComputer< DataType, Frame >, internal_tags::x_minus_center< DataType, Frame >, internal_tags::a_dot_x< DataType >, internal_tags::a_dot_x_squared< DataType >, internal_tags::half_xsq_minus_asq< DataType >, internal_tags::r_squared< DataType >, internal_tags::r< DataType >, internal_tags::a_dot_x_over_rsquared< DataType >, internal_tags::deriv_log_r_denom< DataType >, internal_tags::deriv_log_r< DataType, Frame >, internal_tags::H_denom< DataType >, internal_tags::H< DataType >, internal_tags::deriv_H_temp1< DataType >, internal_tags::deriv_H_temp2< DataType >, internal_tags::deriv_H< DataType, Frame >, internal_tags::denom< DataType >, internal_tags::a_dot_x_over_r< DataType >, internal_tags::null_form< DataType, Frame >, internal_tags::deriv_null_form< DataType, Frame >, internal_tags::lapse_squared< DataType >, gr::Tags::Lapse< DataType >, internal_tags::deriv_lapse_multiplier< DataType >, internal_tags::shift_multiplier< DataType >, gr::Tags::Shift< 3, Frame, DataType >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< 3, Frame, DataType >, DerivSpatialMetric< DataType, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< 3, Frame, DataType > > >
 
- Public Types inherited from gr::AnalyticSolution< 3_st >
using DerivLapse = ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< volume_dim >, Frame >
 
using DerivShift = ::Tags::deriv< gr::Tags::Shift< volume_dim, Frame, DataType >, tmpl::size_t< volume_dim >, Frame >
 
using DerivSpatialMetric = ::Tags::deriv< gr::Tags::SpatialMetric< volume_dim, Frame, DataType >, tmpl::size_t< volume_dim >, Frame >
 
using tags = tmpl::list< gr::Tags::Lapse< DataType >, ::Tags::dt< gr::Tags::Lapse< DataType > >, DerivLapse< DataType, Frame >, gr::Tags::Shift< volume_dim, Frame, DataType >, ::Tags::dt< gr::Tags::Shift< volume_dim, Frame, DataType > >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< volume_dim, Frame, DataType >, ::Tags::dt< gr::Tags::SpatialMetric< volume_dim, Frame, DataType > >, DerivSpatialMetric< DataType, Frame >, gr::Tags::SqrtDetSpatialMetric< DataType >, gr::Tags::ExtrinsicCurvature< volume_dim, Frame, DataType >, gr::Tags::InverseSpatialMetric< volume_dim, Frame, DataType > >
 
- Static Public Attributes inherited from AnalyticData< Dim, Registrars >
static constexpr size_t volume_dim = Dim
 
- Static Public Attributes inherited from gr::Solutions::KerrSchild
static constexpr Options::String help
 
- Static Public Attributes inherited from gr::AnalyticSolution< 3_st >
static constexpr size_t volume_dim
 

Detailed Description

template<typename Registrars = tmpl::list<Solutions::Registrars::Kerr>>
class Xcts::Solutions::Kerr< Registrars >

Kerr spacetime in general relativity.

This class implements the Kerr solution to the XCTS equations. It is currently implemented in Kerr-Schild coordinates only and derives most quantities from the gr::Solution::KerrSchild class. It poses a non-conformally-flat problem to the XCTS equations.

The conformal factor in this solution is set to \(\psi=1\), so the conformal background-metric is the spatial Kerr metric. It is possible to choose a different \(\psi\) so the solution is non-trivial in this variable, though that is probably only useful for testing and currently not implemented. It should be noted, however, that the combination of \(\psi=1\) and apparent-horizon boundary conditions poses a hard problem to the nonlinear solver when starting at a flat initial guess. This is because the strongly-nonlinear boundary-conditions couple the variables in such a way that the solution is initially corrected away from \(\psi=1\) and is then unable to recover. A conformal-factor profile such as \(\psi=1 + \frac{M}{2r}\) (resembling isotropic coordinates) resolves this issue. In production solves this is not an issue because we choose a much better initial guess than flatness, such as a superposition of Kerr solutions for black-hole binary initial data.