Skip to content

IMRPhenomXPHM

ripplegw.waveforms.IMRPhenomXPHM ¤

CSHIFT = jnp.array([0.0, PI / 2.0, 0.0, -PI / 2.0, PI, PI / 2.0, 0.0]) module-attribute ¤

BetaPowers dataclass ¤

Stores powers of cos(beta/2) and sin(beta/2) for Wigner-d coefficient calculations.

Attributes:

Name Type Description
cBetah Float

cos(beta/2)

cBetah2 Float

cos^2(beta/2)

cBetah3 Float

cos^3(beta/2)

cBetah4 Float

cos^4(beta/2)

cBetah5 Float

cos^5(beta/2)

cBetah6 Float

cos^6(beta/2)

cBetah7 Float

cos^7(beta/2)

cBetah8 Float

cos^8(beta/2)

sBetah Float

sin(beta/2)

sBetah2 Float

sin^2(beta/2)

sBetah3 Float

sin^3(beta/2)

sBetah4 Float

sin^4(beta/2)

sBetah5 Float

sin^5(beta/2)

sBetah6 Float

sin^6(beta/2)

sBetah7 Float

sin^7(beta/2)

sBetah8 Float

sin^8(beta/2)

cBetah: Float instance-attribute ¤
cBetah2: Float instance-attribute ¤
cBetah3: Float instance-attribute ¤
cBetah4: Float instance-attribute ¤
cBetah5: Float instance-attribute ¤
cBetah6: Float instance-attribute ¤
cBetah7: Float instance-attribute ¤
cBetah8: Float instance-attribute ¤
sBetah: Float instance-attribute ¤
sBetah2: Float instance-attribute ¤
sBetah3: Float instance-attribute ¤
sBetah4: Float instance-attribute ¤
sBetah5: Float instance-attribute ¤
sBetah6: Float instance-attribute ¤
sBetah7: Float instance-attribute ¤
sBetah8: Float instance-attribute ¤
__init__(cBetah: Float, cBetah2: Float, cBetah3: Float, cBetah4: Float, cBetah5: Float, cBetah6: Float, cBetah7: Float, cBetah8: Float, sBetah: Float, sBetah2: Float, sBetah3: Float, sBetah4: Float, sBetah5: Float, sBetah6: Float, sBetah7: Float, sBetah8: Float) -> None ¤
from_half_angle_trig(cBetah: Float, sBetah: Float) classmethod ¤

Constructs a BetaPowers instance from cos(beta/2) and sin(beta/2).

Parameters:

Name Type Description Default
cBetah Float

cos(beta/2)

required
sBetah Float

sin(beta/2)

required

Returns:

Type Description

BetaPowers instance with all power values computed

generate_xphm(mass_1, mass_2, chi1x, chi1y, chi1z, chi2x, chi2y, chi2z, distance, inclination, phi0, frequency_array, reference_frequency) ¤

Generate IMRPhenomXPHM plus and cross polarizations.

twistup(Mf, mass_1, mass_2, chi1x, chi1y, chi1z, chi2x, chi2y, chi2z, phiRef_In, inclination, reference_frequency, hlm) ¤

Rotate the co-precessing frame hlm modes into the inertial (J-frame) polarisations hp, hc. Implementation follows the lalsimulation function IMRPhenomXPHMTwistUps.

Computes the precession angles (alpha, beta, epsilon) at each frequency via MSA, applies the per-mode Wigner-d rotation and spherical-harmonic projection, sums over modes (21, 22, 32, 33, 44), and applies a final polarisation rotation by zeta.

Parameters:

Name Type Description Default
Mf

Dimensionless frequency array (len N).

required
mass_1, mass_2

Component masses in solar masses.

required
chi1x/y/z, chi2x/y/z

Dimensionless spin components in the L-frame.

required
phiRef_In

Reference orbital phase (rad).

required
inclination

Inclination angle between J and line of sight (rad).

required
reference_frequency

Reference frequency for spin evolution (Hz).

required
hlm

Co-precessing frame modes, shape (n_modes, N).

required

Returns:

Type Description

hp, hc: Plus and cross polarisations, shape (N,).

twist_22(cexp_i_alpha, theta_JN, beta_powers) ¤

Compute the twisting contributions for l=2, m'=2 mode.

This function computes the sum over m of the Wigner-d matrix elements and spherical harmonics for the (2,2) mode, following eq. 3.5-3.7 in the Precessing paper.

Parameters:

Name Type Description Default
cexp_i_alpha

Complex exponential e^{i*alpha} (array over frequencies)

required
theta_JN

Angle between total angular momentum and line of sight

required
beta_powers

BetaPowers object containing powers of cos(beta/2) and sin(beta/2)

