LALSimulation  5.4.0.1-fe68b98
LALSimIMRPhenomHM.c File Reference

Prototypes

LALDict * IMRPhenomHM_setup_mode_array (LALDict *extraParams)
 read in a LALDict. More...
 
static int IMRPhenomHM_check_mode_array (LALValue *ModeArray)
 Reads in a ModeArray and checks that it is valid. More...
 
int PhenomHM_init_useful_mf_powers (PhenomHMUsefulMfPowers *p, REAL8 number)
 must be called before the first usage of *p More...
 
int PhenomHM_init_useful_powers (PhenomHMUsefulPowers *p, REAL8 number)
 must be called before the first usage of *p More...
 
int IMRPhenomHMGetRingdownFrequency (REAL8 *fringdown, REAL8 *fdamp, UINT4 ell, INT4 mm, REAL8 finalmass, REAL8 finalspin)
 returns the real and imag parts of the complex ringdown frequency for the (l,m) mode. More...
 
UINT4 IMRPhenomHM_is_freq_uniform (REAL8Sequence *freqs, REAL8 deltaF)
 helper function to easily check if the input frequency sequence is uniformly space or a user defined set of discrete frequencies. More...
 
int init_IMRPhenomHMGet_FrequencyBounds_storage (PhenomHMFrequencyBoundsStorage *p, REAL8Sequence *freqs, REAL8 Mtot, REAL8 deltaF, REAL8 f_ref_in)
 derive frequency variables for PhenomHM based on input. More...
 
static int init_PhenomHM_Storage (PhenomHMStorage *p, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi1x, const REAL8 chi1y, const REAL8 chi1z, const REAL8 chi2x, const REAL8 chi2y, const REAL8 chi2z, REAL8Sequence *freqs, const REAL8 deltaF, const REAL8 f_ref, const REAL8 phiRef)
 Precompute a bunch of PhenomHM related quantities and store them filling in a PhenomHMStorage variable. More...
 
double IMRPhenomHMTrd (REAL8 Mf, REAL8 Mf_RD_22, REAL8 Mf_RD_lm, const INT4 AmpFlag, const INT4 ell, const INT4 mm, PhenomHMStorage *pHM)
 domain mapping function - ringdown More...
 
double IMRPhenomHMTi (REAL8 Mf, const INT4 mm)
 mathematica function Ti domain mapping function - inspiral More...
 
int IMRPhenomHMSlopeAmAndBm (double *Am, double *Bm, const INT4 mm, REAL8 fi, REAL8 fr, REAL8 Mf_RD_22, REAL8 Mf_RD_lm, const INT4 AmpFlag, const INT4 ell, PhenomHMStorage *pHM)
 helper function for IMRPhenomHMFreqDomainMap More...
 
int IMRPhenomHMMapParams (REAL8 *a, REAL8 *b, REAL8 flm, REAL8 fi, REAL8 fr, REAL8 Ai, REAL8 Bi, REAL8 Am, REAL8 Bm, REAL8 Ar, REAL8 Br)
 helper function for IMRPhenomHMFreqDomainMap More...
 
int IMRPhenomHMFreqDomainMapParams (REAL8 *a, REAL8 *b, REAL8 *fi, REAL8 *fr, REAL8 *f1, const REAL8 flm, const INT4 ell, const INT4 mm, PhenomHMStorage *pHM, const int AmpFlag)
 helper function for IMRPhenomHMFreqDomainMap More...
 
double IMRPhenomHMFreqDomainMap (REAL8 Mflm, const INT4 ell, const INT4 mm, PhenomHMStorage *pHM, const int AmpFlag)
 IMRPhenomHMFreqDomainMap Input waveform frequency in Geometric units (Mflm) and computes what frequency this corresponds to scaled to the 22 mode. More...
 
int IMRPhenomHMPhasePreComp (HMPhasePreComp *q, const INT4 ell, const INT4 mm, PhenomHMStorage *pHM, UNUSED LALDict *extraParams)
 
