IMRPhenomXHM inspiral carrier rescaling
Scope and status
This research component specifies only the analytic rescaling of the
IMRPhenomXAS (22) phase used by the IMRPhenomXHM higher-mode inspiral. The
separate amplitude closure records the
earliest remaining carrier mismatch. Its
stable component IDs are
xhm.phase.inspiral.carrier-rescaling.v1 and
xhm.phase.inspiral.carrier-coefficients.v1; both are executable in the
independent scalar reference, Torch, and JAX.
This is not a complete IMRPhenomXHM inspiral phase and is not a public catalog entry. In particular, it excludes the complex-PN-amplitude argument, the high-mass-ratio fitted replacement, the calibrated linear attachment term, the mode phase constant, the intermediate phase, ringdown phase, and (32) mode mixing.
Inputs, conventions, and options
The mode index (m) is a positive integer. The direct helper receives the dimensionless (22) carrier phase already evaluated at the scaled frequency (2f/m). The coefficient helper receives the integer PN index (i) and the real (22)-phase coefficients (c_{22}^{i}) and (d_{22}^{i}). Inputs may be scalar or broadcast arrays. Native output preserves the input floating dtype; Torch gradients and JAX transformations remain supported.
The component uses the Fourier and positive-frequency mode conventions of García-Quirós et al. It does not choose the additive phase or linear time gauge. Those choices are deliberately outside this component.
Mathematics and components
The source is García-Quirós et al., arXiv:2001.10914v2, Eq. (29) and Appendix D, Eqs. (61)--(63). The carrier contribution is
For a (22)-phase term
the algebraically equivalent mode coefficients are
| Component ID/version | Source | Status | Scalar reference | Torch | JAX |
|---|---|---|---|---|---|
xhm.phase.inspiral.carrier-rescaling.v1 |
Eq. (29) | Executable | rescaled_carrier_phase |
rescale_carrier_phase |
rescale_carrier_phase |
xhm.phase.inspiral.carrier-coefficients.v1 |
App. D Eq. (63) | Executable | rescaled_coefficients |
rescale_carrier_phase_coefficients |
rescale_carrier_phase_coefficients |
Implementation mapping
The independent SymPy construction is in
diffgw_reference.imrphenomxhm_inspiral_carrier. It proves term by term that
direct frequency rescaling and the Appendix-D coefficient transformation are
identical. The native implementations are
torchwave.approximants.xhm_inspiral_phase_clean and
jaxwave.approximants.xhm_inspiral_phase_clean. The production XHM evaluators
route their existing carrier multiplication through these helpers; neither
native frontend imports or evaluates the scalar reference.
The current production attachment constants and all fitted phase surfaces
remain in imrphenom_xhm.py. Routing the multiplication through the clean
helper is therefore an equation-level refactor, not a new full-phase model.
Evidence and limitations
Source transcription is checked by exact SymPy simplification for modes (m=1,2,3,4) and five representative PN indices. Torch and JAX values are checked independently against the scalar expressions in float64, including broadcasting, invalid inputs, a Torch gradient, and JAX JIT.
The historical, one-off black-box diagnostic separately evaluated the exact frozen catalog and holdout parameters mode by mode. With lal 7.7.1, lalsimulation 6.2.1, Torch 2.14.0+cu130, and NumPy 2.3.5, the (22) mode agrees to numerical precision after a constant phase convention. Higher-mode inspiral phase residuals after a diagnostic affine gauge removal are between (4.5\times10^{-5}) and (1.33\times10^{-4}) rad in those two cases. This is external numerical-oracle evidence, not part of the symbolic proof and not a license to infer or fit missing coefficients.
The same diagnostic found much larger nonlinear residuals in higher-mode
intermediate phase regions (6.24--28.80 rad) and intermediate amplitude
relative L2 errors (0.77--7.04). Inspiral amplitude errors also remain as high
as 0.48 in the catalog (32) mode. Consequently this component carries no
claim for XHM-INS-PHASE, XHM-INS-AMP, intermediate, mixing, ringdown,
projection, or complete-waveform parity. The frozen full-polarization gates
remain failed.
The exact regional values, environment inventory, and earliest (3,2)
amplitude finding are frozen in the
component receipt.
In the same latest-package environment, the broader XHM regression selection
passes 106 tests and skips 5, but its two existing Torch
no_grad/inference_mode connection checks fail on an absolute difference of
about (7.3\times10^{-25}). The failures reproduce unchanged from an untouched
github/main checkout, so they are recorded as a baseline/environment
reproducibility blocker rather than evidence for or against this component.
Reproduce the checks
Run the independent and native component checks with:
The mode/regime decomposition above is historical diagnostic evidence; its one-off replay script is not maintained. With the optional pinned LAL Python bindings installed, run the maintained frozen whole-waveform binary gate:
JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu PYTHONPATH=src \
python scripts/qualify_xhm_xphm_frozen_binary.py
This gate does not replay the historical per-region ablation. A change to the equations or conventions requires a new component version and corresponding scalar-reference tests; changing diagnostic package versions requires recording the new versions with the evidence.