SpECTRE  2021.08.02
Xcts::AnalyticData::Binary< IsolatedObjectRegistrars, Registrars > Class Template Reference

Binary compact-object data in general relativity, constructed from superpositions of two isolated objects. More...

#include <Binary.hpp>

Classes

struct  AngularVelocity
 
struct  FalloffWidths
 
struct  ObjectA
 
struct  ObjectB
 
struct  XCoords
 

Public Types

using IsolatedObjectBase = Xcts::Solutions::AnalyticSolution< IsolatedObjectRegistrars >
 
using options = tmpl::list< XCoords, ObjectA, ObjectB, AngularVelocity, FalloffWidths >
 

Public Member Functions

 Binary (const Binary &)=delete
 
Binaryoperator= (const Binary &)=delete
 
 Binary (Binary &&)=default
 
Binaryoperator= (Binary &&)=default
 
 Binary (std::array< double, 2 > xcoords, std::unique_ptr< IsolatedObjectBase > object_a, std::unique_ptr< IsolatedObjectBase > object_b, double angular_velocity, std::optional< std::array< double, 2 > > falloff_widths) noexcept
 
 Binary (CkMigrateMessage *m) noexcept
 
 WRAPPED_PUPable_decl_template (Binary)
 
template<typename DataType , typename... RequestedTags>
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< RequestedTags... >) const noexcept
 
template<typename... RequestedTags>
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataVector, 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
 
const std::array< double, 2 > & x_coords () const noexcept
 
const std::array< std::unique_ptr< IsolatedObjectBase >, 2 > & superposed_objects () const noexcept
 
double angular_velocity () const noexcept
 
const std::optional< std::array< double, 2 > > & falloff_widths () const noexcept
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

template<typename IsolatedObjectRegistrars, typename Registrars = tmpl::list< Xcts::AnalyticData::Registrars::Binary<IsolatedObjectRegistrars>>>
class Xcts::AnalyticData::Binary< IsolatedObjectRegistrars, Registrars >

Binary compact-object data in general relativity, constructed from superpositions of two isolated objects.

This class implements background data for the XCTS equations describing two objects in a quasi-equilibrium orbit, i.e. with \(\bar{u}=0\) and \(\partial_t K=0\). Both objects can be chosen from the list of IsolatedObjectRegistrars, e.g. they can be black-hole or neutron-star solutions in different coordinates. Most quantities are constructed by superposing the two isolated solutions (see e.g. Eq. (8-9) in [109] or Eq. (45-46) in [75]):

\begin{align} \bar{\gamma}_{ij} &= f_{ij} + \sum_{\alpha=1}^2 e^{-r_\alpha^2 / w_\alpha^2}\left(\gamma^\alpha_{ij} - f_{ij}\right) \\ K &= \sum_{\alpha=1}^2 e^{-r_\alpha^2 / w_\alpha^2}K^\alpha \end{align}

where \(\gamma^\alpha_{ij}\) and \(K^\alpha\) denote the spatial metric and extrinsic-curvature trace of the two individual solutions, \(r_\alpha\) is the Euclidean coordinate-distance from the center of each object and \(w_\alpha\) are parameters describing Gaussian falloff-widths. The Gaussian falloffs facilitate that the influence of either of the two objects at the position of the other is strongly damped, and they also avoid logarithmic scaling of the solution at large distances where we would typically employ an inverse-radial coordinate map and asymptotically-flat boundary conditions. The falloff-widths are chosen in terms of the Newtonian Lagrange points of the two objects in [109] and [75], and they are input parameters in this implementation. The falloff can be disabled by passing std::nullopt to the constructor, or None in the input file.

The remaining quantities that this class implements relate to the orbital motion of the two objects. To obtain initial data in "co-rotating" coordinates where the two objects are initially at rest we prescribe the background shift

\begin{equation} \beta^i_\mathrm{background} = (-\Omega y, \Omega x, 0) \end{equation}

where \(\Omega\) is the angular-velocity parameter.

Member Data Documentation

◆ help

template<typename IsolatedObjectRegistrars , typename Registrars = tmpl::list< Xcts::AnalyticData::Registrars::Binary<IsolatedObjectRegistrars>>>
constexpr Options::String Xcts::AnalyticData::Binary< IsolatedObjectRegistrars, Registrars >::help
staticconstexpr
Initial value:
=
"Binary compact-object data in general relativity, constructed from "
"superpositions of two isolated objects."