LALSimulation  5.4.0.1-fe68b98
LALSimIMRPhenomXPHM.c File Reference

Prototypes

static int IMRPhenomXPHMTwistUp (const REAL8 Mf, const COMPLEX16 hHM, IMRPhenomXWaveformStruct *pWF, IMRPhenomXPrecessionStruct *pPrec, INT4 ell, INT4 emmprime, COMPLEX16 *hp, COMPLEX16 *hc)
 
static int IMRPhenomXPHMTwistUpOneMode (const REAL8 Mf, const COMPLEX16 hlmprime, const COMPLEX16 hlmprime_antisym, IMRPhenomXWaveformStruct *pWF, IMRPhenomXPrecessionStruct *pPrec, UINT4 l, UINT4 mprime, INT4 m, COMPLEX16Sequence *hlminertial)
 
LALDict * IMRPhenomXPHM_setup_mode_array (LALDict *lalParams)
 Wrapper function for setup ModeArray of modes in the precessing frame to be twisted up. More...
 
static int IMRPhenomXPHM_hplushcross (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs_In, IMRPhenomXWaveformStruct *pWF, IMRPhenomXPrecessionStruct *pPrec, LALDict *lalParams)
 Core function of XLALSimIMRPhenomXPHM and XLALSimIMRPhenomXPHMFrequencySequence. More...
 
static int IMRPhenomXPHM_hplushcross_from_modes (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs_In, IMRPhenomXWaveformStruct *pWF, IMRPhenomXPrecessionStruct *pPrec, LALDict *lalParams)
 
static int IMRPhenomXPHM_OneMode (COMPLEX16FrequencySeries **hlmpos, COMPLEX16FrequencySeries **hlmneg, const REAL8Sequence *freqs_In, IMRPhenomXWaveformStruct *pWF, IMRPhenomXPrecessionStruct *pPrec, UINT4 ell, INT4 m, LALDict *lalParams)
 Core funciton to compute an individual precessing mode hlm in the inertial J-frame. More...
 
static int Get_alpha_beta_epsilon (REAL8 *alpha, REAL8 *cBetah, REAL8 *sBetah, REAL8 *epsilon, INT4 mprime, REAL8 Mf, IMRPhenomXPrecessionStruct *pPrec, IMRPhenomXWaveformStruct *pWF)
 
static double Get_alpha_epsilon_offset (REAL8 *alpha_offset_mprime, REAL8 *epsilon_offset_mprime, INT4 mprime, IMRPhenomXPrecessionStruct *pPrec)
 
int XLALSimIMRPhenomXPHMModes (SphHarmFrequencySeries **hlms, REAL8 m1_SI, REAL8 m2_SI, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, REAL8 phiRef, REAL8 distance, REAL8 inclination, LALDict *lalParams)
 Function to obtain a SphHarmFrequencySeries with the individual modes h_lm. More...
 
INT4 check_input_mode_array_Jframe (LALValue *ModeArrayJframe)
 
INT4 XLALSimIMRPhenomXPHMMultibandingGrid (REAL8Sequence **coarseFreqs, UINT4 ell, UINT4 emmprime, IMRPhenomXWaveformStruct *pWF, LALDict *lalParams)
 
Routines for IMRPhenomXPHM

C code for IMRPhenomXPHM phenomenological waveform model.

Author
Cecilio García Quirós, Geraint Pratten

This is a frequency domain precessing model based on the twisting-up of the aligned spin model with higher modes IMRPhenomXHM. See G.Pratten et al arXiv:2004.06503 for details. Any studies that use this waveform model should include a reference to this paper.

Note
DCC link to the paper: https://dcc.ligo.org/LIGO-P2000039. This paper will be refered in the code as the "Precessing paper".

Waveform flags:

All the flags for IMRPhenomXP apply here plus the following ones:

TwistPhenomHM: option to twist-up the AS model PhenomHM instead of PhenomXHM. It is only available for the polarizations, not for individual modes.

  • 0: (DEFAULT) twist-up PhenomXHM
  • 1: twist-up PhenomHM

UseModes: Determine how the polarizations hp, hc are computed.

  • 0: (DEFAULT) Compute the non-precessing modes once and do the twistin up as in eq. 3.5-3.7 in the Precessing paper.
  • 1: Compute first the individual precessing modes in the inertial J-frame and sum them to get the polarizations.

ModesL0Frame: Determine in which frame the individual precessing modes are returned.

  • 0: inertial J-frame (DEFAULT).
  • 1: inertial L0-frame (only working near the aligned spin limit).

