|
SpECTRE
2021.08.02
|
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 | |
| Binary & | operator= (const Binary &)=delete |
| Binary (Binary &&)=default | |
| Binary & | operator= (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 |
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.
|
staticconstexpr |