IMRPhenomP

Header file for IMRPhenomP functions

Currently, only Pv2 is supported.

Wrapped around IMRPhenomD

Defines

ROTATEZ(angle, vx, vy, vz)
ROTATEY(angle, vx, vy, vz)

Typedefs

typedef enum tagIMRPhenomP_version_type IMRPhenomP_version_type

Enums

enum tagIMRPhenomP_version_type

Values:

enumerator IMRPhenomPv1_V

version 1: based on IMRPhenomC

enumerator IMRPhenomPv2_V

version 2: based on IMRPhenomD

enumerator IMRPhenomPv2NRTidal_V

version Pv2_NRTidal: based on IMRPhenomPv2; NRTides added before precession; can be used with both NRTidal versions defined below

enumerator IMRPhenomPv3_V

version 3: based on IMRPhenomD and the precession angles from Katerina Chatziioannou PhysRevD.95.104004 (arxiv:1703.03967)

Variables

const double sqrt_6 = 2.44948974278317788
template<class T>
struct alpha_coeffs
#include <IMRPhenomP.h>

Public Members

T coeff1
T coeff2
T coeff3
T coeff4
T coeff5
template<class T>
struct epsilon_coeffs
#include <IMRPhenomP.h>

Public Members

T coeff1
T coeff2
T coeff3
T coeff4
T coeff5
template<class T>
class IMRPhenomPv2 : public IMRPhenomD<T>
#include <IMRPhenomP.h>

Subclassed by IMRPhenomPv2_NRT< T >, IMRPhenomPv3< T >, gIMRPhenomPv2< T >, ppE_IMRPhenomPv2_Inspiral< T >

Public Functions

virtual T alpha(T omega, T q, T chi2l, T chi2)
virtual T epsilon(T omega, T q, T chi2l, T chi2)
virtual void calculate_euler_coeffs(alpha_coeffs<T> *acoeffs, epsilon_coeffs<T> *ecoeffs, source_parameters<T> *params)

Pre calculate euler angle coefficients.

Straight up stolen from LALsuite

virtual T d(int l, int mp, int m, T s)
virtual void PhenomPv2_JSF_from_params(gen_params_base<T> *params, T *JSF)

Calculate the unit vector in the direction of the total angular momentum.

virtual int construct_waveform(T *frequencies, int length, std::complex<T> *waveform_plus, std::complex<T> *waveform_cross, source_parameters<T> *params)

Constructs the waveform for IMRPhenomPv2 - uses IMRPhenomD, then twists up.

arguments: array of frequencies, length of that array, a complex array for the output waveform, and a source_parameters structure

Parameters:
  • frequencies – T array of frequencies the waveform is to be evaluated at

  • length – integer length of the array of frequencies and the waveform

  • waveform_plus – complex T array for the plus polariaztion waveform to be output

  • waveform_cross – complex T array for the cross polarization waveform to be output

virtual int construct_phase(T *frequencies, int length, T *phase_plus, T *phase_cross, source_parameters<T> *params)

Constructs the phase for IMRPhenomPv2 - uses IMRPhenomD, then twists up.

arguments: array of frequencies, length of that array, a complex array for the output waveform, and a source_parameters structure

Parameters:
  • frequencies – T array of frequencies the waveform is to be evaluated at

  • length – integer length of the array of frequencies and the waveform

  • phase_plus – complex T array for the plus polariaztion waveform to be output

  • phase_cross – complex T array for the cross polarization waveform to be output

virtual T calculate_time_shift(source_parameters<T> *params, useful_powers<T> *pows, T *pn_phase_coeffs, lambda_parameters<T> *lambda)
virtual void WignerD(T d2[5], T dm2[5], useful_powers<T> *pows, source_parameters<T> *params)
virtual void calculate_twistup(T alpha, std::complex<T> *hp_factor, std::complex<T> *hc_factor, T d2[5], T dm2[5], sph_harm<T> *sph_harm)
virtual void calculate_euler_angles(T *alpha, T *epsilon, useful_powers<T> *pows, alpha_coeffs<T> *acoeffs, epsilon_coeffs<T> *ecoeffs)
virtual T PhenomPv2_inplane_spin(gen_params_base<T> *params)
virtual void PhenomPv2_Param_Transform(source_parameters<T> *params)

/Brief Parameter transformtion to precalculate needed parameters for PhenomP from source parameters

Pretty much stolen verbatim from lalsuite

virtual void PhenomPv2_Param_Transform_J(source_parameters<T> *params)

/Brief Parameter transformtion to precalculate needed parameters for PhenomP from source parameters &#8212; assumed inclination of total angular momentum J is given, not orbital angular momentum (in source frame (Lhat == zhat)

Pretty much stolen verbatim from lalsuite

virtual void PhenomPv2_Param_Transform_reduced(source_parameters<T> *params)

/Brief Parameter transformation to pre-calculate needed parameters for PhenomP from source parameters

Pretty much stolen verbatim from lalsuite

virtual T L2PN(T eta, useful_powers<T> *pow)
virtual T FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH(T m1, T m2, T chi1_l, T chi2_l, T chip)

  • Wrapper for final-spin formula based on:

    • - IMRPhenomD’s FinalSpin0815() for aligned spins.

        • We use their convention m1>m2

          • and put all in-plane spin on the larger BH.

              • In the aligned limit return the FinalSpin0815 value.

Parameters:
  • 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

virtual T final_spin(source_parameters<T> *params)