Prototypes | |
static int | PhenomPCore (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8 chi1_l_in, const REAL8 chi2_l_in, const REAL8 chip, const REAL8 thetaJ, const REAL8 m1_SI_in, const REAL8 m2_SI_in, const REAL8 distance, const REAL8 alpha0, const REAL8 phic, const REAL8 f_ref, const REAL8Sequence *freqs_in, double deltaF, IMRPhenomP_version_type IMRPhenomP_version, NRTidal_version_type NRTidal_version, LALDict *extraParams) |
Internal core function to calculate plus and cross polarizations of the PhenomP model for a set of frequencies. More... | |
static int | PhenomPCoreOneFrequency (const REAL8 fHz, const REAL8 eta, const REAL8 distance, const REAL8 M, const REAL8 phic, IMRPhenomDAmplitudeCoefficients *pAmp, IMRPhenomDPhaseCoefficients *pPhi, BBHPhenomCParams *PCparams, PNPhasingSeries *PNparams, COMPLEX16 *hPhenom, REAL8 *phasing, IMRPhenomP_version_type IMRPhenomP_version, AmpInsPrefactors *amp_prefactors, PhiInsPrefactors *phi_prefactors) |
static int | PhenomPCoreOneFrequency_withTides (const REAL8 fHz, const REAL8 window, const REAL8 phaseTidal, const REAL8 ampTidal, const REAL8 distance, const REAL8 M, const REAL8 phic, IMRPhenomDAmplitudeCoefficients *pAmp, IMRPhenomDPhaseCoefficients *pPhi, PNPhasingSeries *PNparams, COMPLEX16 *hPhenom, REAL8 *phasing, AmpInsPrefactors *amp_prefactors, PhiInsPrefactors *phi_prefactors) |
static int | PhenomPCoreTwistUp (const REAL8 fHz, COMPLEX16 hPhenom, const REAL8 eta, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip, const REAL8 M, NNLOanglecoeffs *angcoeffs, SpinWeightedSphericalHarmonic_l2 *Y2m, const REAL8 alphaoffset, const REAL8 epsilonoffset, COMPLEX16 *hp, COMPLEX16 *hc, IMRPhenomP_version_type IMRPhenomP_version) |
static void | ComputeNNLOanglecoeffs (NNLOanglecoeffs *angcoeffs, const REAL8 q, const REAL8 chil, const REAL8 chip) |
Next-to-next-to-leading order PN coefficients for Euler angles \(\alpha\) and \(\epsilon\). More... | |
static REAL8 | L2PNR (const REAL8 v, const REAL8 eta) |
Simple 2PN version of the orbital angular momentum L, without any spin terms expressed as a function of v. More... | |
static REAL8 | L2PNR_v1 (const REAL8 v, const REAL8 eta) |
Simple 2PN version of the orbital angular momentum L, without any spin terms expressed as a function of v. More... | |
static void | WignerdCoefficients (REAL8 *cos_beta_half, REAL8 *sin_beta_half, const REAL8 v, const REAL8 SL, const REAL8 eta, const REAL8 Sp) |
Expressions used for the WignerD symbol with full expressions for the angles. More... | |
static void | WignerdCoefficients_SmallAngleApproximation (REAL8 *cos_beta_half, REAL8 *sin_beta_half, const REAL8 v, const REAL8 SL, const REAL8 eta, const REAL8 Sp) |
Expressions used for the WignerD symbol with small angle approximation. More... | |
static void | CheckMaxOpeningAngle (const REAL8 m1, const REAL8 m2, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip) |
In this helper function we check whether the maximum opening angle during the evolution becomes larger than pi/2 or pi/4, in which case a warning is issued. More... | |
static REAL8 | FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH (const REAL8 m1, const REAL8 m2, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip) |
Wrapper for final-spin formula based on: More... | |
static REAL8 | FinalSpinBarausse2009_all_spin_on_larger_BH (const REAL8 nu, const REAL8 chi, const REAL8 chip) |
Wrapper for final-spin formula based on: More... | |
static REAL8 | FinalSpinBarausse2009 (const REAL8 nu, const REAL8 a1, const REAL8 a2, const REAL8 cos_alpha, const REAL8 cos_beta_tilde, const REAL8 cos_gamma_tilde) |
Final-spin formula based on: More... | |
static UNUSED BBHPhenomCParams * | ComputeIMRPhenomCParamsRDmod (const REAL8 m1, const REAL8 m2, const REAL8 chi, const REAL8 chip, LALDict *extraParams) |
PhenomC parameters for modified ringdown, uses final spin formula of: More... | |
static bool | approximately_equal (REAL8 x, REAL8 y, REAL8 epsilon) |
static void | nudge (REAL8 *x, REAL8 X, REAL8 epsilon) |
Routines for IMR Phenomenological Model "P" | |
Functions for producing IMRPhenomP waveforms for precessing binaries, as described in Hannam et al., arXiv:1308.3271 [gr-qc].
Each IMRPhenomP version inherits its range of validity over the parameter space from the respective aligned-spin waveform.
| |
static REAL8 | atan2tol (REAL8 a, REAL8 b, REAL8 tol) |
int | XLALSimIMRPhenomPCalculateModelParametersOld (REAL8 *chi1_l, REAL8 *chi2_l, REAL8 *chip, REAL8 *thetaJ, REAL8 *alpha0, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_ref, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, IMRPhenomP_version_type IMRPhenomP_version) |
Deprecated : used the old convention (view frame for the spins) Function to map LAL parameters (masses, 6 spin components and Lhat at f_ref) into IMRPhenomP intrinsic parameters (chi1_l, chi2_l, chip, thetaJ, alpha0). More... | |
int | XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame (REAL8 *chi1_l, REAL8 *chi2_l, REAL8 *chip, REAL8 *thetaJN, REAL8 *alpha0, REAL8 *phi_aligned, REAL8 *zeta_polariz, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_ref, const REAL8 phiRef, const REAL8 incl, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, IMRPhenomP_version_type IMRPhenomP_version) |
Function to map LAL parameters (masses, 6 spin components, phiRef and inclination at f_ref) (assumed to be in the source frame where LN points in the z direction i.e. More... | |
int | XLALSimIMRPhenomP (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip, const REAL8 thetaJ, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 distance, const REAL8 alpha0, const REAL8 phic, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, const REAL8 f_ref, IMRPhenomP_version_type IMRPhenomP_version, NRTidal_version_type NRTidal_version, LALDict *extraParams) |
Driver routine to compute the precessing inspiral-merger-ringdown phenomenological waveform IMRPhenomP in the frequency domain. More... | |
int | XLALSimIMRPhenomPFrequencySequence (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip, const REAL8 thetaJ, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 distance, const REAL8 alpha0, const REAL8 phic, const REAL8 f_ref, IMRPhenomP_version_type IMRPhenomP_version, NRTidal_version_type NRTidal_version, LALDict *extraParams) |
Driver routine to compute the precessing inspiral-merger-ringdown phenomenological waveform IMRPhenomP in the frequency domain. More... | |
Go to the source code of this file.
Macros | |
#define | omp ignore |
#define | ROTATEZ(angle, vx, vy, vz) |
#define | ROTATEY(angle, vx, vy, vz) |
Variables | |
const double | sqrt_6 = 2.44948974278317788 |
#define omp ignore |
Definition at line 50 of file LALSimIMRPhenomP.c.
Definition at line 54 of file LALSimIMRPhenomP.c.
Definition at line 60 of file LALSimIMRPhenomP.c.
|
static |
Internal core function to calculate plus and cross polarizations of the PhenomP model for a set of frequencies.
This can handle either user-specified frequency points or create an equally-spaced frequency series.
[out] | hptilde | Frequency-domain waveform h+ |
[out] | hctilde | Frequency-domain waveform hx |
chi1_l_in | Dimensionless aligned spin on companion 1 | |
chi2_l_in | Dimensionless aligned spin on companion 2 | |
chip | Effective spin in the orbital plane | |
thetaJ | Angle between J0 and line of sight (z-direction) | |
m1_SI_in | Mass of companion 1 (kg) | |
m2_SI_in | Mass of companion 2 (kg) | |
distance | Distance of source (m) | |
alpha0 | Initial value of alpha angle (azimuthal precession angle) | |
phic | Orbital phase at the peak of the underlying non precessing model (rad) | |
f_ref | Reference frequency | |
freqs_in | Frequency points at which to evaluate the waveform (Hz) | |
deltaF | Sampling frequency (Hz). If deltaF > 0, the frequency points given in freqs are uniformly spaced with spacing deltaF. Otherwise, the frequency points are spaced non-uniformly. Then we will use deltaF = 0 to create the frequency series we return. | |
IMRPhenomP_version | IMRPhenomPv1 uses IMRPhenomC, IMRPhenomPv2 uses IMRPhenomD, IMRPhenomPv2_NRTidal uses NRTidal framework with IMRPhenomPv2 | |
NRTidal_version | either NRTidal or NRTidalv2 for BNS waveform; NoNRT_V for BBH waveform | |
extraParams | linked list that may contain the extra testing GR parameters and/or tidal parameters |
Definition at line 575 of file LALSimIMRPhenomP.c.
|
static |
\[ \newcommand{\hP}{h^\mathrm{P}} \newcommand{\PAmp}{A^\mathrm{P}} \newcommand{\PPhase}{\phi^\mathrm{P}} \newcommand{\chieff}{\chi_\mathrm{eff}} \newcommand{\chip}{\chi_\mathrm{p}} \]
Internal core function to calculate plus and cross polarizations of the PhenomP model for a single frequency.
The general expression for the modes \(\hP_{2m}(t)\) is given by Eq. 1 of arXiv:1308.3271. We calculate the frequency domain l=2 plus and cross polarizations separately for each m = -2, ... , 2.
The expression of the polarizations times the \(Y_{lm}\) in code notation are:
\begin{equation*} \left(\tilde{h}_{2m}\right)_+ = e^{-2i \epsilon} \left(e^{-i m \alpha} d^2_{-2,m} (-2Y_{2m}) + e^{+i m \alpha} d^2_{2,m} (-2Y_{2m})^*\right) \cdot \hP / 2 \,, \end{equation*}
\begin{equation*} \left(\tilde{h}_{2m}\right)_x = e^{-2i \epsilon} \left(e^{-i m \alpha} d^2_{-2,m} (-2Y_{2m}) - e^{+i m \alpha} d^2_{2,m} (-2Y_{2m})^*\right) \cdot \hP / 2 \,, \end{equation*}
where the \(d^l_{m',m}\) are Wigner d-matrices evaluated at \(-\beta\), and \(\hP\) is the Phenom[C,D] frequency domain model:
\begin{equation*} \hP(f) = \PAmp(f) e^{-i \PPhase(f)} \,. \end{equation*}
Note that in arXiv:1308.3271, the angle \(\beta\) (beta) is called iota.
For IMRPhenomP(v1) we put all spin on the larger BH, convention: \(m_2 \geq m_1\). Hence:
\begin{eqnarray*} \chieff &=& \left( m_1 \cdot \chi_1 + m_2 \cdot \chi_2 \right)/M \,,\\ \chi_l &=& \chieff / m_2 \quad (\text{for } M=1) \,,\\ S_L &=& m_2^2 \chi_l = m_2 \cdot M \cdot \chieff = \frac{q}{1+q} \cdot \chieff \quad (\text{for } M=1) \,. \end{eqnarray*}
For IMRPhenomPv2 we use both aligned spins:
\begin{equation*} S_L = \chi_1 \cdot m_1^2 + \chi_2 \cdot m_2^2 \,. \end{equation*}
For both IMRPhenomP(v1) and IMRPhenomPv2 we put the in-plane spin on the larger BH:
\begin{equation*} S_\mathrm{perp} = \chip \cdot m_2^2 \end{equation*}
(perpendicular spin).
fHz | Frequency (Hz) | |
eta | Symmetric mass ratio | |
distance | Distance of source (m) | |
M | Total mass (Solar masses) | |
phic | Orbital phase at the peak of the underlying non precessing model (rad) | |
pAmp | Internal IMRPhenomD amplitude coefficients | |
pPhi | Internal IMRPhenomD phase coefficients | |
PCparams | Internal PhenomC parameters | |
PNparams | PN inspiral phase coefficients | |
hPhenom | IMRPhenom waveform (before precession) | |
[out] | phasing | overall phasing |
IMRPhenomP_version | IMRPhenomP(v1) uses IMRPhenomC, IMRPhenomPv2 uses IMRPhenomD, IMRPhenomPv2_NRTidal uses NRTidal framework with IMRPhenomPv2 | |
amp_prefactors | pre-calculated (cached for saving runtime) coefficients for amplitude. See LALSimIMRPhenomD_internals.c | |
phi_prefactors | pre-calculated (cached for saving runtime) coefficients for phase. See LALSimIMRPhenomD_internals. |
Definition at line 1264 of file LALSimIMRPhenomP.c.
|
static |
fHz | Frequency (Hz) | |
window | Planck_taper | |
phaseTidal | tidal phasing at a frequency sample from NRTidal infrastructure | |
ampTidal | tidal amplitude added to BBH amplitude, before Planck tapering | |
distance | Distance of source (m) | |
M | Total mass (Solar masses) | |
phic | Orbital phase at the peak of the underlying non precessing model (rad) | |
pAmp | Internal IMRPhenomD amplitude coefficients | |
pPhi | Internal IMRPhenomD phase coefficients | |
PNparams | PN inspiral phase coefficients | |
[out] | hPhenom | IMRPhenom waveform (before precession) |
[out] | phasing | overall phasing |
amp_prefactors | pre-calculated (cached for saving runtime) coefficients for amplitude. See LALSimIMRPhenomD_internals.c | |
phi_prefactors | pre-calculated (cached for saving runtime) coefficients for phase. See LALSimIMRPhenomD_internals. |
Definition at line 1326 of file LALSimIMRPhenomP.c.
|
static |
fHz | Frequency (Hz) | |
[in] | hPhenom | IMRPhenom waveform (before precession) |
eta | Symmetric mass ratio | |
chi1_l | Dimensionless aligned spin on companion 1 | |
chi2_l | Dimensionless aligned spin on companion 2 | |
chip | Dimensionless spin in the orbital plane | |
M | Total mass (Solar masses) | |
angcoeffs | Struct with PN coeffs for the NNLO angles | |
Y2m | Struct of l=2 spherical harmonics of spin weight -2 | |
alphaoffset | f_ref dependent offset for alpha angle (azimuthal precession angle) | |
epsilonoffset | f_ref dependent offset for epsilon angle | |
[out] | hp | plus polarization \(\tilde h_+\) |
[out] | hc | cross polarization \(\tilde h_x\) |
IMRPhenomP_version | IMRPhenomP(v1) uses IMRPhenomC, IMRPhenomPv2 uses IMRPhenomD, IMRPhenomPv2_NRTidal uses NRTidal framework with IMRPhenomPv2 |
Definition at line 1376 of file LALSimIMRPhenomP.c.
|
static |
Next-to-next-to-leading order PN coefficients for Euler angles \(\alpha\) and \(\epsilon\).
[out] | angcoeffs | Structure to store results |
q | Mass-ratio (convention q>1) | |
chil | Dimensionless aligned spin of the largest BH | |
chip | Dimensionless spin component in the orbital plane |
Definition at line 1499 of file LALSimIMRPhenomP.c.
Simple 2PN version of the orbital angular momentum L, without any spin terms expressed as a function of v.
For IMRPhenomP(v2).
Reference:
v | Cubic root of (Pi * Frequency (geometric)) |
eta | Symmetric mass-ratio |
Definition at line 1590 of file LALSimIMRPhenomP.c.
Simple 2PN version of the orbital angular momentum L, without any spin terms expressed as a function of v.
For IMRPhenomP(v1).
Reference:
v | Cubic root of (Pi * Frequency (geometric)) |
eta | Symmetric mass-ratio |
Definition at line 1608 of file LALSimIMRPhenomP.c.
|
static |
Expressions used for the WignerD symbol with full expressions for the angles.
Used for IMRPhenomP(v2):
\begin{equation} \cos(\beta) = \hat J . \hat L = \left( 1 + \left( S_\mathrm{p} / (L + S_L) \right)^2 \right)^{-1/2} = \left( L + S_L \right) / \sqrt{ \left( L + S_L \right)^2 + S_p^2 } = \mathrm{sign}\left( L + S_L \right) \cdot \left( 1 + \left( S_p / \left(L + S_L\right)\right)^2 \right)^{-1/2} \end{equation}
[out] | cos_beta_half | cos(beta/2) |
[out] | sin_beta_half | sin(beta/2) |
v | Cubic root of (Pi * Frequency (geometric)) | |
SL | Dimensionfull aligned spin | |
eta | Symmetric mass-ratio | |
Sp | Dimensionfull spin component in the orbital plane |
Definition at line 1637 of file LALSimIMRPhenomP.c.
|
static |
Expressions used for the WignerD symbol with small angle approximation.
Used for IMRPhenomP(v1):
\begin{equation} \cos(\beta) = \hat J . \hat L = \left(1 + \left( S_\mathrm{p} / (L + S_L)\right)^2 \right)^{-1/2} \end{equation}
We use the expression
\begin{equation} \cos(\beta/2) \approx (1 + s^2 / 4 )^{-1/2} \,, \end{equation}
where \(s := S_p / (L + S_L)\).
cos_beta_half | Output: cos(beta/2) |
sin_beta_half | Output: sin(beta/2) |
v | Cubic root of (Pi * Frequency (geometric)) |
SL | Dimensionfull aligned spin |
eta | Symmetric mass-ratio |
Sp | Dimensionfull spin component in the orbital plane |
Definition at line 1670 of file LALSimIMRPhenomP.c.
|
static |
In this helper function we check whether the maximum opening angle during the evolution becomes larger than pi/2 or pi/4, in which case a warning is issued.
If L+SL becomes <0, WignerdCoefficients does not track the angle between J and L anymore (see tech doc, choice of + sign so that the Wigner coefficients are OK in the aligned spin limit) and the model may become pathological as one moves away from the aligned spin limit. If this does not happen, then max_beta is the actual maximum opening angle as predicted by the model.
m1 | Mass of companion 1 (solar masses) |
m2 | Mass of companion 2 (solar masses) |
chi1_l | Aligned spin of BH 1 |
chi2_l | Aligned spin of BH 2 |
chip | Dimensionless spin in the orbital plane |
Definition at line 1690 of file LALSimIMRPhenomP.c.
|
static |
Wrapper for final-spin formula based on:
We use their convention m1>m2 and put all in-plane spin on the larger BH.
In the aligned limit return the FinalSpin0815 value.
m1 | Mass of companion 1 (solar masses) |
m2 | Mass of companion 2 (solar masses) |
chi1_l | Aligned spin of BH 1 |
chi2_l | Aligned spin of BH 2 |
chip | Dimensionless spin in the orbital plane |
Definition at line 1729 of file LALSimIMRPhenomP.c.
|
static |
Wrapper for final-spin formula based on:
We use their convention m1>m2 and put all spin on the larger BH:
a1 = (chip, 0, chi), a2 = (0,0,0), L = (0,0,1)
nu | Symmetric mass-ratio |
chi | Effective aligned spin of the binary: chi = (m1*chi1 + m2*chi2)/M |
chip | Dimensionless spin in the orbital plane |
Definition at line 1765 of file LALSimIMRPhenomP.c.
|
static |
Final-spin formula based on:
We use their convention m1>m2.
nu | Symmetric mass-ratio |
a1 | |a_1| norm of dimensionless spin vector for BH 1 |
a2 | |a_2| norm of dimensionless spin vector for BH 2 |
cos_alpha | \(\cos(\alpha) = \hat a_1 . \hat a_2\) (Eq. 7) |
cos_beta_tilde | \(\cos(\tilde \beta) = \hat a_1 . \hat L\) (Eq. 9) |
cos_gamma_tilde | \(\cos(\tilde \gamma) = \hat a_2 . \hat L\) (Eq. 9) |
Definition at line 1795 of file LALSimIMRPhenomP.c.
|
static |
PhenomC parameters for modified ringdown, uses final spin formula of:
m1 | Mass of companion 1 (solar masses) |
m2 | Mass of companion 2 (solar masses) |
chi | Reduced aligned spin of the binary chi = (m1*chi1 + m2*chi2)/M |
chip | Dimensionless spin in the orbital plane |
extraParams | linked list that may contain the extra testing GR parameters and/or tidal parameters |
Definition at line 1841 of file LALSimIMRPhenomP.c.
Definition at line 1906 of file LALSimIMRPhenomP.c.
Definition at line 1912 of file LALSimIMRPhenomP.c.
const double sqrt_6 = 2.44948974278317788 |
Definition at line 66 of file LALSimIMRPhenomP.c.