PrecModes: Determine which indiviual modes are returned, the non-precessing or the precessing.

  • 0: (DEFAULT) Return the precessing individual mode in the J-frame.
  • 1: Return the non-precessing individual mode before the twisting-up with the modified final spin.

Multibanding flags:

PrecThresholdMband: Determines the accuracy and speed of the Multibanding algorithm for the Euler angles. The higher the threshold the faster is the algorithm but also less accurate.

  • 0.001 (DEFAULT)
  • 0: Switch off the multibanding.

MBandPrecVersion: Determines the algorithm to build the non-uniform frequency grid for the Euler angles.

  • 0: (DEFAULT) Not use multibanding. Activated to 1 when PrecThresholdMband is non-zero.
  • 1: Use the same grid that for the non-precessing modes. Activated when PrecThresholdMband is non-zero.
int XLALSimIMRPhenomXPHM (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 fRef_In, LALDict *lalParams)
 Returns hptilde and hctilde of the multimode precessing waveform for positive frequencies in an equally spaced grid. More...
 
int XLALSimIMRPhenomXPHMFromModes (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 fRef_In, LALDict *lalParams)
 Returns hptilde and hctilde of the multimode precessing waveform for positive frequencies in an equally space grid. More...
 
int XLALSimIMRPhenomXPHMFrequencySequence (COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 fRef_In, LALDict *lalParams)
 Returns hptilde and hctilde as a complex frequency series with entries exactly at the frequencies specified in the REAL8Sequence *freqs (which can be unequally spaced). More...
 
int XLALSimIMRPhenomXPHMOneMode (COMPLEX16FrequencySeries **hlmpos, COMPLEX16FrequencySeries **hlmneg, const UINT4 l, const INT4 m, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, const REAL8 fRef_In, LALDict *lalParams)
 Function to compute one hlm precessing mode in an uniform frequency grid. More...
 
int XLALSimIMRPhenomXPHMFrequencySequenceOneMode (COMPLEX16FrequencySeries **hlmpos, COMPLEX16FrequencySeries **hlmneg, const REAL8Sequence *freqs, const UINT4 l, const INT4 m, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 fRef_In, LALDict *lalParams)
 Function to compute one hlm precessing mode on a custom frequency grid. More...
 

Go to the source code of this file.

Macros

#define omp   ignore
 
#define L_MAX   4
 
#define DEBUG   0
 
#define PHENOMXDEBUG   0
 
#define MIN(a, b)   (((a)<(b))?(a):(b))
 
#define MAX(a, b)   (((a)>(b))?(a):(b))
 

Macro Definition Documentation

◆ omp

#define omp   ignore

Definition at line 36 of file LALSimIMRPhenomXPHM.c.

◆ L_MAX

#define L_MAX   4

Definition at line 39 of file LALSimIMRPhenomXPHM.c.

◆ DEBUG

#define DEBUG   0

Definition at line 42 of file LALSimIMRPhenomXPHM.c.

◆ PHENOMXDEBUG

#define PHENOMXDEBUG   0

Definition at line 43 of file LALSimIMRPhenomXPHM.c.

◆ MIN

#define MIN (   a,
 
)    (((a)<(b))?(a):(b))

Definition at line 53 of file LALSimIMRPhenomXPHM.c.

◆ MAX

#define MAX (   a,
 
)    (((a)>(b))?(a):(b))

Definition at line 54 of file LALSimIMRPhenomXPHM.c.

Function Documentation

◆ IMRPhenomXPHMTwistUp()

static int IMRPhenomXPHMTwistUp ( const REAL8  Mf,
const COMPLEX16  hHM,
IMRPhenomXWaveformStruct pWF,
IMRPhenomXPrecessionStruct pPrec,
INT4  ell,
INT4  emmprime,
COMPLEX16 hp,
COMPLEX16 hc 
)
static
Parameters
MfFrequency (Hz)
hHMUnderlying aligned-spin IMRPhenomXAS waveform
pWFIMRPhenomX Waveform Struct
pPrecIMRPhenomXP Precession Struct
elll index of the (l,m) mode
emmprimem index of the (l,m) mode
[out]hph_+ polarization \(\tilde h_+\)
[out]hch_x polarization \(\tilde h_x\)

Definition at line 1806 of file LALSimIMRPhenomXPHM.c.

◆ IMRPhenomXPHMTwistUpOneMode()