COMPLEX16 IMRPhenomHMOnePointFiveSpinPN (REAL8 fM, INT4 l, INT4 m, REAL8 M1, REAL8 M2, REAL8 X1z, REAL8 X2z)
 Define function for FD PN amplitudes. More...
 
int IMRPhenomHMCore (UNUSED COMPLEX16FrequencySeries **hptilde, UNUSED COMPLEX16FrequencySeries **hctilde, REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1z, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 deltaF, REAL8 f_ref, LALDict *extraParams)
 internal function that returns h+ and hx. More...
 
int XLALSimIMRPhenomHMGethlmModes (UNUSED SphHarmFrequencySeries **hlms, UNUSED REAL8Sequence *freqs, UNUSED REAL8 m1_SI, UNUSED REAL8 m2_SI, UNUSED REAL8 chi1x, UNUSED REAL8 chi1y, UNUSED REAL8 chi1z, UNUSED REAL8 chi2x, UNUSED REAL8 chi2y, UNUSED REAL8 chi2z, UNUSED const REAL8 phiRef, UNUSED const REAL8 deltaF, UNUSED REAL8 f_ref, UNUSED LALDict *extraParams)
 XLAL function that returns a SphHarmFrequencySeries object containing all the hlm modes requested. More...
 
int IMRPhenomHMEvaluateOnehlmMode (UNUSED COMPLEX16FrequencySeries **hlm, UNUSED REAL8Sequence *amps, UNUSED REAL8Sequence *phases, UNUSED REAL8Sequence *freqs_geom, UNUSED PhenomHMStorage *pHM, UNUSED UINT4 ell, UNUSED INT4 mm, UNUSED REAL8 phi0, UNUSED LALDict *extraParams)
 Function to compute the one hlm mode. More...
 
int IMRPhenomHMAmplitude (UNUSED REAL8Sequence *amps, UNUSED REAL8Sequence *freqs_geom, UNUSED PhenomHMStorage *pHM, UNUSED UINT4 ell, UNUSED INT4 mm, UNUSED LALDict *extraParams)
 returns IMRPhenomHM amplitude evaluated at a set of input frequencies for the l,m mode More...
 
int IMRPhenomHMPhase (UNUSED REAL8Sequence *phases, UNUSED REAL8Sequence *freqs_geom, UNUSED PhenomHMStorage *pHM, UNUSED UINT4 ell, UNUSED INT4 mm, UNUSED LALDict *extraParams)
 returns IMRPhenomHM phase evaluated at a set of input frequencies for the l,m mode More...
 
Routines for IMR Phenomenological Model "HM"

C code for IMRPhenomHM phenomenological waveform model.

Author
Sebastian Khan, Francesco Pannarale, Lionel London

Inspiral-merger and ringdown phenomenological, frequecny domain waveform model for binary black holes systems. Models not only the dominant (l,|m|) = (2,2) modes but also some of the sub-domant modes too. Model described in PhysRevLett.120.161102/1708.00404. The model is based on IMRPhenomD ([10], [12])

Note
The higher mode information was not calibrated to Numerical Relativity simulation therefore the calibration range is inherited from PhenomD.
Attention
The model is usable outside this parameter range, and in tests to date gives sensible physical results, but conclusive statements on the physical fidelity of the model for these parameters await comparisons against further numerical-relativity simulations. For more information, see the review wiki under https://git.ligo.org/waveforms/reviews/phenomhm/wikis/home Also a technical document in the DCC https://dcc.ligo.org/LIGO-T1800295
UNUSED int XLALSimIMRPhenomHM (UNUSED COMPLEX16FrequencySeries **hptilde, UNUSED COMPLEX16FrequencySeries **hctilde, UNUSED REAL8Sequence *freqs, UNUSED REAL8 m1_SI, UNUSED REAL8 m2_SI, UNUSED REAL8 chi1z, UNUSED REAL8 chi2z, UNUSED const REAL8 distance, UNUSED const REAL8 inclination, UNUSED const REAL8 phiRef, UNUSED const REAL8 deltaF, UNUSED REAL8 f_ref, UNUSED LALDict *extraParams)
 Returns h+ and hx in the frequency domain. More...
 

