SpECTRE  v2024.04.12
domain::creators::time_dependence::Shape< Label > Class Template Referencefinal

A Shape whose inner surface conforms to a surface of constant Boyer-Lindquist radius, in Kerr-Schild coordinates as given by domain::CoordinateMaps::TimeDependent::Shape. More...

#include <Shape.hpp>

Classes

struct  Center
 Center for the Shape map. More...
 
struct  InitialTime
 The initial time of the function of time. More...
 
struct  InnerRadius
 The inner radius of the Shape map, the radius at which to begin applying the map. More...
 
struct  LMax
 The max angular resolution l of the Shape. More...
 
struct  Mass
 The mass of the Kerr black hole. More...
 
struct  OuterRadius
 The outer radius of the Shape map, beyond which it is no longer applied. More...
 
struct  Spin
 The dimensionless spin of the Kerr black hole. More...
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::Grid, Frame::Inertial, ShapeMap >, domain::CoordinateMap< Frame::Grid, Frame::Distorted, ShapeMap >, domain::CoordinateMap< Frame::Distorted, Frame::Inertial, Identity > >
 
using options = tmpl::list< InitialTime, LMax, Mass, Spin, Center, InnerRadius, OuterRadius >
 
- Public Types inherited from domain::creators::time_dependence::TimeDependence< 3 >
using creatable_classes = tmpl::append< creatable_classes_any_dim, tmpl::conditional_t< MeshDim==1, creatable_classes_1d, tmpl::conditional_t< MeshDim==2, creatable_classes_2d, creatable_classes_3d > > >
 

Public Member Functions

 Shape (const Shape &)=delete
 
 Shape (Shape &&)=default
 
Shapeoperator= (const Shape &)=delete
 
Shapeoperator= (Shape &&)=default
 
 Shape (double initial_time, size_t l_max, double mass, std::array< double, 3 > spin, std::array< double, 3 > center, double inner_radius, double outer_radius, const Options::Context &context={})
 
auto get_clone () const -> std::unique_ptr< TimeDependence< mesh_dim > > override
 Returns a std::unique_ptr pointing to a copy of the TimeDependence. More...
 
auto block_maps_grid_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, mesh_dim > > > override
 Returns the coordinate maps from the Frame::Grid to the Frame::Inertial frame for each block. More...
 