required

Returns:

Name Type Description
hp_sum

Plus polarization contribution

hc_sum

Cross polarization contribution

twist_21(cexp_i_alpha, theta_JN, beta_powers) ¤

Compute the twisting contributions for l=2, m'=1 mode.

This function computes the sum over m of the Wigner-d matrix elements and spherical harmonics for the (2,1) mode, following eq. 3.5-3.7 in the Precessing paper.

Parameters:

Name Type Description Default
cexp_i_alpha

Complex exponential e^{i*alpha} (array over frequencies)

required
theta_JN

Angle between total angular momentum and line of sight

required
beta_powers

BetaPowers object containing powers of cos(beta/2) and sin(beta/2)

required

Returns:

Name Type Description
hp_sum

Plus polarization contribution

hc_sum

Cross polarization contribution

twist_33(cexp_i_alpha, theta_JN, beta_powers) ¤

Compute the twisting contributions for l=3, m'=3 mode.

This function computes the sum over m of the Wigner-d matrix elements and spherical harmonics for the (3,3) mode, following eq. 3.5-3.7 in the Precessing paper.

Parameters:

Name Type Description Default
cexp_i_alpha

Complex exponential e^{i*alpha} (array over frequencies)

required
theta_JN

Angle between total angular momentum and line of sight

required
beta_powers

BetaPowers object containing powers of cos(beta/2) and sin(beta/2)

required

Returns:

Name Type Description
hp_sum

Plus polarization contribution

hc_sum

Cross polarization contribution

twist_32(cexp_i_alpha, theta_JN, beta_powers) ¤

Compute the twisting contributions for l=3, m'=2 mode.

This function computes the sum over m of the Wigner-d matrix elements and spherical harmonics for the (3,2) mode, following eq. 3.5-3.7 in the Precessing paper.

Parameters:

Name Type Description Default
cexp_i_alpha

Complex exponential e^{i*alpha} (array over frequencies)

required
theta_JN

Angle between total angular momentum and line of sight

required
beta_powers

BetaPowers object containing powers of cos(beta/2) and sin(beta/2)

required

Returns:

Name Type Description
hp_sum

Plus polarization contribution

hc_sum

Cross polarization contribution

twist_44(cexp_i_alpha, theta_JN, beta_powers) ¤

Compute the twisting contributions for l=4, m'=4 mode.

This function computes the sum over m of the Wigner-d matrix elements and spherical harmonics for the (4,4) mode, following eq. 3.5-3.7 in the Precessing paper.

Parameters:

Name Type Description Default
cexp_i_alpha

Complex exponential e^{i*alpha} (array over frequencies)

required
theta_JN

Angle between total angular momentum and line of sight

required
beta_powers

BetaPowers object containing powers of cos(beta/2) and sin(beta/2)

required

Returns:

Name Type Description
hp_sum

Plus polarization contribution

hc_sum

Cross polarization contribution

apply_polarization_rotation(zeta_polarization, _hp, _hc) ¤

Apply polarization rotation to waveform components.

Parameters:

Name Type Description Default
zeta_polarization float

Polarization angle.

required
_hp array_like

Plus polarization component (unrotated).

required
_hc array_like

Cross polarization component (unrotated).

required

Returns:

Type Description

tuple[array_like, array_like]: Rotated plus (hp) and cross (hc) polarizations.

IMRPhenomXWignerdCoefficients_cosbeta(cos_beta) ¤

Compute cos(beta/2) and sin(beta/2) from cos(beta).

Uses half-angle formulas: - cos(beta/2) = sqrt((1 + cos(beta)) / 2) - sin(beta/2) = sqrt((1 - cos(beta)) / 2)

Parameters:

Name Type Description Default
cos_beta float or array

cos(beta).

required

Returns:

Type Description

tuple[float or array, float or array]: (cos(beta/2), sin(beta/2)), both always non-negative.

XLALSimIMRPhenomXUtilsHztoMf(fHz: Float, Mtot_Msun: Float) -> Float ¤

Convert frequency from Hz to geometric units (Mf).

Parameters:

Name Type Description Default
fHz Float

Frequency in Hz.

required
Mtot_Msun Float

Total mass in solar masses.

required

Returns:

Name Type Description
Float Float

Geometric frequency Mf.

XLALSimIMRPhenomHMGethlmModes(freqs: Array, m1_SI: float, m2_SI: float, chi1x: float, chi1y: float, chi1z: float, chi2x: float, chi2y: float, chi2z: float, phiRef: float, deltaF: float, f_ref: float, extraParams: dict) ¤

Compute all hlm modes for IMRPhenomXPHM. JAX translation of XLALSimIMRPhenomHMGethlmModes.