Go to the source code of this file.

Variables

static const double cShift [7]
 

Function Documentation

◆ IMRPhenomHM_setup_mode_array()

LALDict* IMRPhenomHM_setup_mode_array ( LALDict *  extraParams)

read in a LALDict.

If ModeArray in LALDict is NULL then create a ModrArray with the default modes in PhenomHM. If ModeArray is not NULL then use the modes supplied by user.

Definition at line 51 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHM_check_mode_array()

static int IMRPhenomHM_check_mode_array ( LALValue *  ModeArray)
static

Reads in a ModeArray and checks that it is valid.

may only contain the modes in the model i.e., 22, 21, 33, 32, 44, 43 Only checks upto ell=8 though.

Definition at line 92 of file LALSimIMRPhenomHM.c.

◆ PhenomHM_init_useful_mf_powers()

int PhenomHM_init_useful_mf_powers ( PhenomHMUsefulMfPowers p,
REAL8  number 
)

must be called before the first usage of *p

Definition at line 137 of file LALSimIMRPhenomHM.c.

◆ PhenomHM_init_useful_powers()

int PhenomHM_init_useful_powers ( PhenomHMUsefulPowers p,
REAL8  number 
)

must be called before the first usage of *p

Definition at line 161 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMGetRingdownFrequency()

int IMRPhenomHMGetRingdownFrequency ( REAL8 fringdown,
REAL8 fdamp,
UINT4  ell,
INT4  mm,
REAL8  finalmass,
REAL8  finalspin 
)

returns the real and imag parts of the complex ringdown frequency for the (l,m) mode.

Definition at line 189 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHM_is_freq_uniform()

UINT4 IMRPhenomHM_is_freq_uniform ( REAL8Sequence freqs,
REAL8  deltaF 
)

helper function to easily check if the input frequency sequence is uniformly space or a user defined set of discrete frequencies.

Definition at line 214 of file LALSimIMRPhenomHM.c.

◆ init_IMRPhenomHMGet_FrequencyBounds_storage()

int init_IMRPhenomHMGet_FrequencyBounds_storage ( PhenomHMFrequencyBoundsStorage p,
REAL8Sequence freqs,
REAL8  Mtot,
REAL8  deltaF,
REAL8  f_ref_in 
)

derive frequency variables for PhenomHM based on input.

used to set the index on arrays where we have non-zero values.

Parameters
[out]pPhenomHMFrequencyBoundsStorage struct
freqsInput list of GW frequencies [Hz]
Mtottotal mass in solar masses
deltaFfrequency spacing
f_ref_inreference GW frequency

Definition at line 235 of file LALSimIMRPhenomHM.c.

◆ init_PhenomHM_Storage()

static int init_PhenomHM_Storage ( PhenomHMStorage p,
const REAL8  m1_SI,
const REAL8  m2_SI,
const REAL8  chi1x,
const REAL8  chi1y,
const REAL8  chi1z,
const REAL8  chi2x,
const REAL8  chi2y,
const REAL8  chi2z,
REAL8Sequence freqs,
const REAL8  deltaF,
const REAL8  f_ref,
const REAL8  phiRef 
)
static

Precompute a bunch of PhenomHM related quantities and store them filling in a PhenomHMStorage variable.

Definition at line 318 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMTrd()

double IMRPhenomHMTrd ( REAL8  Mf,
REAL8  Mf_RD_22,
REAL8  Mf_RD_lm,
const INT4  AmpFlag,
const INT4  ell,
const INT4  mm,
PhenomHMStorage pHM 
)

domain mapping function - ringdown

Definition at line 493 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMTi()

double IMRPhenomHMTi ( REAL8  Mf,
const INT4  mm 
)

mathematica function Ti domain mapping function - inspiral

Definition at line 522 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMSlopeAmAndBm()

