|
SpECTRE
v2025.08.19
|
Class to compute post-Newtonian trajectories. More...
#include <BinaryTrajectories.hpp>
Public Member Functions | |
| BinaryTrajectories (double initial_separation, const std::array< double, 3 > ¢er_of_mass_velocity=std::array< double, 3 >{{0.0, 0.0, 0.0}}, bool newtonian=false) | |
| BinaryTrajectories (BinaryTrajectories &&)=default | |
| BinaryTrajectories & | operator= (BinaryTrajectories &&)=default |
| BinaryTrajectories (const BinaryTrajectories &)=default | |
| BinaryTrajectories & | operator= (const BinaryTrajectories &)=default |
| template<typename DataType > | |
| DataType | separation (const DataType &time) const |
| Gives separation as function of time. | |
| template<typename DataType > | |
| DataType | orbital_frequency (const DataType &time) const |
Gives orbital frequency \(f\) as a function of time calculated from Kepler's third law \(f^2\propto\frac{1}{a^3}\) where \(a\) is calculated from separation. | |
| template<typename DataType > | |
| DataType | angular_velocity (const DataType &time) const |
| Gives the angular velocity of the objects as a function of time. Calculated by \(\omega(t)=\frac{d\theta(t)}{dt}\) where \(\theta(t)=f(t)t\). More... | |
| template<typename DataType > | |
| std::array< tnsr::I< DataType, 3 >, 2 > | positions (const DataType &time) const |
| Gives the positions of the two objects as a function of time. | |
| template<typename DataType > | |
| std::array< tnsr::I< DataType, 3 >, 2 > | positions_no_expansion (const DataType &time) const |
Same as positions, except the separation remains constant (equal to the initial separation). More... | |
Class to compute post-Newtonian trajectories.
Computes the leading post-Newtonian trajectories \(x_1^i(t)\) and \(x_2^i(t)\) for an equal-mass binary with a total mass of 1. Currently, this class implements the leading-order terms of the integral of Eq. (226) and the square root of Eq. (228) of [24] :
\begin{align} r(t) &= \left(r_0^4 - \frac{64}{5}t\right)^{1/4}, \\ \Omega(t) &= r^{-3/2}(t). \end{align}
In terms of these functions, the positions of objects 1 and 2 are
\begin{align} x_1(t) &= -\frac{r(t)}{2}\cos\left[\Omega(t) t\right] + v_x t, \\ y_1(t) &= -\frac{r(t)}{2}\sin\left[\Omega(t) t\right], + v_y t\\ x_2(t) &= \frac{r(t)}{2}\cos\left[\Omega(t) t\right], + v_x t\\ y_2(t) &= \frac{r(t)}{2}\sin\left[\Omega(t) t\right], + v_y t\\ z_1(t) &= z_2(t) = v_z t. \end{align}
These trajectories are useful for, e.g., testing a horizon-tracking control system.
newtonian argument is true, then this will just give Kepler's third law | DataType BinaryTrajectories::angular_velocity | ( | const DataType & | time | ) | const |
Gives the angular velocity of the objects as a function of time. Calculated by \(\omega(t)=\frac{d\theta(t)}{dt}\) where \(\theta(t)=f(t)t\).
orbital_frequency and angular_velocity give the same result because the orbital frequency is independent of time. | std::array< tnsr::I< DataType, 3 >, 2 > BinaryTrajectories::positions_no_expansion | ( | const DataType & | time | ) | const |
Same as positions, except the separation remains constant (equal to the initial separation).