Assorted binaries

For convenience, an assortment of constructors is provided for relevant classes of physical scenarios, as well as the ability to construct random systems across a broad range of reasonable physical parameters.

In each case, the returned object is a PNSystem, which can be used as input to most functions in this package — most notably the orbital_evolution function. For example, to integrate the inspiral of a binary black-hole system in "superkick" configuration, we could write

inspiral = orbital_evolution(superkick())

This implicitly provides the M₁, M₂, χ⃗₁, χ⃗₂, Ωᵢ, Rᵢ, and PNOrder arguments (along with Λ₁ and/or Λ₂ for BHNS or NSNS systems) to orbital_evolution; other keyword arguments to that function can be provided after superkick().

PostNewtonian.hangup_kickMethod
hangup_kick(;v=0.2, χ=0.99, θ=deg2rad(50.98), ϕ=deg2rad(30.0), PNOrder=typemax(Int))
hangup_kick(;v=0.2, chi=0.99, theta=deg2rad(50.98), phi=deg2rad(30.0), PNOrder=typemax(Int))

Construct a black-hole binary in hangup-kick configuration.

The spin magnitudes are both equal to χ. The direction of $\vec{\chi}_1$ is given by the spherical coordinates (θ, ϕ). $\vec{\chi}_2$ is the same, except that its projection into the orbital plane is opposite to that of $\vec{\chi}_1$.

See also superkick for the original systems, which can't actually achieve recoil kicks as large as those achieved by "hangup-kick" systems.

The physical mechanism here is similar to the one described in superkick, with an additional "hangup" due to the fact that the spins have components parallel to the orbital angular velocity. The physical interpretation of that part is that any system with such spin components will not merge as quickly because the remnant black hole must have total dimensionless spin less than 1, so excess angular momentum must be radiated away. This gives the hangup-kick configuration more time to develop a large recoil.

Examples

julia> pnsystem = hangup_kick(v=0.1)
BBH{Vector{Float64}, 9223372036854775805//2}([0.5, 0.5, 0.3845784887294712, 0.6661094819774992, 0.6232957115416596, -0.3845784887294712, -0.6661094819774992, 0.6232957115416596, 1.0, 0.0, 0.0, 0.0, 0.1, 0.0])

julia> inspiral = orbital_evolution(pnsystem);

julia> inspiral[:v, 1]
0.1

julia> absvec(PostNewtonian.χ⃗₁(inspiral[1]))
0.99
source
PostNewtonian.superkickMethod
superkick(;v=0.2, χ=0.99, PNOrder=typemax(Int))
superkick(;v=0.2, chi=0.99, PNOrder=typemax(Int))

Construct a black-hole binary in "superkick" configuration.

This is the scenario first published by Campanelli et al. (2007), which has equal-mass black holes with spins of equal magnitude oriented in opposite directions in the orbital plane. This configuration produces large asymmetrical emission of gravitational-wave linear momentum along the $+z$ or $-z$ directions, depending on which part of the orbit the binary is in. Depending on when the system mergers, the remnant may then acquire a huge recoil velocity.

(That recoil velocity, of course, depends on details of the merger, which post-Newtonian approximations cannot describe. Therefore, we cannot actually use PN methods to derive any useful information about the remnant.)

Note that the name "superkick" appeared in the literature before a class of systems that can achieve even larger recoil velocities: see hangup_kick for such systems.

Examples

julia> pnsystem = superkick(v=0.1)
BBH{Vector{Float64}, 9223372036854775805//2}([0.5, 0.5, 0.99, 0.0, 0.0, -0.99, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.1, 0.0])

julia> inspiral = orbital_evolution(pnsystem);

julia> inspiral[:v, 1]
0.1

julia> absvec(PostNewtonian.χ⃗₁(inspiral[1]))
0.99
source
Base.randMethod
rand([rng=default_rng()], pnclass; [v=0.2], [PNOrder=typemax(Int)])

Generate a random PNSystem, specifically of class pnclass (one of BBH, BHNS, or NSNS), with parameters chosen to be consistent with typical LIGO/Virgo/KAGRA searches as of this writing.

Examples

julia> pnsystem = rand(BBH);

julia> inspiral = orbital_evolution(pnsystem);

Parameter ranges

Choosing the space of parameters from which to randomly select values is nontrivial. The most relevant numbers are of two types from LIGO/Virgo/KAGRA: (1) the range of parameters over which systems are searched for, and (2) the range of parameters used as priors in parameter estimation.

Appendix B1 of LIGO's GWTC-1 catalog paper says that the "spin vectors are assumed to be isotropic on the sphere and uniform in spin magnitude", with two choices of uniform magnitude: $a_i \leq 0.89$ and $a_i \leq 0.05$. The dimensionless tidal deformabilities $\Lambda_i$ of each NS are assumed to be jointly uniform within $0 \leq \Lambda_i \leq 5000$.

The more current GWTC-3 paper searches with the following:

The PyCBC-BBH analysis focuses on a region ranging in primary component mass from 5M to 350M, with mass ratios from 1/3 to 1, and effective spins ranging from $\chi_\mathrm{eff} = −0.998$ to $0.998$.

That paper's parameter estimation uses uniform priors over spin magnitudes and redshifted component masses; isotropic spin orientation, sky location and binary orientation; mass-ratio $q \in [0.05, 1]$ (sometimes extending down to $q=0.02$). It seems that the actual ranges of the spin magnitudes and masses are restricted based on initial guesses, which may be expanded to ensure that the posteriors lie entirely within the priors. The distance priors are uniform in $D_\mathrm{L}^2$, with some adjustments due to cosmology.

For the purposes of this package, we're not too interested in absolute scales — specifically distance or total mass — so we'll just choose the total mass to be $1$ at the initial frequency, then sample based on mass ratio and spin magnitudes.

Given these, it seems like the current state of the art would be well covered by choosing a random q ∈ [0.05, 1], χᵢ ∈ [0, 0.998], and Λᵢ ∈ [0, 5000], with isotropic choices for orientations. Note that the Λᵢ are only used if the input pnclass is BHNS or NSNS.

If you would prefer a different range of parameters, the source code for this function is easily modified.

source