IMRPhenomHMEvaluateOnehlmMode(freqs_geom: Float, pHM: dict, ell: int, mm: int, phi0: Float) ¤

Implementation of IMRPhenomHMEvaluateOnehlmMode in LALSimIMRPhenomHM.c

XLALSimPhenomUtilsPhenomPv2FinalSpin(m1: Float, m2: Float, chi1_l: Float, chi2_l: Float, chip: Float) ¤

Implementation of XLALSimPhenomUtilsPhenomPv2FinalSpin in LALSimPhenomUtils.c Assuming m1 >= m2

init_PhenomHM_Storage(p: dict, m1_SI: float, m2_SI: float, chi1x: float, chi1y: float, chi1z: float, chi2x: float, chi2y: float, chi2z: float, freqs: Array, deltaF: float, f_ref: float, phiRef: float, ModeArray: Array) ¤

Precompute a bunch of PhenomHM related quantities and store them Implementation of init_PhenomHM_Storage in LALSimIMRPhenomHM.c

IMRPhenomHMGetRingdownFrequency(ell: Integer, mm: Integer, finalmass: Float, finalspin: Float) ¤

Implementation of IMRPhenomHMGetRingdownFrequency in LALSimIMRPhenomHM.c

SimRingdownCW_KAPPA(jf: Float, ell: Integer, emm: Integer) ¤

Domain mapping for dimnesionless BH spin

SimRingdownCW_CW07102016(kappa: Float, ell: Integer, input_m: Integer, n: int) ¤

Dimensionless QNM Frequencies: Note that name encodes date of writing

IMRPhenomHMFreqDomainMap(Mflm, ell, mm, pHM, AmpFlag) ¤

Map input frequency Mflm to the effective 22-mode frequency Mf22 for the (ell, mm) mode.

IMRPhenomHMAmplitude(freqs_geom: Array, pHM: dict, ell: int, mm: int) ¤

Returns IMRPhenomHM amplitude evaluated at a set of input frequencies for the l,m mode Implementation of IMRPhenomHMAmplitude in LALSimIMRPhenomHM.c

IMRPhenomHMOnePointFiveSpinPN(fM, ell, m, M1, M2, X1z, X2z) ¤

Implementation of IMRPhenomHMOnePointFiveSpinPN from LALSimIMRPhenomHM.c Currently supported modes: (2,1), (2,2), (3,2), (3,3), (4,4)

IMRPhenomHMPhase(freqs_geom: Array, pHM: dict, ell: int, mm: int) ¤

Returns IMRPhenomHM phase evaluated at a set of input frequencies for the l,m mode Implementation of IMRPhenomHMPhase in LALSimIMRPhenomHM.c

IMRPhenomHMPhasePreComp(q: dict, ell: int, emm: int, pHM: dict) ¤

Implementation of IMRPhenomHMPhasePreComp in LALSimIMRPhenomHM.c

IMRPhenomHMFreqDomainMapParams(flm: float, ell: int, mm: int, pHM: dict, ampFlag: bool) ¤

Implementation of the phase computation of IMRPhenomHMFreqDomainMapParams in LALSimIMRPhenomHM.c

IMRPhenomHMSlopeAmAndBm(mm: int, fi: float, fr: float, Mf_RD_22: float, Mf_RD_lm: float, AmpFlag: bool, ell: int, pHM: dict) ¤

Implementation of IMRPhenomHMSlopeAmAndBm in LALSimIMRPhenomHM.c

IMRPhenomHMTrd(Mf: float, Mf_RD_22: float, Mf_RD_lm: float, AmpFlag: bool, mode_idx: int, pHM: dict) ¤

Implementation of IMRPhenomHMTrd in LALSimIMRPhenomHM.c domain mapping function - ringdown

IMRPhenomHMMapParams(flm: Float, fi: Float, fr: Float, Ai: Float, Bi: Float, Am: Float, Bm: Float, Ar: Float, Br: Float) ¤

Implementation of IMRPhenomHMMapParams in LALSimIMRPhenomHM.c, line 557

XLALSimPhenomUtilsChiP(m1, m2, s1x, s1y, s2x, s2y) ¤

Compute the effective precession parameter chip.

This is a JAX translation of LALSimIMRPhenomUtils.c XLALSimPhenomUtilsChiP.

Parameters:

Name Type Description Default
m1 float or array

Mass of companion 1 (solar masses).

required
m2 float or array

Mass of companion 2 (solar masses).

required
s1x float or array

x-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1).

required
s1y float or array

y-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1).

required
s2x float or array

x-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1).

required
s2y float or array

y-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1).

required

Returns:

Type Description

float or array: Effective precession parameter chip.