SpECTRE
v2024.12.16
|
Binary compact-object 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 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 [195] or Eq. (45-46) 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 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 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 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 [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 angular-velocity 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 |