IMRPhenomNSBH merger-branch classification
Scope and status
Specification nsbh-branch-classification/v1 fixes the four merger classes in Thompson et al. (2020) Table I. It is a component specification, not a claim about the branch-dependent amplitude fits, remnant/QNM, phase, or assembled waveform. This revision fixes the reference inputs, boundary conventions, and acceptance grid before native comparison.
Inputs, conventions, and options
The reference takes the positive, finite tidal frequency \(f_{\rm tide}\), positive, finite remnant ringdown frequency \(f_{\rm RD}\), and the baryonic torus-mass ratio \(T=M_{b,\rm torus}/M_{b,\rm NS}\). Both frequencies use the same units (Hz in the native carrier). \(T\) may be the signed printed fit or the native nonnegative adapter: both have the same strictly positive torus flag. Inputs outside these preconditions are outside this gate.
The synthetic FP64 grid fixes \(f_{\rm tide}=1000\) Hz, \(f_{\rm RD}\in\{\operatorname{nextafter}(1000,-\infty),1000, \operatorname{nextafter}(1000,+\infty)\}\) Hz, and \(T\in\{-0.25,0,+0.25\}\). Thus every class, equality, and both sides of the frequency and torus boundaries are checked. A second composition grid uses \(q\in\{1,2,5,10,15\}\), \(\chi\in\{-0.5,0,0.5\}\), and \(\Lambda\in\{300,800,2600,5000\}\) (60 cases), with the independent disruption frequency and torus ratio and each \(f_{\rm RD}/f_{\rm tide}\in\{0.8,1,1.2\}\). This last ringdown frequency is a controlled branch input, not a validation of the remnant/QNM model. The native gates use CPU FP64 on both Torch and JAX.
Mathematics and components
Thompson et al. (2020), Table I and Sec. II.A step 6 define two tests: \(H=[f_{\rm tide}\ge f_{\rm RD}]\) and \(B=[T>0]\). The four classes are
| \(H\) | \(B\) | Table I class |
|---|---|---|
| true | false | non-disruptive, no torus |
| true | true | mildly disruptive, torus remnant |
| false | false | mildly disruptive, no torus remnant |
| false | true | disruptive, torus remnant |
The equality \(f_{\rm tide}=f_{\rm RD}\) is on the \(H\) side; a zero torus ratio is on the no-torus side. The signed torus fit may be negative; the carrier adapter \(\max(0,T)\) leaves \(B\) unchanged. This gate compares the discrete branch only. Derivatives are undefined across either boundary and are not accepted as a smooth-gradient claim.
Implementation mapping
The independent scalar function is
diffgw_reference.nsbh_branch.classify_branch, reusing the already separate
disruption and torus references only for composition inputs. Both native
approximants.imrphenom_nsbh modules expose a small predicate helper
used by the production amplitude assembly. Neither native module imports the
scalar reference.
Evidence and limitations
The acceptance criterion is exact class agreement on every frozen case; there is no floating-point error tolerance for a discrete decision. The independent disruption-root and torus/ISCO component gates separately check their numerical inputs. This branch gate does not certify the remnant-derived \(f_{\rm RD}\), the fitted amplitude parameters selected by a branch, waveform agreement with an external binary, or physical accuracy.
Reproduce the checks
Run JAX_ENABLE_X64=1 PYTHONPATH=src pytest -q
tests/test_nsbh_branch_reference.py with reference, Torch, and JAX extras on
CPU. The validation receipt
records the exact command, dependency versions, counts, skips, and failures.