IMRPhenomD amplitude and joins, first reference slice
Scope and status
imrphenomd-amplitude-joins-paper-precision/v1 is an executable specification
in src/diffgw_reference/imrphenomd_amplitude.py.
Its primary source is Khan et al., Paper II, arXiv:1508.07253v2.
This slice specifies the dominant-mode scaled amplitude and seven printed
calibration rows. It takes the total-mass-unit ringdown frequency \(f_{\rm RD}\)
and damping frequency \(f_{\rm damp}\) as inputs. Remnant fits, Kerr QNMs, phase,
polarizations, the \(Mf=0.2\) implementation cutoff and optional tapers are
outside this version's mathematical claim.
The remnant reference slice specifies the remnant
fits and conditional QNM inputs used at this boundary. The
phase reference slice specifies the intrinsic phase
branches and their joins.
Inputs, conventions, and options
The dimensionless frequency is \(u=Mf\), with \(M\) in seconds when \(f\) is in Hz. The amplitude below is \(A/A_0\); the common Newtonian factor \(A_0\propto f^{-7/6}\) is restored by the frontends. For masses \(m_1\geq m_2>0\), \(\eta=m_1m_2/M^2\), \(\delta=(m_1-m_2)/M\), \(\chi_s=(\chi_1+\chi_2)/2\), and \(\chi_a=(\chi_1-\chi_2)/2\).
Mathematics and components
Paper II Eqs. (2)–(4) give
Table 5 uses this unscaled \(\chi_{\rm PN}\), not the normalized \(\hat\chi\) discussed elsewhere in the paper. Its seven amplitude rows \(\rho_{1,2,3},v_2,\gamma_{1,2,3}\) are transcribed as exact decimal strings, using only the digits printed in Table 5. Each row \(c_0,\ldots,c_{10}\) enters Eq. (31), with \(x=\chi_{\rm PN}-1\):
Eqs. (29)–(30) and Appendix B Eqs. (54)–(60) give the inspiral branch
The seven \(\mathcal A_k\) are written as exact rational and symbolic \(\pi\) terms in the reference module. Eq. (19) gives
The lower join is \(u_1=0.014\); the upper join \(u_3\) is the peak in Eq. (20)
where \(|\gamma_2|<1\). The existing Torch/JAX implementations continue that
formula at \(|\gamma_2|\geq1\) by setting the square root to zero. That gives a
real join frequency but not a stationary point of Eq. (19); the reference
names this separately as peak_compatibility and uses the true derivative
\(a'_{\rm MR}(u_3)\) in the join. This continuation is an implementation choice,
not a result established by Eq. (20).
For \(t=(u-u_1)/(u_3-u_1)\) and \(h=u_3-u_1\), the middle branch is the unique quartic matching \(a_{\rm ins}\) and its derivative at \(u_1\), \(a_{\rm MR}\) and its derivative at \(u_3\), and fitted \(v_2\) at \(u_2=(u_1+u_3)/2\) (Eqs. (21)–(26), Table 2). The reference constructs it as a cubic Hermite interpolant \(H(t)\) plus \(16[v_2-H(1/2)]t^2(1-t)^2\). This differs algebraically from the frontend Vandermonde solve but defines the same quartic. Both branches and their first derivatives therefore meet at each join.
Implementation mapping
The backend bindings are torchwave/approximants/imrphenomd.py
and jaxwave/approximants/imrphenomd.py:
eval_table_v evaluates the fit IDs, pn_amplitude_coefficients the PN ID,
amplitude_peak_frequency the peak ID, and
intermediate_amplitude_coeffs with compute_slope_peak the join ID.
forward (Torch) and evaluate (JAX) assemble the spin coordinates and
three amplitude branches. The maintained
test_imrphenomd_math_reference.py
checks every mapped component, including values on both sides of each join
and frequency derivatives in all three open regions.
Evidence and limitations
Evidence and checks
| Component IDs | Paper anchor | Comparison |
|---|---|---|
phenomd.amp.fit.*.v1 |
Eq. (31), Table 5 | Printed-row transcription and hierarchical evaluation on both frontends |
phenomd.amp.spin_coordinates.v1 |
Eqs. (2)–(4) | Exact spin coordinate construction in test cases |
phenomd.amp.pn.v1, phenomd.amp.inspiral.v1 |
Eqs. (29)–(30), (54)–(60) | All PN coefficients and inspiral waveform-amplitude ratios |
phenomd.amp.merger_ringdown.v1, phenomd.amp.peak.v1 |
Eqs. (19)–(20) | Peak formula and merger-ringdown amplitude ratios; continuation called out separately |
phenomd.amp.intermediate.v1 |
Eqs. (21)–(26), Table 2 | Exact five-condition identity, interior values and endpoint slopes against Torch/JAX |
The production TABLE_V_UNROUNDED_COEFFS
stores additional inherited digits whose publication provenance remains
unresolved. Tests pass that table explicitly to the independent Eq. (31)
formula to verify implementation algebra, while the reference's own default
rows contain only published digits. Agreement under the supplied production
rows is not evidence that the extra digits appear in the paper. The complete
amplitude test compares ratios across all three regions, canceling the shared
SI conversion and orientation factors. It qualifies the amplitude equations
conditional on the supplied remnant frequencies and calibration data; it does
not qualify the complete waveform or its physical accuracy.
Reproduce the checks
Run pytest -q tests/test_imrphenomd_math_reference.py. The maintained strict
--require-math-reference gate also collects this module automatically.