SpECTRE
v2024.09.29

Binary compactobject data in general relativity, constructed from superpositions of two isolated objects. More...
#include <Binary.hpp>
Classes  
struct  AngularVelocity 
struct  CenterOfMassOffset 
struct  Expansion 
struct  FalloffWidths 
struct  LinearVelocity 
struct  ObjectLeft 
struct  ObjectRight 
struct  XCoords 
Public Types  
using  options = tmpl::list< XCoords, CenterOfMassOffset, ObjectLeft, ObjectRight, AngularVelocity, Expansion, LinearVelocity, FalloffWidths > 
Public Member Functions  
Binary (const Binary &)=delete  
Binary &  operator= (const Binary &)=delete 
Binary (Binary &&)=default  
Binary &  operator= (Binary &&)=default 
Binary (const std::array< double, 2 > xcoords, const std::array< double, 2 > center_of_mass_offset, std::unique_ptr< IsolatedObjectBase > object_left, std::unique_ptr< IsolatedObjectBase > object_right, const double angular_velocity, const double expansion, const std::array< double, 3 > linear_velocity, const std::optional< std::array< double, 2 > > falloff_widths, const Options::Context &context={})  
Binary (CkMigrateMessage *m)  
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 
template<typename... RequestedTags>  
tuples::TaggedTuple< RequestedTags... >  variables (const tnsr::I< DataVector, 3, Frame::Inertial > &x, const Mesh< 3 > &mesh, const InverseJacobian< DataVector, 3, Frame::ElementLogical, Frame::Inertial > &inv_jacobian, tmpl::list< RequestedTags... >) const 
void  pup (PUP::er &p) override 
const std::array< double, 2 > &  x_coords () const 
Coordinates of the objects, ascending left to right.  
double  y_offset () const 
Offset in y and z coordinates of the objects.  
double  z_offset () const 
const std::array< std::unique_ptr< IsolatedObjectBase >, 2 > &  superposed_objects () const 
The two objects. First entry is the left object, second entry is the right object.  
double  angular_velocity () const 
double  expansion () const 
const std::array< double, 3 > &  linear_velocity () const 
const std::optional< std::array< double, 2 > > &  falloff_widths () const 
Static Public Attributes  
static constexpr Options::String  help 
Binary compactobject 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 quasiequilibrium 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 blackhole or neutronstar solutions in different coordinates. Most quantities are constructed by superposing the two isolated solutions (see e.g. Eq. (89) in [195] or Eq. (4546) in [126]):
\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 extrinsiccurvature trace of the two individual solutions, \(r_\alpha\) is the Euclidean coordinatedistance from the center of each object and \(w_\alpha\) are parameters describing the falloff widths of Gaussian window functions. The window functions 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 inverseradial coordinate map and asymptoticallyflat boundary conditions. The falloffwidths are chosen in terms of the Newtonian Lagrange points of the two objects in [195] and [126], 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.
\begin{equation} \beta^i_\mathrm{background} = (\Omega y, \Omega x, 0) + \dot{a}_0 x^i + v^i_0 \end{equation}
where \(\Omega\) is the angularvelocity parameter and \(\dot{a}_0\) is an expansion parameter. Both control the eccentricity of the orbit. The parameter \(v^i_0\) is a constant velocity that can be used to control the linear momentum of the system (see Eq. (28) in [150]).

staticconstexpr 