int IMRPhenomHMSlopeAmAndBm ( double *  Am,
double *  Bm,
const INT4  mm,
REAL8  fi,
REAL8  fr,
REAL8  Mf_RD_22,
REAL8  Mf_RD_lm,
const INT4  AmpFlag,
const INT4  ell,
PhenomHMStorage pHM 
)

helper function for IMRPhenomHMFreqDomainMap

Definition at line 530 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMMapParams()

int IMRPhenomHMMapParams ( REAL8 a,
REAL8 b,
REAL8  flm,
REAL8  fi,
REAL8  fr,
REAL8  Ai,
REAL8  Bi,
REAL8  Am,
REAL8  Bm,
REAL8  Ar,
REAL8  Br 
)

helper function for IMRPhenomHMFreqDomainMap

Definition at line 557 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMFreqDomainMapParams()

int IMRPhenomHMFreqDomainMapParams ( REAL8 a,
REAL8 b,
REAL8 fi,
REAL8 fr,
REAL8 f1,
const REAL8  flm,
const INT4  ell,
const INT4  mm,
PhenomHMStorage pHM,
const int  AmpFlag 
)

helper function for IMRPhenomHMFreqDomainMap

Parameters
a[Out]
b[Out]
fi[Out]
fr[Out]
f1[Out]
flminput waveform frequency
ellspherical harmonics ell mode
mmspherical harmonics m mode
pHMStores quantities in order to calculate them only once
AmpFlagis ==1 then computes for amplitude, if ==0 then computes for phase

Definition at line 595 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMFreqDomainMap()

double IMRPhenomHMFreqDomainMap ( REAL8  Mflm,
const INT4  ell,
const INT4  mm,
PhenomHMStorage pHM,
const int  AmpFlag 
)

IMRPhenomHMFreqDomainMap Input waveform frequency in Geometric units (Mflm) and computes what frequency this corresponds to scaled to the 22 mode.

Definition at line 681 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMPhasePreComp()

int IMRPhenomHMPhasePreComp ( HMPhasePreComp q,
const INT4  ell,
const INT4  mm,
PhenomHMStorage pHM,
UNUSED LALDict *  extraParams 
)
Parameters
[out]qHMPhasePreComp struct
ellell spherical harmonic number
mmm spherical harmonic number
pHMPhenomHMStorage struct
extraParamsLALDict strcut

Definition at line 706 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMOnePointFiveSpinPN()

COMPLEX16 IMRPhenomHMOnePointFiveSpinPN ( REAL8  fM,
INT4  l,
INT4  m,
REAL8  M1,
REAL8  M2,
REAL8  X1z,
REAL8  X2z 
)

Define function for FD PN amplitudes.

Definition at line 797 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMCore()

int IMRPhenomHMCore ( UNUSED COMPLEX16FrequencySeries **  hptilde,
UNUSED COMPLEX16FrequencySeries **  hctilde,
REAL8Sequence freqs,
REAL8  m1_SI,
REAL8  m2_SI,
REAL8  chi1z,
REAL8  chi2z,
const REAL8  distance,
const REAL8  inclination,
const REAL8  phiRef,
const REAL8  deltaF,
REAL8  f_ref,
LALDict *  extraParams 
)

internal function that returns h+ and hx.

Inside this function the my bulk of the work is done like the loop over frequencies.

Parameters
[out]hptildeFrequency domain h+ GW strain
[out]hctildeFrequency domain hx GW strain
freqsGW frequecny list [Hz]
m1_SIprimary mass [kg]
m2_SIsecondary mass [kg]
chi1zaligned spin of primary
chi2zaligned spin of secondary
distancedistance [m]
inclinationinclination angle
phiReforbital phase at f_ref
deltaFfrequency spacing
f_refreference GW frequency
extraParamsLALDict struct

Definition at line 997 of file LALSimIMRPhenomHM.c.

◆ XLALSimIMRPhenomHMGethlmModes()