static int IMRPhenomXPHMTwistUpOneMode ( const REAL8  Mf,
const COMPLEX16  hlmprime,
const COMPLEX16  hlmprime_antisym,
IMRPhenomXWaveformStruct pWF,
IMRPhenomXPrecessionStruct pPrec,
UINT4  l,
UINT4  mprime,
INT4  m,
COMPLEX16Sequence hlminertial 
)
static
Parameters
MfFrequency (Mf geometric units)
hlmprimeUnderlying aligned-spin IMRPhenomXHM waveform. The loop is with mprime positive, but the mode has to be the negative one for positive frequencies.
hlmprime_antisymantisymmetric waveform in the co-precessing frame
pWFIMRPhenomX Waveform Struct
pPrecIMRPhenomXP Precession Struct
ll index of the (l,m) (non-)precessing mode
mprimesecond index of the (l,mprime) non-precessing mode
msecond index of the (l,m) precessing mode
[out]hlminertialhlm for one frequency in the inertial frame (precessing mode)

Definition at line 3142 of file LALSimIMRPhenomXPHM.c.

◆ IMRPhenomXPHM_setup_mode_array()

LALDict * IMRPhenomXPHM_setup_mode_array ( LALDict *  lalParams)

Wrapper function for setup ModeArray of modes in the precessing frame to be twisted up.

Definition at line 3522 of file LALSimIMRPhenomXPHM.c.

◆ IMRPhenomXPHM_hplushcross()

static int IMRPhenomXPHM_hplushcross ( COMPLEX16FrequencySeries **  hptilde,
COMPLEX16FrequencySeries **  hctilde,
const REAL8Sequence freqs_In,
IMRPhenomXWaveformStruct pWF,
IMRPhenomXPrecessionStruct pPrec,
LALDict *  lalParams 
)
static

Core function of XLALSimIMRPhenomXPHM and XLALSimIMRPhenomXPHMFrequencySequence.

Returns hptilde, hctilde for positive frequencies. The default non-precessing modes are 2|2|, 2|1|, 3|3|, 3|2| and 4|4|. It returns also the contribution of the corresponding negatives modes. It can be evaulated in a non-uniform frequency grid. Assumes positive frequencies.

Parameters
[out]hptildeFrequency domain h+ GW strain
[out]hctildeFrequency domain hx GW strain
freqs_InFrequency array to evaluate the model. (fmin, fmax) for equally spaced grids.
pWFIMRPhenomX Waveform Struct
pPrecIMRPhenomXP Precession Struct
lalParamsLAL Dictionary Structure

Definition at line 740 of file LALSimIMRPhenomXPHM.c.

◆ IMRPhenomXPHM_hplushcross_from_modes()

static int IMRPhenomXPHM_hplushcross_from_modes ( COMPLEX16FrequencySeries **  hptilde,
COMPLEX16FrequencySeries **  hctilde,
const REAL8Sequence freqs_In,
IMRPhenomXWaveformStruct pWF,
IMRPhenomXPrecessionStruct pPrec,
LALDict *  lalParams 
)
static
Parameters
[out]hptildeFrequency domain h+ GW strain
[out]hctildeFrequency domain hx GW strain
freqs_InFrequency array to evaluate the model. (fmin, fmax) for equally spaced grids.
pWFIMRPhenomX Waveform Struct
pPrecIMRPhenomXP Precession Struct
lalParamsLAL Dictionary Structure

Definition at line 1649 of file LALSimIMRPhenomXPHM.c.

◆ IMRPhenomXPHM_OneMode()

static int IMRPhenomXPHM_OneMode ( COMPLEX16FrequencySeries **  hlmpos,
COMPLEX16FrequencySeries **  hlmneg,
const REAL8Sequence freqs_In,
IMRPhenomXWaveformStruct pWF,
IMRPhenomXPrecessionStruct pPrec,
UINT4  ell,
INT4  m,
LALDict *  lalParams 
)
static

Core funciton to compute an individual precessing mode hlm in the inertial J-frame.

Returns two frequency series, one for the positive frequencies and other for the negative frequencies. It can be evaluated in a non-uniform frequency grid through the argument REAL8Seuqnce *freqs_In. This is in fact done when Calling XLALSimIMRPhenomXPHMFrequencySequence with the option of 'UseModes' activated.

