IMRPhenomT TaylorT3 aligned-spin frequency
Scope and status
T-PN-T3-v1 specifies the 3.5PN TaylorT3 contribution to the positive
(2,2) angular frequency and its phase primitive in the native IMRPhenomT,
THM, TP, and TPHM carriers. It is a component specification, not a complete
IMRPhenomT waveform claim. The fitted pseudo-PN extension and its six-point
collocation solve are specified separately by T-PN-FREQ-COLLOC-v0. The
scalar component is executable, and its backend agreement is checked for the
domain in the len receipt.
Inputs, conventions, and options
The scalar inputs are 0 < eta <= 1/4, delta=(m1-m2)/(m1+m2) >= 0, aligned
dimensionless spins chi1,chi2, and positive
theta=[eta(t0-t)/(5M)]^(-1/8) with t<t0. Here m1,m2 inside the PN
coefficients are fractions of total mass, (1+delta)/2 and
(1-delta)/2; the carrier accepts physical solar masses and constructs these
fractions. Angular frequency is in inverse total-mass time, so
f22=omega22/(2*pi*M*MSUN_SEC) Hz. Both frontends use float64 for this
qualification. The phase primitive has an arbitrary additive constant;
the carrier uses the convention specified below.
The paper_literal scalar choice transcribes original T/TP Appendix A Eq.
(A5g) exactly. The author_carrier choice adds the 235925 eta^3/1769472
term omitted from that printed equation. This correction is explicitly noted
in the pinned MIT phenomxpy internals.py, set_pn_coefficients;
it is also in the native Torch/JAX carriers. author_carrier is the native
choice; paper_literal is reference-only. No LAL source is needed for either.
Mathematics and components
Original Estellés et al., arXiv:2004.08302v2, Eqs. (6b), (A4),
(A5a)–(A5h) gives the orbital
TaylorT3 frequency. Updated THM, arXiv:2012.11923v1, Eqs. (8)–(11)
uses those same coefficients in its (2,2) inspiral extension. With
c_k=hat omega_k and c_0=1,c_1=0, the mode frequency is twice the orbital
frequency:
omega22^T3(theta) = theta^3/4 * [1+c2 theta^2+c3 theta^3+c4 theta^4+c5 theta^5+(c6_const+(107/280)log(theta))theta^6+c7 theta^7].
c6_const contains (107/280)log(2) per the printed log(2 theta).
For the carrier option it also contains 235925 eta^3/1769472. The scalar
reference retains the paper's compact mass-weighted spin terms, while the
native code uses expanded polynomials. The independent reference implements
all six coefficients as exact-rational mpmath expressions.
Since dt/dtheta=40 M/(eta theta^9), the phase primitive satisfies
d phi22/d(t/M)=omega22^T3. One convenient primitive is
phi22 = (10/eta)[-theta^-5/5-c2 theta^-3/3-c3 theta^-2/2-c4 theta^-1+c5 log(theta)+c6_const theta+(107/280)theta(log(theta)-1)+c7 theta^2/2].
The carrier subtracts (10/eta)c5 log(5)/8 from this primitive. This is
only a phase-origin convention and does not alter its frequency derivative.
The printed Appendix A gives the frequency coefficients; the primitive above
is obtained by integrating those terms, not by copying a phase formula from
another implementation.
| Component | Source and variant | Status | Scalar | Torch | JAX | Check |
|---|---|---|---|---|---|---|
T-PN-T3-v1 |
T/TP A5a–h, THM 8–9; paper/carrier 3PN distinction | executable | phenomt_taylor_t3.coefficients, frequency, phase |
imrphenomt._pn_coefficients, _poly_pn_frequency, _pn_phase |
same names in JAX module | test_phenomt_taylor_t3_math_reference.py |
Implementation mapping
The reference evaluates the paper's terms using m1=(1+delta)/2 and
m2=(1-delta)/2, and isolates the log(2 theta) at 3PN. Torch/JAX expand
the same terms into tensor polynomials, put log(2) inside their constant 3PN
coefficient, and add (107/280)log(theta) at evaluation. Native _pn_phase
uses its carrier phase-origin convention. Neither frontend imports the scalar
reference. The six pseudo-PN coefficients are supplied by the separate
collocation component, and calibrated inputs remain a separate qualification
gate.
Evidence and limitations
The maintained gate compares every PN coefficient, frequencies, and phase
differences against both native frontends for equal and unequal masses,
unequal/zero spins, and several inspiral theta values. It also checks the
scalar phase derivative and the precise paper-to-carrier 3PN difference.
Numerical results and package versions belong in the validation receipt.
This checks the 3.5PN kernel only; it does not certify calibrated t0, fitted
collocation frequencies, joins, full modes, LAL agreement, or physical
accuracy. The printed Eq. (A5g) omission is preserved visibly as a variant,
not silently corrected.
Reproduce the checks
On len, use CPU float64 and run
JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu PYTHONPATH=src:tests python -m pytest -q tests/test_phenomt_taylor_t3_math_reference.py tests/test_phenomt_inspiral_collocation_math_reference.py --reference-device=cpu -ra.
The repository-wide --require-math-reference flag additionally requires
collection of the entire math-reference suite, so use it for the full suite.
Keep the two source variants distinct if a later source revision changes the
coefficient. Do not change native defaults as part of reference coverage.