int XLALSimIMRPhenomHMGethlmModes ( UNUSED SphHarmFrequencySeries **  hlms,
UNUSED REAL8Sequence freqs,
UNUSED REAL8  m1_SI,
UNUSED REAL8  m2_SI,
UNUSED REAL8  chi1x,
UNUSED REAL8  chi1y,
UNUSED REAL8  chi1z,
UNUSED REAL8  chi2x,
UNUSED REAL8  chi2y,
UNUSED REAL8  chi2z,
UNUSED const REAL8  phiRef,
UNUSED const REAL8  deltaF,
UNUSED REAL8  f_ref,
UNUSED LALDict *  extraParams 
)

XLAL function that returns a SphHarmFrequencySeries object containing all the hlm modes requested.

These have the correct relative phases between modes. Note this has a similar interface to XLALSimIMRPhenomHM because it is designed so it can be used independently.

Parameters
[out]hlmsSphHarmFrequencySeries struct containing hlm modes
freqsfrequency sequency in Hz
m1_SIprimary mass [kg]
m2_SIsecondary mass [kg]
chi1xx-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
chi1yy-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
chi1zz-component of the dimensionless spin of object 1 w.r.t. Lhat = (0,0,1)
chi2xx-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
chi2yy-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
chi2zz-component of the dimensionless spin of object 2 w.r.t. Lhat = (0,0,1)
phiReforbital phase at f_ref
deltaFfrequency spacing
f_refreference GW frequency
extraParamsLALDict struct

Definition at line 1168 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMEvaluateOnehlmMode()

int IMRPhenomHMEvaluateOnehlmMode ( UNUSED COMPLEX16FrequencySeries **  hlm,
UNUSED REAL8Sequence amps,
UNUSED REAL8Sequence phases,
UNUSED REAL8Sequence freqs_geom,
UNUSED PhenomHMStorage pHM,
UNUSED UINT4  ell,
UNUSED INT4  mm,
UNUSED REAL8  phi0,
UNUSED LALDict *  extraParams 
)

Function to compute the one hlm mode.

Note this is not static so that IMRPhenomPv3HM can also use this function

Parameters
[out]hlmOne hlm mode
ampsamplitude frequency sequence
phasesphase frequency sequence
freqs_geomdimensionless frequency sequence
pHMPhenomHMStorage struct
ellell spherical harmonic number
mmm spherical harmonic number
phi0phase shift needed to align waveform to phiRef at f_ref.
extraParamsLALDict struct

Definition at line 1393 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMAmplitude()

int IMRPhenomHMAmplitude ( UNUSED REAL8Sequence amps,
UNUSED REAL8Sequence freqs_geom,
UNUSED PhenomHMStorage pHM,
UNUSED UINT4  ell,
UNUSED INT4  mm,
UNUSED LALDict *  extraParams 
)

returns IMRPhenomHM amplitude evaluated at a set of input frequencies for the l,m mode

Parameters
[out]ampsamplitude frequency sequence
freqs_geomdimensionless frequency sequence
pHMPhenomHMStorage struct
ellell spherical harmonic number
mmm spherical harmonic number
extraParamsLALDict struct

Definition at line 1456 of file LALSimIMRPhenomHM.c.

◆ IMRPhenomHMPhase()

int IMRPhenomHMPhase ( UNUSED REAL8Sequence phases,
UNUSED REAL8Sequence freqs_geom,
UNUSED PhenomHMStorage pHM,
UNUSED UINT4  ell,
UNUSED INT4  mm,
UNUSED LALDict *  extraParams 
)

returns IMRPhenomHM phase evaluated at a set of input frequencies for the l,m mode

Parameters
[out]phasesphase frequency sequence
freqs_geomdimensionless frequency sequence
pHMPhenomHMStorage struct
ellell spherical harmonic number
mmm spherical harmonic number
extraParamsLALDict struct

Definition at line 1571 of file LALSimIMRPhenomHM.c.

Variable Documentation

◆ cShift

const double cShift[7]
static
Initial value:
= {0.0,
0.0,
0.0}
#define LAL_PI_2
#define LAL_PI

Definition at line 37 of file LALSimIMRPhenomHM.c.