auto block_maps_grid_to_distorted (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Distorted, mesh_dim > > > override
 Returns the coordinate maps from the Frame::Grid to the Frame::Distorted frame for each block. Returns vector of nullptr if there is no distorted frame. More...
 
auto block_maps_distorted_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Distorted, Frame::Inertial, mesh_dim > > > override
 Returns the coordinate maps from the Frame::Distorted to the Frame::Inertial frame for each block. Returns vector of nullptr if is no distorted frame. More...
 
auto functions_of_time (const std::unordered_map< std::string, double > &initial_expiration_times={}) const -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > override
 Returns the functions of time for the domain. More...
 
- Public Member Functions inherited from domain::creators::time_dependence::TimeDependence< 3 >
 TimeDependence (const TimeDependence &)=default
 
 TimeDependence (TimeDependence &&)=default
 
TimeDependenceoperator= (const TimeDependence &)=default
 
TimeDependenceoperator= (TimeDependence &&)=default
 
virtual auto get_clone () const -> std::unique_ptr< TimeDependence >=0
 Returns a std::unique_ptr pointing to a copy of the TimeDependence. More...
 
virtual auto block_maps_grid_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, MeshDim > > >=0
 Returns the coordinate maps from the Frame::Grid to the Frame::Inertial frame for each block. More...
 
virtual auto block_maps_grid_to_distorted (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Distorted, MeshDim > > >=0
 Returns the coordinate maps from the Frame::Grid to the Frame::Distorted frame for each block. Returns vector of nullptr if there is no distorted frame. More...
 
virtual auto block_maps_distorted_to_inertial (size_t number_of_blocks) const -> std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::Distorted, Frame::Inertial, MeshDim > > >=0
 Returns the coordinate maps from the Frame::Distorted to the Frame::Inertial frame for each block. Returns vector of nullptr if is no distorted frame. More...
 
virtual auto functions_of_time (const std::unordered_map< std::string, double > &initial_expiration_times={}) const -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > >=0
 Returns the functions of time for the domain. More...
 
bool is_none () const
 Returns true if the instance is None, meaning no time dependence.
 

Static Public Member Functions

static std::string name ()
 

Static Public Attributes

static constexpr size_t mesh_dim = 3
 
static constexpr Options::String help
 

Friends

template<domain::ObjectLabel OtherLabel>
bool operator== (const Shape< OtherLabel > &lhs, const Shape< OtherLabel > &rhs)
 

Detailed Description

template<domain::ObjectLabel Label>
class domain::creators::time_dependence::Shape< Label >

A Shape whose inner surface conforms to a surface of constant Boyer-Lindquist radius, in Kerr-Schild coordinates as given by domain::CoordinateMaps::TimeDependent::Shape.

Details

This TimeDependence is suitable for use on a spherical shell, where LMax is the number of l and m spherical harmonics to use in approximating the Kerr horizon, of mass Mass and spin Spin. The value of the Boyer-Lindquist radius to which the inner surface conforms is given by the value of inner_radius. If the user wants the inner surface of the Shape to conform to a Kerr horizon for a given mass and spin, inner_radius should be the Boyer-Lindquist radius of the outer horizon.

The actual shape map that is applied will go from the Grid to the Distorted frame, and then an identity map will go from the Distorted to Inertial frame. The reasoning behind this is because in basically all use cases (BBH), the shape map will go to the Distorted frame only and other maps will go from the Distorted frame to the Inertial frame.

Note
The quantities stored in the FunctionOfTime are not the complex spherical-harmonic coefficients \(\lambda_{lm}(t)\), but instead are the real-valued SPHEREPACK coefficients \(a_{lm}(t)\) and \(b_{lm}(t)\) used by Spherepack. The relationship between these two sets of coefficients is

\begin{align} a_{l0} & = \sqrt{\frac{2}{\pi}}\lambda_{l0}&\qquad l\geq 0,\\ a_{lm} & = (-1)^m\sqrt{\frac{2}{\pi}} \mathrm{Re}(\lambda_{lm}) &\qquad l\geq 1, m\geq 1, \\ b_{lm} & = (-1)^m\sqrt{\frac{2}{\pi}} \mathrm{Im}(\lambda_{lm}) &\qquad l\geq 1, m\geq 1. \end{align}

See domain::CoordinateMaps::TimeDependent::Shape for more details.
To use this time dependence with the control_system::system::Shape control system, you must choose the same
Template Parameters
Labelthat the control system is using.

Member Function Documentation

◆ block_maps_distorted_to_inertial()

template<domain::ObjectLabel Label>
auto domain::creators::time_dependence::Shape< Label >::block_maps_distorted_to_inertial ( size_t  number_of_blocks) const -> std::vector<std::unique_ptr<domain::CoordinateMapBase< Frame::Distorted, Frame::Inertial, mesh_dim>>>
overridevirtual

Returns the coordinate maps from the Frame::Distorted to the Frame::Inertial frame for each block. Returns vector of nullptr if is no distorted frame.

Implements domain::creators::time_dependence::TimeDependence< 3 >.

◆ block_maps_grid_to_distorted()

template<domain::ObjectLabel Label>
auto domain::creators::time_dependence::Shape< Label >::block_maps_grid_to_distorted ( size_t  number_of_blocks) const -> std::vector<std::unique_ptr<domain::CoordinateMapBase< Frame::Grid, Frame::Distorted, mesh_dim>>>
overridevirtual

Returns the coordinate maps from the Frame::Grid to the Frame::Distorted frame for each block. Returns vector of nullptr if there is no distorted frame.

Implements domain::creators::time_dependence::TimeDependence< 3 >.

◆ block_maps_grid_to_inertial()

template<domain::ObjectLabel Label>
auto domain::creators::time_dependence::Shape< Label >::block_maps_grid_to_inertial ( size_t  number_of_blocks) const -> std::vector<std::unique_ptr<domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, mesh_dim>>>
overridevirtual

Returns the coordinate maps from the Frame::Grid to the Frame::Inertial frame for each block.

Implements domain::creators::time_dependence::TimeDependence< 3 >.

◆ functions_of_time()

template<domain::ObjectLabel Label>
auto domain::creators::time_dependence::Shape< Label >::functions_of_time ( const std::unordered_map< std::string, double > &  initial_expiration_times = {}) const -> std::unordered_map< std::string, std::unique_ptr<domain::FunctionsOfTime::FunctionOfTime>>
overridevirtual

Returns the functions of time for the domain.

Implements domain::creators::time_dependence::TimeDependence< 3 >.

◆ get_clone()

template<domain::ObjectLabel Label>
auto domain::creators::time_dependence::Shape< Label >::get_clone ( ) const -> std::unique_ptr<TimeDependence<mesh_dim>>
overridevirtual

Member Data Documentation

◆ help

template<domain::ObjectLabel Label>
constexpr Options::String domain::creators::time_dependence::Shape< Label >::help
staticconstexpr
Initial value:
= {
"Creates a Shape that conforms to a Kerr horizon of given mass and "
"spin."}

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