Parameters
[out]hlmposFrequency domain hlm GW strain inertial frame positive frequencies
[out]hlmnegFrequency domain hlm GW strain inertial frame negative frequencies
freqs_InInput frequency grid (Hz)
pWFIMRPhenomX Waveform Struct
pPrecIMRPhenomXP Precession Struct
elll index of the (l,m) precessing mode
mm index of the (l,m) precessing mode
lalParamsLAL Dictionary Structure

Definition at line 2797 of file LALSimIMRPhenomXPHM.c.

◆ Get_alpha_beta_epsilon()

static int Get_alpha_beta_epsilon ( REAL8 alpha,
REAL8 cBetah,
REAL8 sBetah,
REAL8 epsilon,
INT4  mprime,
REAL8  Mf,
IMRPhenomXPrecessionStruct pPrec,
IMRPhenomXWaveformStruct pWF 
)
static
Parameters
[out]alphaAzimuthal angle of L w.r.t J
[out]cBetahCosine of polar angle between L and J
[out]sBetahSine of polar angle between L and J
[out]epsilonMinus the third Euler angle (-gamma) describing L w.r.t J, fixed by minimal rotation condition
mprimeSecond index of the non-precesssing mode (l, mprime)
MfFrequency geometric units
pPrecIMRPhenomXP Precessing structure
pWFIMRPhenomX Waveform structure

Definition at line 3632 of file LALSimIMRPhenomXPHM.c.

◆ Get_alpha_epsilon_offset()

static double Get_alpha_epsilon_offset ( REAL8 alpha_offset_mprime,
REAL8 epsilon_offset_mprime,
INT4  mprime,
IMRPhenomXPrecessionStruct pPrec 
)
static
Parameters
[out]alpha_offset_mprimeOffset alpha angle at reference frequency
[out]epsilon_offset_mprimeOffset epsilon angle at reference frequency
mprimeSecond index of the non-precesssing mode (l, mprime)
pPrecIMRPhenomXP Precessing structure

Definition at line 3585 of file LALSimIMRPhenomXPHM.c.

◆ XLALSimIMRPhenomXPHMModes()

int XLALSimIMRPhenomXPHMModes ( SphHarmFrequencySeries **  hlms,
REAL8  m1_SI,
REAL8  m2_SI,
REAL8  S1x,
REAL8  S1y,
REAL8  S1z,
REAL8  S2x,
REAL8  S2y,
REAL8  S2z,
REAL8  deltaF,
REAL8  f_min,
REAL8  f_max,
REAL8  f_ref,
REAL8  phiRef,
REAL8  distance,
REAL8  inclination,
LALDict *  lalParams 
)

Function to obtain a SphHarmFrequencySeries with the individual modes h_lm.

By default it returns all the modes available in the model, positive and negatives. With the mode array option in the LAL dictionary, the user can specify a custom mode array. The modes are computed in the inertial J-frame, so the mode array option does not refers to the modes in the co-precessing frame conversely to the functions for the polarizations XLALSimIMRPhenomXPHM. This function is to be used by ChooseFDModes.

Parameters
[out]hlmslist with single modes h_lm in the J-frame
m1_SImass of companion 1 (kg)
m2_SImass of companion 2 (kg)
S1xx-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
S1yy-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
S1zz-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
S2xx-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
S2yy-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
S2zz-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
deltaFfrequency spacing (Hz)
f_minstarting GW frequency (Hz)
f_maxending GW frequency (Hz)
f_refreference GW frequency (Hz)
phiRefphase shift at reference frequency
distancedistance of source (m)
inclinationinclination of source (rad)
lalParamsLAL dictionary with extra options

Definition at line 3400 of file LALSimIMRPhenomXPHM.c.

◆ check_input_mode_array_Jframe()

INT4 check_input_mode_array_Jframe ( LALValue *  ModeArrayJframe)

Definition at line 3566 of file LALSimIMRPhenomXPHM.c.

◆ XLALSimIMRPhenomXPHMMultibandingGrid()

INT4 XLALSimIMRPhenomXPHMMultibandingGrid ( REAL8Sequence **  coarseFreqs,
UINT4  ell,
UINT4  emmprime,
IMRPhenomXWaveformStruct pWF,
LALDict *  lalParams 
)
Parameters
[out]coarseFreqsNon-uniform coarse frequency grid (1D array)
ellFirst index non-precessing mode
emmprimeSecond index non-precessing mode
pWFIMRPhenomX Waveform Struct
lalParamsLAL dictionary

Definition at line 3687 of file LALSimIMRPhenomXPHM.c.