LALSimulation  5.4.0.1-fe68b98
LALSimIMRSpinPrecEOBv4P.c File Reference

Prototypes

int XLALEOBHighestInitialFreq (REAL8 *freqMinRad, REAL8 mTotal)
 
static UNUSED UINT4 argmax (REAL8Vector *vec)
 
static UNUSED REAL8Vectorget_slice (REAL8Vector *vec, UINT4 lo, UINT4 hi)
 
static UNUSED int XLALEOBFindRobustPeak (REAL8 *tPeakQuant, REAL8Vector *tVec, REAL8Vector *quantVec, UINT4 window_width)
 
static UNUSED int XLALEOBSpinPrecStopCondition_v4 (double UNUSED t, const double values[], double dvalues[], void UNUSED *funcParams)
 
static UNUSED int XLALEOBSpinPrecStopConditionBasedOnPR (double UNUSED t, const double values[], double dvalues[], void UNUSED *funcParams)
 Stopping conditions for dynamics integration for SEOBNRv4P. More...
 
static int XLALEOBSpinPrecAlignedStopCondition (double UNUSED t, const double values[], double dvalues[], void *funcParams)
 Stopping condition for the regular resolution SEOBNRv1/2 orbital evolution – stop when reaching max orbital frequency in strong field. More...
 
static int XLALSpinPrecAlignedHiSRStopCondition (double UNUSED t, const double UNUSED values[], double dvalues[], void UNUSED *funcParams)
 Stopping condition for the high resolution SEOBNRv4. More...
 
static INT4 XLALSetup_EOB__std_mode_array_structure (LALValue *ModeArray, UINT4 PrecEOBversion)
 ModeArray is a structure which allows to select the the co-precessing frame modes to include in the waveform. More...
 
static INT4 XLALCheck_EOB_mode_array_structure (LALValue *ModeArray, UINT4 PrecEOBversion)
 ModeArray is a structure which allows to select the the co-precessing frame modes to include in the waveform. More...
 
int XLALSimIMRSpinPrecEOBWaveform (REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 INspin1[], const REAL8 INspin2[], UNUSED const UINT4 PrecEOBversion, LALDict *LALParams)
 Standard interface for SEOBNRv4P waveform generator: calls XLALSimIMRSpinPrecEOBWaveformAll. More...
 
static int SEOBGetLMaxInModeArray (LALValue *modearray, int lmax)
 This function returns the maximum ell in the mode array. More...
 
SphHarmTimeSeriesXLALSimIMRSpinPrecEOBModes (const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 INspin1[], const REAL8 INspin2[], UNUSED const UINT4 PrecEOBversion, LALDict *LALParams)
 Standard interface for SEOBNRv4P modes generator: calls XLALSimIMRSpinPrecEOBWaveformAll. More...
 
static int CAmpPhaseSequence_Init (CAmpPhaseSequence **campphase, int size)
 
static int CAmpPhaseSequence_Destroy (CAmpPhaseSequence *campphase)
 
static int SphHarmListEOBNonQCCoeffs_Destroy (SphHarmListEOBNonQCCoeffs *list)
 
static int SphHarmListEOBNonQCCoeffs_AddMode (SphHarmListEOBNonQCCoeffs **list_prepended, EOBNonQCCoeffs *nqcCoeffs, UINT4 l, INT4 m)
 
static SphHarmListEOBNonQCCoeffsSphHarmListEOBNonQCCoeffs_GetMode (SphHarmListEOBNonQCCoeffs *list, UINT4 l, INT4 m)
 
static int SphHarmListCAmpPhaseSequence_Destroy (SphHarmListCAmpPhaseSequence *list)
 
static int SphHarmListCAmpPhaseSequence_AddMode (SphHarmListCAmpPhaseSequence **list_prepended, CAmpPhaseSequence *campphase, UINT4 l, INT4 m)
 
static SphHarmListCAmpPhaseSequenceSphHarmListCAmpPhaseSequence_GetMode (SphHarmListCAmpPhaseSequence *list, UINT4 l, INT4 m)
 
static int SEOBdynamics_Destroy (SEOBdynamics *seobdynamics)
 
static int SEOBdynamics_Init (SEOBdynamics **seobdynamics, UINT4 retLen)
 
static REAL8 SEOBCalculateChiS (REAL8 chi1dotZ, REAL8 chi2dotZ)
 Functions to calculate symmetrized and antisymmetrized combinations of the dimensionless spins projected on the radiation frame Z-axis (L or LN) More...
 
static REAL8 SEOBCalculateChiA (REAL8 chi1dotZ, REAL8 chi2dotZ)
 
static REAL8 SEOBCalculatetplspin (REAL8 m1, REAL8 m2, REAL8 eta, REAL8 chi1dotZ, REAL8 chi2dotZ, INT4 SpinAlignedEOBversion)
 Function to calculate tplspin See discussion below Eq. More...
 
static int SEOBCalculateSigmaKerr (REAL8Vector *sigmaKerr, REAL8Vector *s1, REAL8Vector *s2)
 Function to calculate normalized spin of the deformed-Kerr background in SEOBNRv1. More...
 
static int SEOBCalculateSigmaStar (REAL8Vector *sigmaStar, REAL8 mass1, REAL8 mass2, REAL8Vector *s1, REAL8Vector *s2)
 Function to calculate normalized spin of the test particle in SEOBNRv1. More...
 
static int SEOBComputeExtendedSEOBdynamics (SEOBdynamics **seobdynamics, REAL8Array *dynamics, UINT4 retLen, SpinEOBParams *seobParams, flagSEOBNRv4P_hamiltonian_derivative flagHamiltonianDerivative, flagSEOBNRv4P_Zframe flagZframe)
 This function computes quantities (polardynamics, omega, s1dotZ, s2dotZ, hamiltonian) derived from the dynamics as output by the integrator, and returns a SEOBdynamics struct. More...
 
static int SEOBInitialConditions (REAL8Vector **ICvalues, REAL8 MfMin, REAL8 m1, REAL8 m2, REAL8Vector *chi1, REAL8Vector *chi2, SpinEOBParams *seobParams, flagSEOBNRv4P_hamiltonian_derivative flagHamiltonianDerivative)
 This function computes initial conditions for SEOBNRv4P. More...
 
static int SEOBConvertSpinAlignedDynamicsToGenericSpins (REAL8Array **dynamics, REAL8Array *dynamics_spinaligned, UINT4 retLen, REAL8 chi1, REAL8 chi2, SpinEOBParams *seobParams)
 This function converts a spin-aligned dynamics as output by the Runge-Kutta integrator to a generic-spin dynamics. More...
 
static int SEOBIntegrateDynamics (REAL8Array **dynamics, UINT4 *retLenOut, REAL8Vector *ICvalues, REAL8 EPS_ABS, REAL8 EPS_REL, REAL8 deltaT, REAL8 deltaT_min, REAL8 tstart, REAL8 tend, SpinEOBParams *seobParams, UINT4 flagConstantSampling, flagSEOBNRv4P_hamiltonian_derivative flagHamiltonianDerivative)
 This function integrates the SEOBNRv4P dynamics. More...
 
static int SEOBCalculatehlmAmpPhase (CAmpPhaseSequence **hlm, INT4 l, INT4 m, SEOBdynamics *seobdynamics, EOBNonQCCoeffs *nqcCoeffs, SpinEOBParams *seobParams, UINT4 includeNQC)
 This function generates a waveform mode for a given SEOB dynamics. More...
 
static int SEOBCalculateSphHarmListhlmAmpPhase (SphHarmListCAmpPhaseSequence **listhlm, INT4 modes[][2], UINT4 nmodes, SEOBdynamics *seobdynamics, SphHarmListEOBNonQCCoeffs *listnqcCoeffs, SpinEOBParams *seobParams, UINT4 flagNQC)
 This function generates all waveform modes as a list for a given SEOB dynamics. More...
 
static int SEOBLocateTimePeakOmega (REAL8 *tPeakOmega, INT4 *foundPeakOmega, UNUSED REAL8Array *dynamics, SEOBdynamics *seobdynamics, UINT4 retLen, UNUSED SpinEOBParams *seobParams, UNUSED flagSEOBNRv4P_hamiltonian_derivative flagHamiltonianDerivative)
 This function finds the peak of omega. More...
 
static UNUSED int SEOBLocateTimePeakModeAmp (REAL8 *tPeakAmp, INT4 *foundPeakAmp, CAmpPhaseSequence *hlm, SEOBdynamics *seobdynamics, UINT4 retLen)
 This function looks for the peak of a mode amplitude. More...
 
static int SEOBInterpolateDynamicsAtTime (REAL8Vector **seobdynamics_values, REAL8 t, SEOBdynamics *seobdynamics)
 This function computes all extended dynamics values at a given time by interpolating the dynamics array. More...
 
static int SEOBLFrameVectors (REAL8Vector **S1, REAL8Vector **S2, REAL8Vector *seobvalues, REAL8 m1, REAL8 m2, const flagSEOBNRv4P_Zframe flagZframe)
 
static int SEOBJfromDynamics (REAL8Vector **J, REAL8Vector *seobvalues, SpinEOBParams *seobParams)
 This function computes the J vector. More...
 
static int SEOBLhatfromDynamics (REAL8Vector **L, REAL8Vector *seobvalues, SpinEOBParams *seobParams, const flagSEOBNRv4P_Zframe flagZframe)
 This function computes the L-hat vector. More...
 
static int SEOBBuildJframeVectors (REAL8Vector *e1J, REAL8Vector *e2J, REAL8Vector *e3J, REAL8Vector *JVec)
 This function computes the Jframe unit vectors, with e3J along Jhat. More...
 
static int SEOBEulerI2JFromJframeVectors (REAL8 *alphaI2J, REAL8 *betaI2J, REAL8 *gammaI2J, REAL8Vector *e1J, REAL8Vector *e2J, REAL8Vector *e3J)
 This function computes Euler angles I2J given the unit vectors of the Jframe. More...
 
static int SEOBCalculateSphHarmListNQCCoefficientsV4 (SphHarmListEOBNonQCCoeffs **nqcCoeffsList, INT4 modes[][2], UINT4 nmodes, REAL8 tPeakOmega, SEOBdynamics *seobdynamics, SpinEOBParams *seobParams, REAL8Vector *chi1_omegaPeak, REAL8Vector *chi2_omegaPeak)
 This function computes the NQC coefficients for a list of mode contributions. More...
 
static UINT4 FindClosestIndex (REAL8Vector *vec, REAL8 value)
 This function finds the index in a vector such that the value at the index closest to an input value. More...
 
static REAL8 FindClosestValueInIncreasingVector (REAL8Vector *vec, REAL8 value)
 This function finds the value in a vector that is closest to an input value. More...
 
static int SEOBGetFinalSpinMass (REAL8 *finalMass, REAL8 *finalSpin, REAL8Vector *seobvalues, SpinEOBParams *seobParams, const flagSEOBNRv4P_Zframe flagZframe)
 
static int SEOBAttachRDToSphHarmListhPlm (SphHarmListCAmpPhaseSequence **listhPlm_RDattached, COMPLEX16Vector **sigmaQNMlm0, INT4 modes[][2], UINT4 nmodes, REAL8 finalMass, REAL8 finalSpin, SphHarmListCAmpPhaseSequence *listhPlm, REAL8 deltaT, UINT4 retLen, UINT4 retLenRDPatch, REAL8 tAttach, REAL8Vector *seobvalues, SEOBdynamics *seobdynamics, SpinEOBParams *seobParams, const flagSEOBNRv4P_Zframe flagZframe, const INT4 debug)
 This function attaches the ringdown to the P-frame modes hlm. More...
 
static int SEOBJoinTimeVector (REAL8Vector **tVecPmodes, UINT4 *retLenPmodes, REAL8 *tJoinHiS, UINT4 *indexJoinHiS, REAL8 *tJoinAttach, UINT4 *indexJoinAttach, UINT4 retLenHiSRDpatch, REAL8 deltaTHiS, REAL8 tstartHiS, REAL8 tAttach, SEOBdynamics *seobdynamicsAdaS, SEOBdynamics *seobdynamicsHiS)
 This function constructs the joined vector of times (AdaS+HiS+RDpatch) and keeps the jonction indices and times RDpatch is the extension of HiS for the RD, keeping the same constant sampling (indexJoinHiS, tJoinHiS) is given by the first time sample >=tstartHiS (indexJoinAttach, tJoinAttach) is given by the first time sample >=tAttach. More...
 
static int SEOBJoinDynamics (SEOBdynamics **seobdynamicsJoined, SEOBdynamics *seobdynamics1, SEOBdynamics *seobdynamics2, UINT4 indexJoin12, UINT4 indexEnd2)
 This function copies dynamics from AdaS<HiS and HiS<tAttach to form joined dynamics, ending at the last time sample <tAttach. More...
 
static int SEOBJoinSphHarmListhlm (SphHarmListCAmpPhaseSequence **listhlm_joined, SphHarmListCAmpPhaseSequence *listhlm_1, SphHarmListCAmpPhaseSequence *listhlm_2, INT4 modes[][2], UINT4 nmodes, UINT4 indexJoin12)
 This function copies dynamics from AdaS<HiS and HiS<tAttach to form joined dynamics, ending at the last time sample <tAttach. More...
 
static int SEOBAmplitudePeakFromAmp22Amp21 (REAL8 *tPeak, UINT4 *indexPeak, SphHarmListCAmpPhaseSequence *listhPlm, INT4 modes[][2], UINT4 nmodes, REAL8Vector *tVec)
 This function finds the (first) index and time with the largest sum-of-squares amplitude - discrete, no interpolation The sum-of-squares amplitude is the sum of the amplitude square of all modes of the waveform, rotationally invariant for any l. More...
 
static int SEOBEulerJ2PFromDynamics (REAL8Vector **alphaJ2P, REAL8Vector **betaJ2P, REAL8Vector **gammaJ2P, REAL8Vector *e1J, REAL8Vector *e2J, REAL8Vector *e3J, UINT4 retLen, UINT4 indexStop, SEOBdynamics *seobdynamics, SpinEOBParams *seobParams, flagSEOBNRv4P_Zframe flagZframe)
 This function computes the Euler angles from J-frame to P-frame given the dynamics and basis vectors of the J-frame Angle gamma computed according to minimal rotation condition with gamma=-alpha initially Note that all quantities in the dynamics and the basis vectors eJ are expressed in the initial I-frame. More...
 
static int SEOBEulerJ2PPostMergerExtension (REAL8Vector *alphaJ2P, REAL8Vector *betaJ2P, REAL8Vector *gammaJ2P, COMPLEX16 sigmaQNM220, COMPLEX16 sigmaQNM210, REAL8Vector *tVec, UINT4 retLen, UINT4 indexStart, SpinEOBParams *seobParams, flagSEOBNRv4P_euler_extension flagEulerextension, INT4 flip)
 This function extends Euler angles J2P according to the prescription flagEulerextension after attachment point Two prescriptions: constant angles, or simple precession around Jfinal at rate omegaQNM220-omegaQNM210 If SpinsAlmostAligned, all Euler angles are set to 0. More...
 
static REAL8 SEOBWignerDAmp (UINT4 l, INT4 m, INT4 mp, REAL8 beta)
 These functions compute the amplitude and phase of a Wigner coefficient Dlmmp, given Euler angles of an active rotation. More...
 
static REAL8 SEOBWignerDPhase (INT4 m, INT4 mp, REAL8 alpha, REAL8 gamma)
 
static int SEOBRotateInterpolatehJlmReImFromSphHarmListhPlmAmpPhase (SphHarmTimeSeries **hJlm, INT4 modes[][2], UINT4 nmodes, INT4 modes_lmax, REAL8 deltaT, UINT4 retLenTS, REAL8Vector *tVecPmodes, SphHarmListCAmpPhaseSequence *listhPlm, REAL8Vector *alphaJ2P, REAL8Vector *betaJ2P, REAL8Vector *gammaJ2P, UINT4 flagSymmetrizehPlminusm)
 This function computes the hJlm Re/Im timeseries (fixed sampling) from hPlm amp/phase modes and Euler angles J2P (irregular sampling). More...
 
static int SEOBRotatehIlmFromhJlm (SphHarmTimeSeries **hIlm, SphHarmTimeSeries *hJlm, INT4 modes_lmax, REAL8 alphaI2J, REAL8 betaI2J, REAL8 gammaI2J, REAL8 deltaT)
 This function computes the hIlm Re/Im timeseries (fixed sampling) from hJlm Re/Im timeseries (same sampling). More...
 
static int SEOBComputehplushcrossFromhIlm (REAL8TimeSeries *hplusTS, REAL8TimeSeries *hcrossTS, INT4 modes_lmax, SphHarmTimeSeries *hIlm, REAL8 amp0, REAL8 inc, REAL8 phi)
 This function combines the modes hIlm timeseries with the sYlm to produce the polarizations hplus, hcross. More...
 
static UINT4 SEOBGetNumberOfModesInModeArray (LALValue *modearray, int lmax)
 This function gets the number of modes present in a mode array, ignoring modes l>lmax (and l<2) Note that m<=0 modes are also ignored and a warning given. More...
 
static int SEOBGetModeNumbersFromModeArray (INT4 modes[][2], LALValue *modearray, int lmax)
 This function populates a dynamically allocated INT4 array to with the modes active in a ModeArray Possible modes with l>lmax are ignored (as well as l<2) Note that m<=0 modes are also ignored and a warning given. More...
 
int XLALEOBCheckNyquistFrequency (REAL8 m1, REAL8 m2, REAL8 spin1[3], REAL8 spin2[3], UINT4 ell_max, Approximant approx, REAL8 deltaT)
 
int XLALSimIMRSpinPrecEOBWaveformAll (REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, SphHarmTimeSeries **hIlm, SphHarmTimeSeries **hJlm, REAL8Vector **seobdynamicsAdaSVector, REAL8Vector **seobdynamicsHiSVector, REAL8Vector **seobdynamicsAdaSHiSVector, REAL8Vector **tVecPmodes, REAL8Vector **hP22_amp, REAL8Vector **hP22_phase, REAL8Vector **hP21_amp, REAL8Vector **hP21_phase, REAL8Vector **hP33_amp, REAL8Vector **hP33_phase, REAL8Vector **hP44_amp, REAL8Vector **hP44_phase, REAL8Vector **hP55_amp, REAL8Vector **hP55_phase, REAL8Vector **alphaJ2P, REAL8Vector **betaJ2P, REAL8Vector **gammaJ2P, REAL8Vector **mergerParams, const REAL8 phi, const REAL8 INdeltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 chi1x, const REAL8 chi1y, const REAL8 chi1z, const REAL8 chi2x, const REAL8 chi2y, const REAL8 chi2z, LALValue *modearray, LALDict *seobflags)
 This function is the master function generating precessing spinning SEOBNRv4P waveforms h+ and hx. More...
 

Go to the source code of this file.

Data Structures

struct  approximant
 

Macros

#define _LALSIMIMRSPINPRECEOBv4P_C
 
#define debugOutput   0
 
#define _SEOB_MODES_LMAX   5
 
#define v4Pwave   451
 
#define v4PdynamicsVariables   26
 
#define FREE_ALL
 
#define PRINT_ALL_PARAMS
 

Variables

struct approximant v4P = {.name = "SEOBNRv4P", .number = 401}
 
struct approximant v4PHM = {.name = "SEOBNRv4PHM", .number = 402}
 

Macro Definition Documentation

◆ _LALSIMIMRSPINPRECEOBv4P_C

#define _LALSIMIMRSPINPRECEOBv4P_C

Definition at line 21 of file LALSimIMRSpinPrecEOBv4P.c.

◆ debugOutput

#define debugOutput   0

Definition at line 78 of file LALSimIMRSpinPrecEOBv4P.c.

◆ _SEOB_MODES_LMAX

#define _SEOB_MODES_LMAX   5

Definition at line 90 of file LALSimIMRSpinPrecEOBv4P.c.

◆ v4Pwave

#define v4Pwave   451

Definition at line 93 of file LALSimIMRSpinPrecEOBv4P.c.

◆ v4PdynamicsVariables

#define v4PdynamicsVariables   26

Definition at line 105 of file LALSimIMRSpinPrecEOBv4P.c.

◆ FREE_ALL

#define FREE_ALL

Definition at line 107 of file LALSimIMRSpinPrecEOBv4P.c.

◆ PRINT_ALL_PARAMS

#define PRINT_ALL_PARAMS
Value:
do { \
XLALPrintError( \
"--approximant SEOBNRv4P --f-min %.16e --m1 %.16e --m2 %.16e " \
"--spin1x %.16e --spin1y %.16e --spin1z %.16e --spin2x %.16e " \
"--spin2y %.16e --spin2z %.16e --inclination %.16e --distance %.16e " \
"--phiRef %.16e --sample-rate %.16e\n", \
fMin, m1SI / LAL_MSUN_SI, m2SI / LAL_MSUN_SI, chi1x, chi1y, chi1z, \
chi2x, chi2y, chi2z, inc, r / (1e6 * LAL_PC_SI), phi, 1. / INdeltaT); \
} while (0);
static const INT4 r

Definition at line 172 of file LALSimIMRSpinPrecEOBv4P.c.

Function Documentation

◆ XLALEOBHighestInitialFreq()

int XLALEOBHighestInitialFreq ( REAL8 freqMinRad,
REAL8  mTotal 
)
Parameters
freqMinRad< OUTPUT, lowest initial 22 mode frequency
mTotal< Total mass in units of solar masses

Definition at line 189 of file LALSimIMRSpinPrecEOBv4P.c.

◆ argmax()

static UNUSED UINT4 argmax ( REAL8Vector vec)
static

Definition at line 198 of file LALSimIMRSpinPrecEOBv4P.c.

◆ get_slice()

static UNUSED REAL8Vector* get_slice ( REAL8Vector vec,
UINT4  lo,
UINT4  hi 
)
static

Definition at line 212 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALEOBFindRobustPeak()

static UNUSED int XLALEOBFindRobustPeak ( REAL8 tPeakQuant,
REAL8Vector tVec,
REAL8Vector quantVec,
UINT4  window_width 
)
static

Definition at line 227 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALEOBSpinPrecStopCondition_v4()

static UNUSED int XLALEOBSpinPrecStopCondition_v4 ( double UNUSED  t,
const double  values[],
double  dvalues[],
void UNUSED *  funcParams 
)
static

Definition at line 309 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALEOBSpinPrecStopConditionBasedOnPR()

static UNUSED int XLALEOBSpinPrecStopConditionBasedOnPR ( double UNUSED  t,
const double  values[],
double  dvalues[],
void UNUSED *  funcParams 
)
static

Stopping conditions for dynamics integration for SEOBNRv4P.

Definition at line 351 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALEOBSpinPrecAlignedStopCondition()

static int XLALEOBSpinPrecAlignedStopCondition ( double UNUSED  t,
const double  values[],
double  dvalues[],
void *  funcParams 
)
static

Stopping condition for the regular resolution SEOBNRv1/2 orbital evolution – stop when reaching max orbital frequency in strong field.

At each test, if omega starts to decrease, return 1 to stop evolution; if not, update omega with current value and return GSL_SUCCESS to continue evolution.

Parameters
tUNUSED
valuesdynamical variable values
dvaluesdynamical variable time derivative values
funcParamsphysical parameters

Definition at line 603 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALSpinPrecAlignedHiSRStopCondition()

static int XLALSpinPrecAlignedHiSRStopCondition ( double UNUSED  t,
const double UNUSED  values[],
double  dvalues[],
void UNUSED *  funcParams 
)
static

Stopping condition for the high resolution SEOBNRv4.

Parameters
tUNUSED
valuesdynamical variable values
dvaluesdynamical variable time derivative values
funcParamsphysical parameters

Definition at line 630 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALSetup_EOB__std_mode_array_structure()

static INT4 XLALSetup_EOB__std_mode_array_structure ( LALValue *  ModeArray,
UINT4  PrecEOBversion 
)
static

ModeArray is a structure which allows to select the the co-precessing frame modes to include in the waveform.

This function will create a structure with the default modes for every model

Definition at line 663 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALCheck_EOB_mode_array_structure()

static INT4 XLALCheck_EOB_mode_array_structure ( LALValue *  ModeArray,
UINT4  PrecEOBversion 
)
static

ModeArray is a structure which allows to select the the co-precessing frame modes to include in the waveform.

This function check if the selected modes are available for a given model

Definition at line 694 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALSimIMRSpinPrecEOBWaveform()

int XLALSimIMRSpinPrecEOBWaveform ( REAL8TimeSeries **  hplus,
REAL8TimeSeries **  hcross,
const REAL8  phiC,
const REAL8  deltaT,
const REAL8  m1SI,
const REAL8  m2SI,
const REAL8  fMin,
const REAL8  r,
const REAL8  inc,
const REAL8  INspin1[],
const REAL8  INspin2[],
UNUSED const UINT4  PrecEOBversion,
LALDict *  LALParams 
)

Standard interface for SEOBNRv4P waveform generator: calls XLALSimIMRSpinPrecEOBWaveformAll.

This time series contains harmonics in precessing (P) frame, no RD, for the end of the signal (high samling part)

This stores harmonics in J-frame, no RD, for the end of the signal (high sampling part)

Parameters
hplus< OUTPUT, +-polarization waveform
hcross< OUTPUT, x-polarization waveform
phiC< coalescence orbital phase (rad)
deltaT< sampling time step
m1SI< mass-1 in SI unit (kg)
m2SI< mass-2 in SI unit (kg) 8
fMin< starting frequency (Hz)
r< luminosity distance in SI unit (m)
inc< inclination angle
INspin1< spin1
INspin2< spin2
PrecEOBversion< Precessing EOB waveform generator model
LALParams< Dictionary of additional wf parameters

Definition at line 763 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBGetLMaxInModeArray()

static int SEOBGetLMaxInModeArray ( LALValue *  modearray,
int  lmax 
)
static

This function returns the maximum ell in the mode array.

Note that m<=0 modes are ignored and a warning given.

Parameters
modearray< Input: ModeArray structure
lmax< Input: maximum value of l to explore -- possible modes with l>lmax will be ignored

Definition at line 958 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALSimIMRSpinPrecEOBModes()

SphHarmTimeSeries* XLALSimIMRSpinPrecEOBModes ( const REAL8  deltaT,
const REAL8  m1SI,
const REAL8  m2SI,
const REAL8  fMin,
const REAL8  r,
const REAL8  INspin1[],
const REAL8  INspin2[],
UNUSED const UINT4  PrecEOBversion,
LALDict *  LALParams 
)

Standard interface for SEOBNRv4P modes generator: calls XLALSimIMRSpinPrecEOBWaveformAll.

This time series contains harmonics in precessing (P) frame, no RD, for the end of the signal (high samling part)

This stores harmonics in J-frame, no RD, for the end of the signal (high sampling part)

Parameters
deltaT< sampling time step
m1SI< mass-1 in SI unit (kg)
m2SI< mass-2 in SI unit (kg) 8
fMin< starting frequency (Hz)
r< luminosity distance in SI unit (m)
INspin1< spin1
INspin2< spin2
PrecEOBversion< Precessing EOB waveform generator model
LALParams< Dictionary of additional wf parameters

Definition at line 988 of file LALSimIMRSpinPrecEOBv4P.c.

◆ CAmpPhaseSequence_Init()

static int CAmpPhaseSequence_Init ( CAmpPhaseSequence **  campphase,
int  size 
)
static

Definition at line 1264 of file LALSimIMRSpinPrecEOBv4P.c.

◆ CAmpPhaseSequence_Destroy()

static int CAmpPhaseSequence_Destroy ( CAmpPhaseSequence campphase)
static

Definition at line 1311 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListEOBNonQCCoeffs_Destroy()

static int SphHarmListEOBNonQCCoeffs_Destroy ( SphHarmListEOBNonQCCoeffs list)
static

Definition at line 1332 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListEOBNonQCCoeffs_AddMode()

static int SphHarmListEOBNonQCCoeffs_AddMode ( SphHarmListEOBNonQCCoeffs **  list_prepended,
EOBNonQCCoeffs nqcCoeffs,
UINT4  l,
INT4  m 
)
static

Definition at line 1352 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListEOBNonQCCoeffs_GetMode()

static SphHarmListEOBNonQCCoeffs* SphHarmListEOBNonQCCoeffs_GetMode ( SphHarmListEOBNonQCCoeffs list,
UINT4  l,
INT4  m 
)
static

Definition at line 1394 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListCAmpPhaseSequence_Destroy()

static int SphHarmListCAmpPhaseSequence_Destroy ( SphHarmListCAmpPhaseSequence list)
static

Definition at line 1413 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListCAmpPhaseSequence_AddMode()

static int SphHarmListCAmpPhaseSequence_AddMode ( SphHarmListCAmpPhaseSequence **  list_prepended,
CAmpPhaseSequence campphase,
UINT4  l,
INT4  m 
)
static

Definition at line 1438 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SphHarmListCAmpPhaseSequence_GetMode()

static SphHarmListCAmpPhaseSequence* SphHarmListCAmpPhaseSequence_GetMode ( SphHarmListCAmpPhaseSequence list,
UINT4  l,
INT4  m 
)
static

Definition at line 1480 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBdynamics_Destroy()

static int SEOBdynamics_Destroy ( SEOBdynamics seobdynamics)
static

Definition at line 1499 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBdynamics_Init()

static int SEOBdynamics_Init ( SEOBdynamics **  seobdynamics,
UINT4  retLen 
)
static
Parameters
seobdynamics< Output: pointer to the SOBdynamics
retLen< Input: length of dynamics data to allocate

Definition at line 1506 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateChiS()

static REAL8 SEOBCalculateChiS ( REAL8  chi1dotZ,
REAL8  chi2dotZ 
)
static

Functions to calculate symmetrized and antisymmetrized combinations of the dimensionless spins projected on the radiation frame Z-axis (L or LN)

Definition at line 1577 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateChiA()

static REAL8 SEOBCalculateChiA ( REAL8  chi1dotZ,
REAL8  chi2dotZ 
)
static

Definition at line 1580 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculatetplspin()

static REAL8 SEOBCalculatetplspin ( REAL8  m1,
REAL8  m2,
REAL8  eta,
REAL8  chi1dotZ,
REAL8  chi2dotZ,
INT4  SpinAlignedEOBversion 
)
static

Function to calculate tplspin See discussion below Eq.

4 of PRD 89, 061502(R) [arXiv:1311.2544] (2014)

Definition at line 1588 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateSigmaKerr()

static int SEOBCalculateSigmaKerr ( REAL8Vector sigmaKerr,
REAL8Vector s1,
REAL8Vector s2 
)
static

Function to calculate normalized spin of the deformed-Kerr background in SEOBNRv1.

Eq. 5.2 of Barausse and Buonanno PRD 81, 084024 (2010) [arXiv:0912.3517]. Identical to XLALSimIMRSpinEOBCalculateSigmaKerr, except that the input spins are in units of mTotal^2

Parameters
sigmaKerr< OUTPUT, normalized (to total mass) spin of deformed-Kerr
s1< spin vector 1, in units of mTotal^2
s2< spin vector 2, in units of mTotal^2

Definition at line 1620 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateSigmaStar()

static int SEOBCalculateSigmaStar ( REAL8Vector sigmaStar,
REAL8  mass1,
REAL8  mass2,
REAL8Vector s1,
REAL8Vector s2 
)
static

Function to calculate normalized spin of the test particle in SEOBNRv1.

Eq. 5.3 of Barausse and Buonanno PRD 81, 084024 (2010) [arXiv:0912.3517]. Identical to XLALSimIMRSpinEOBCalculateSigmaStar, except that the input spins are in units of mTotal^2

Parameters
sigmaStar< OUTPUT, normalized (to total mass) spin of test particle
mass1< mass 1
mass2< mass 2
s1< spin vector 1, in units of mTotal^2
s2< spin vector 2, in units of mTotal^2

Definition at line 1638 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBComputeExtendedSEOBdynamics()

static int SEOBComputeExtendedSEOBdynamics ( SEOBdynamics **  seobdynamics,
REAL8Array dynamics,
UINT4  retLen,
SpinEOBParams seobParams,
flagSEOBNRv4P_hamiltonian_derivative  flagHamiltonianDerivative,
flagSEOBNRv4P_Zframe  flagZframe 
)
static

This function computes quantities (polardynamics, omega, s1dotZ, s2dotZ, hamiltonian) derived from the dynamics as output by the integrator, and returns a SEOBdynamics struct.

Two choices for Z: L or LN. Note: this function also applies when the spins are almost aligned and v4 is used.

Parameters
seobdynamics< Output, double pointer to SEOBdynamics struct. If points to an existing struct, the latter will be destroyed
dynamics< Input, array containing the dynamics as output by the integrator
retLen< Input, length of the dynamics
seobParams< SEOB parameters
flagHamiltonianDerivative< flag to choose between numerical and analytical Hamiltonian derivatives
flagZframe< flag to choose Z direction of the frame, LN or L

Definition at line 1659 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBInitialConditions()

static int SEOBInitialConditions ( REAL8Vector **  ICvalues,
REAL8  MfMin,
REAL8  m1,
REAL8  m2,
REAL8Vector chi1,
REAL8Vector chi2,
SpinEOBParams seobParams,
flagSEOBNRv4P_hamiltonian_derivative  flagHamiltonianDerivative 
)
static

This function computes initial conditions for SEOBNRv4P.

Parameters
ICvalues< Output: vector with initial conditions
MfMin< Input: dimensionless initial frequency (in units of 1/mTotal)
m1< Input: mass 1 (solar masses)
m2< Input: mass 2 (solar masses)
chi1< Input: dimensionless spin 1 (in units of m1^2)
chi2< Input: dimensionless spin 2 (in units of m2^2)
seobParams< SEOB params
flagHamiltonianDerivative< flag to decide wether to use analytical or numerical derivatives

Definition at line 1869 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBConvertSpinAlignedDynamicsToGenericSpins()

static int SEOBConvertSpinAlignedDynamicsToGenericSpins ( REAL8Array **  dynamics,
REAL8Array dynamics_spinaligned,
UINT4  retLen,
REAL8  chi1,
REAL8  chi2,
SpinEOBParams seobParams 
)
static

This function converts a spin-aligned dynamics as output by the Runge-Kutta integrator to a generic-spin dynamics.

Spin-aligned dynamics format: t, r, phi, pr, pphi Generic-spin dynamics format: t, x, y, z, px, py, pz, s1x, s1y, s1z, s2x, s2y, s2z, phiMod, phiDMod

Parameters
dynamics< Output: pointer to array for the generic-spin dynamics
dynamics_spinaligned< Input: array for the aligned-spin dynamics
retLen< Input: length of dynamics
chi1< Input: spin 1 aligned component (dimensionless)
chi2< Input: spin 2 aligned component (dimensionless)
seobParams< SEOB params

Definition at line 1996 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBIntegrateDynamics()

static int SEOBIntegrateDynamics ( REAL8Array **  dynamics,
UINT4 retLenOut,
REAL8Vector ICvalues,
REAL8  EPS_ABS,
REAL8  EPS_REL,
REAL8  deltaT,
REAL8  deltaT_min,
REAL8  tstart,
REAL8  tend,
SpinEOBParams seobParams,
UINT4  flagConstantSampling,
flagSEOBNRv4P_hamiltonian_derivative  flagHamiltonianDerivative 
)
static

This function integrates the SEOBNRv4P dynamics.

Output is given either on the adaptive sampling coming out of the Runge Kutta integrator, with no interpolation being made, or on the constant sampling specified by deltaT. Either analytical or numerical derivatives of the Hamiltonian are used depending on the flag flagHamiltonianDerivative. Only numerical derivatives have been shown to work as of June 2019. When spins are flagged as almost aligned, falls back to spin-aligned dynamics.

Parameters
dynamics< Output: pointer to array for the dynamics
retLenOut< Output: length of the output dynamics
ICvalues< Input: vector with initial conditions
EPS_ABS< Input: absolute accuracy for adaptive Runge-Kutta integrator
EPS_REL< Input: relative accuracy for adaptive Runge-Kutta integrator
deltaT< Input: timesampling step in geometric units - when flagConstantSampling is False, used internally only to initialize adaptive step
deltaT_min< Input: minimal timesampling step in geometric units when using adaptive steps with flagConstantSampling set to False - set to 0 to ignore
tstart< Input: starting time of the integration
tend< Input: max time of the integration - normally, the integration stops when stopping condition is met, and this is ignored
seobParams< SEOB params
flagConstantSampling< flag to decide wether to use constant sampling with deltaT in output instead of adaptive sampling
flagHamiltonianDerivative< flag to decide wether to use analytical or numerical derivatives

Definition at line 2060 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculatehlmAmpPhase()

static int SEOBCalculatehlmAmpPhase ( CAmpPhaseSequence **  hlm,
INT4  l,
INT4  m,
SEOBdynamics seobdynamics,
EOBNonQCCoeffs nqcCoeffs,
SpinEOBParams seobParams,
UINT4  includeNQC 
)
static

This function generates a waveform mode for a given SEOB dynamics.

Parameters
hlm< Output: hlm in complex amplitude / phase form
l< Input: mode index l
m< Input: mode index m
seobdynamics< Input: SEOB dynamics
nqcCoeffs< Input: NQC coeffs
seobParams< SEOB params
includeNQC< flag to choose wether or not to include NQC

Definition at line 2270 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateSphHarmListhlmAmpPhase()

static int SEOBCalculateSphHarmListhlmAmpPhase ( SphHarmListCAmpPhaseSequence **  listhlm,
INT4  modes[][2],
UINT4  nmodes,
SEOBdynamics seobdynamics,
SphHarmListEOBNonQCCoeffs listnqcCoeffs,
SpinEOBParams seobParams,
UINT4  flagNQC 
)
static

This function generates all waveform modes as a list for a given SEOB dynamics.

Parameters
listhlm< Output: list of modes for hlm
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
seobdynamics< Input: SEOB dynamics
listnqcCoeffs< Input: list of NQCs
seobParams< SEOB params
flagNQC< flag to choose wether or not to include NQC

Definition at line 2421 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBLocateTimePeakOmega()

static int SEOBLocateTimePeakOmega ( REAL8 tPeakOmega,
INT4 foundPeakOmega,
UNUSED REAL8Array dynamics,
SEOBdynamics seobdynamics,
UINT4  retLen,
UNUSED SpinEOBParams seobParams,
UNUSED flagSEOBNRv4P_hamiltonian_derivative  flagHamiltonianDerivative 
)
static

This function finds the peak of omega.

Note that there are various possibilities as of what is returned if tPeakOmega is not found at first. In particular, by default, if there is no peak found, the last point of the dynamics is used.

Parameters
tPeakOmega< Output: time of peak of Omega if found (see inside XLALSimLocateOmegaTime for what is returned otherwise)
foundPeakOmega< Output: flag indicating wether tPeakOmega has been found
dynamics< Input: array for dynamics
seobdynamics< Input: SEOB dynamics object
retLen< Input: length of dynamics
seobParams< SEOB params
flagHamiltonianDerivative< flag to decide wether to use analytical or numerical derivatives

Definition at line 2469 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBLocateTimePeakModeAmp()

static UNUSED int SEOBLocateTimePeakModeAmp ( REAL8 tPeakAmp,
INT4 foundPeakAmp,
CAmpPhaseSequence hlm,
SEOBdynamics seobdynamics,
UINT4  retLen 
)
static

This function looks for the peak of a mode amplitude.

Note that the internals are complicated, see XLALSimLocateAmplTime.

Parameters
tPeakAmp< Output: time of peak of amplitude if found (see inside XLALSimLocateAmplTime for what is returned otherwise)
foundPeakAmp< Output: flag indicating wether tPeakOmega has been found
hlm< Input: mode in complex amplitude/phase form
seobdynamics< Input: SEOB dynamics object
retLen< Input: length of dynamics

Definition at line 2532 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBInterpolateDynamicsAtTime()

static int SEOBInterpolateDynamicsAtTime ( REAL8Vector **  seobdynamics_values,
REAL8  t,
SEOBdynamics seobdynamics 
)
static

This function computes all extended dynamics values at a given time by interpolating the dynamics array.

We build a cubic spline limited to +- 20 samples on each side of the time of interest.

Parameters
seobdynamics_values< Output: pointer to vector for seobdynamics interpolated values
t< Input: time at which to evaluate
seobdynamics< Input: SEOB dynamics

Definition at line 2582 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBLFrameVectors()

static int SEOBLFrameVectors ( REAL8Vector **  S1,
REAL8Vector **  S2,
REAL8Vector seobvalues,
REAL8  m1,
REAL8  m2,
const flagSEOBNRv4P_Zframe  flagZframe 
)
static
Parameters
S1<Output: S1 in L-n frame
S2<Output: S2 in L-n frame
seobvalues<Input: vector of extended dynamics
m1<Input: mass of the first object in solar masses
m2<Input: mass of the second object in solar masses
flagZframe<Input: whether to compute the L_N or L frame

Definition at line 2644 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBJfromDynamics()

static int SEOBJfromDynamics ( REAL8Vector **  J,
REAL8Vector seobvalues,
SpinEOBParams seobParams 
)
static

This function computes the J vector.

Parameters
J< Output: pointer to vector J
seobvalues< Input: vector for extended dynamics values
seobParams< SEOB params

Definition at line 2724 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBLhatfromDynamics()

static int SEOBLhatfromDynamics ( REAL8Vector **  L,
REAL8Vector seobvalues,
SpinEOBParams seobParams,
const flagSEOBNRv4P_Zframe  flagZframe 
)
static

This function computes the L-hat vector.

Parameters
L< Output: pointer to vector L
seobvalues< Input: vector for extended dynamics values
seobParams< SEOB params
flagZframe<Input: whether to compute the L_N or L frame

Definition at line 2772 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBBuildJframeVectors()

static int SEOBBuildJframeVectors ( REAL8Vector e1J,
REAL8Vector e2J,
REAL8Vector e3J,
REAL8Vector JVec 
)
static

This function computes the Jframe unit vectors, with e3J along Jhat.

Convention: if (ex, ey, ez) is the initial I-frame, e1J chosen such that ex is in the plane (e1J, e3J) and ex.e1J>0. In the case where e3J and x happen to be close to aligned, we continuously switch to another prescription with y playing the role of x

Parameters
e1J< Output: vector for e1J, already allocated
e2J< Output: vector for e2J, already allocated
e3J< Output: vector for e3J, already allocated
JVec< Input: vector J

Definition at line 2833 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBEulerI2JFromJframeVectors()

static int SEOBEulerI2JFromJframeVectors ( REAL8 alphaI2J,
REAL8 betaI2J,
REAL8 gammaI2J,
REAL8Vector e1J,
REAL8Vector e2J,
REAL8Vector e3J 
)
static

This function computes Euler angles I2J given the unit vectors of the Jframe.

Parameters
alphaI2J< Output: Euler angle alpha I2J
betaI2J< Output: Euler angle beta I2J
gammaI2J< Output: Euler angle gamma I2J
e1J< Input: unit Jframe vector e1J
e2J< Input: unit Jframe vector e2J
e3J< Input: unit Jframe vector e3J

Definition at line 2925 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBCalculateSphHarmListNQCCoefficientsV4()

static int SEOBCalculateSphHarmListNQCCoefficientsV4 ( SphHarmListEOBNonQCCoeffs **  nqcCoeffsList,
INT4  modes[][2],
UINT4  nmodes,
REAL8  tPeakOmega,
SEOBdynamics seobdynamics,
SpinEOBParams seobParams,
REAL8Vector chi1_omegaPeak,
REAL8Vector chi2_omegaPeak 
)
static

This function computes the NQC coefficients for a list of mode contributions.

Parameters
nqcCoeffsList< Output: non-quasi-circular coefficients as a list for each mode
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
tPeakOmega< Input: time of peak of Omega
seobdynamics< Input: SEOB dynamics
seobParams< Input: SEOB params
chi1_omegaPeak< Input: dimensionless spin 1 at peak of omega in L_N frame
chi2_omegaPeak< Input: dimensionless spin 2 at peak of omega in L_N frame

Definition at line 2954 of file LALSimIMRSpinPrecEOBv4P.c.

◆ FindClosestIndex()

static UINT4 FindClosestIndex ( REAL8Vector vec,
REAL8  value 
)
static

This function finds the index in a vector such that the value at the index closest to an input value.

Assumes the input vector is increasing (typically, times or frequencies of series).

Parameters
vec< Input: monotonically increasing vector
value< Input: value to look for

Definition at line 3115 of file LALSimIMRSpinPrecEOBv4P.c.

◆ FindClosestValueInIncreasingVector()

static REAL8 FindClosestValueInIncreasingVector ( REAL8Vector vec,
REAL8  value 
)
static

This function finds the value in a vector that is closest to an input value.

Assumes the input vector is increasing (typically, times or frequencies of series). Purely for convenience.

Parameters
vec< Input: monotonically increasing vector
value< Input: value to look for

Definition at line 3139 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBGetFinalSpinMass()

static int SEOBGetFinalSpinMass ( REAL8 finalMass,
REAL8 finalSpin,
REAL8Vector seobvalues,
SpinEOBParams seobParams,
const flagSEOBNRv4P_Zframe  flagZframe 
)
static
Parameters
finalMass< Output: final mass computed from fit (scaled by M)
finalSpin< Output: final spin computed from fit (dimensionless)
seobvalues< Input: vector for dynamics values at time of peak of omega
seobParams< Input: SEOB params
flagZframe< Input: Whether to use the L_N or L frame

Definition at line 3147 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBAttachRDToSphHarmListhPlm()

static int SEOBAttachRDToSphHarmListhPlm ( SphHarmListCAmpPhaseSequence **  listhPlm_RDattached,
COMPLEX16Vector **  sigmaQNMlm0,
INT4  modes[][2],
UINT4  nmodes,
REAL8  finalMass,
REAL8  finalSpin,
SphHarmListCAmpPhaseSequence listhPlm,
REAL8  deltaT,
UINT4  retLen,
UINT4  retLenRDPatch,
REAL8  tAttach,
REAL8Vector seobvalues,
SEOBdynamics seobdynamics,
SpinEOBParams seobParams,
const flagSEOBNRv4P_Zframe  flagZframe,
const INT4  debug 
)
static

This function attaches the ringdown to the P-frame modes hlm.

Here seobvalues have been interpolated from seobdynamics at tPeakOmega (can differ from tAttach).

Parameters
listhPlm_RDattached< Output: list of extended modes hlm with RD attached
sigmaQNMlm0< Output: list of QNM complex frequency for modes lm, 0th overtone (dimensionless)
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
finalMass< Input: final mass computed from fit (scaled by M)
finalSpin< Input: final spin computed from fit (dimensionless)
listhPlm< Input: list of modes hlm
deltaT< Input: time step
retLen< Input: length of the input modes and dynamics
retLenRDPatch< Input: length of the ringdown patch
tAttach< Input: time of attachment
seobvalues< Input: vector for dynamics values at time of peak of omega
seobdynamics< Input: SEOB dynamics
seobParams< SEOB params
flagZframe< Input: whether to use L_N or L frame for spin projections
debug< Input: flag to print debug information

Definition at line 3198 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBJoinTimeVector()

static int SEOBJoinTimeVector ( REAL8Vector **  tVecPmodes,
UINT4 retLenPmodes,
REAL8 tJoinHiS,
UINT4 indexJoinHiS,
REAL8 tJoinAttach,
UINT4 indexJoinAttach,
UINT4  retLenHiSRDpatch,
REAL8  deltaTHiS,
REAL8  tstartHiS,
REAL8  tAttach,
SEOBdynamics seobdynamicsAdaS,
SEOBdynamics seobdynamicsHiS 
)
static

This function constructs the joined vector of times (AdaS+HiS+RDpatch) and keeps the jonction indices and times RDpatch is the extension of HiS for the RD, keeping the same constant sampling (indexJoinHiS, tJoinHiS) is given by the first time sample >=tstartHiS (indexJoinAttach, tJoinAttach) is given by the first time sample >=tAttach.

Parameters
tVecPmodes< Output: vector of times for P-modes (AdaS+HiS+RDpatch)
retLenPmodes< Output: length of output vector of times for P-modes
tJoinHiS< Output: first time >= tstartHiS
indexJoinHiS< Output: first index >= tstartHiS
tJoinAttach< Output: first time >= tAttach
indexJoinAttach< Output: first index >= tAttach
retLenHiSRDpatch< Input: length of RD patch to be added at the end of HiS with the same constant sampling
deltaTHiS< Input: time step for the high sampling
tstartHiS< Input: time of start of HiS
tAttach< Input: time of attachment
seobdynamicsAdaS< Input: SEOB dynamics with adaptive-sampling
seobdynamicsHiS< Input: SEOB dynamics with high-sampling

Definition at line 3441 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBJoinDynamics()

static int SEOBJoinDynamics ( SEOBdynamics **  seobdynamicsJoined,
SEOBdynamics seobdynamics1,
SEOBdynamics seobdynamics2,
UINT4  indexJoin12,
UINT4  indexEnd2 
)
static

This function copies dynamics from AdaS<HiS and HiS<tAttach to form joined dynamics, ending at the last time sample <tAttach.

Parameters
seobdynamicsJoined< Output: pointer to joined dynamics
seobdynamics1< Input: first dynamics
seobdynamics2< Input: second dynamics
indexJoin12< Input: index where to join the two dynamics
indexEnd2< Input: index of the joined dynamics where to stop dynamics 2 (excluded)

Definition at line 3512 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBJoinSphHarmListhlm()

static int SEOBJoinSphHarmListhlm ( SphHarmListCAmpPhaseSequence **  listhlm_joined,
SphHarmListCAmpPhaseSequence listhlm_1,
SphHarmListCAmpPhaseSequence listhlm_2,
INT4  modes[][2],
UINT4  nmodes,
UINT4  indexJoin12 
)
static

This function copies dynamics from AdaS<HiS and HiS<tAttach to form joined dynamics, ending at the last time sample <tAttach.

Parameters
listhlm_joined< Output: list of joined modes
listhlm_1< Input: list of modes 1
listhlm_2< Input: list of modes 2
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
indexJoin12< Input: index where to join the two dynamics

Definition at line 3557 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBAmplitudePeakFromAmp22Amp21()

static int SEOBAmplitudePeakFromAmp22Amp21 ( REAL8 tPeak,
UINT4 indexPeak,
SphHarmListCAmpPhaseSequence listhPlm,
INT4  modes[][2],
UINT4  nmodes,
REAL8Vector tVec 
)
static

This function finds the (first) index and time with the largest sum-of-squares amplitude - discrete, no interpolation The sum-of-squares amplitude is the sum of the amplitude square of all modes of the waveform, rotationally invariant for any l.

This function is l=2 only, requires 22 to be present and uses 21 if present.

Parameters
tPeak< Output: time of peak
indexPeak< Output: index of peak
listhPlm< Input: list of modes hlm
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
tVec< Input: vector of times

Definition at line 3633 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBEulerJ2PFromDynamics()

static int SEOBEulerJ2PFromDynamics ( REAL8Vector **  alphaJ2P,
REAL8Vector **  betaJ2P,
REAL8Vector **  gammaJ2P,
REAL8Vector e1J,
REAL8Vector e2J,
REAL8Vector e3J,
UINT4  retLen,
UINT4  indexStop,
SEOBdynamics seobdynamics,
SpinEOBParams seobParams,
flagSEOBNRv4P_Zframe  flagZframe 
)
static

This function computes the Euler angles from J-frame to P-frame given the dynamics and basis vectors of the J-frame Angle gamma computed according to minimal rotation condition with gamma=-alpha initially Note that all quantities in the dynamics and the basis vectors eJ are expressed in the initial I-frame.

Parameters
alphaJ2P< Output: pointer to vector for alpha J2P
betaJ2P< Output: pointer to vector for beta J2P
gammaJ2P< Output: pointer to vector for gamma J2P
e1J< Input: unit Jframe vector e1J
e2J< Input: unit Jframe vector e2J
e3J< Input: unit Jframe vector e3J
retLen< Input: total length of Euler angles data to be allocated (length of P-modes)
indexStop< Input: index where we stop the computation (excluded, index of time of attachment)
seobdynamics<Input: SEOB dynamics (joined AdaS+HiS, up to tAttach)
seobParams< SEOB params
flagZframe< flag to choose Z direction of the frame, LN or L

Definition at line 3706 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBEulerJ2PPostMergerExtension()

static int SEOBEulerJ2PPostMergerExtension ( REAL8Vector alphaJ2P,
REAL8Vector betaJ2P,
REAL8Vector gammaJ2P,
COMPLEX16  sigmaQNM220,
COMPLEX16  sigmaQNM210,
REAL8Vector tVec,
UINT4  retLen,
UINT4  indexStart,
SpinEOBParams seobParams,
flagSEOBNRv4P_euler_extension  flagEulerextension,
INT4  flip 
)
static

This function extends Euler angles J2P according to the prescription flagEulerextension after attachment point Two prescriptions: constant angles, or simple precession around Jfinal at rate omegaQNM220-omegaQNM210 If SpinsAlmostAligned, all Euler angles are set to 0.

Parameters
alphaJ2P< Output: vector for alpha J2P, already allocated
betaJ2P< Output: vector for beta J2P, already allocated
gammaJ2P< Output: vector for gamma J2P, already allocated
sigmaQNM220< Input: complex frequency for QNM 22, 0th overtone
sigmaQNM210< Input: complex frequency for QNM 21, 0th overtone
tVec< Input: time vector for Euler angles data (length of P-modes)
retLen< Input: total length of Euler angles data (length of P-modes)
indexStart< Input: index where we start the extension (included, index of time of attachment)
seobParams< SEOB params
flagEulerextension< flag indicating how to extend the Euler angles post-merger
flip<< a flag of whether to flip the sign of the precession frequency

Definition at line 3912 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBWignerDAmp()

static REAL8 SEOBWignerDAmp ( UINT4  l,
INT4  m,
INT4  mp,
REAL8  beta 
)
static

These functions compute the amplitude and phase of a Wigner coefficient Dlmmp, given Euler angles of an active rotation.

Convention for Wigner matrices (mp stands for m', * for conjugation): for the active rotation from the I-frame to the P-frame, parameterized by Euler angles (alpha, beta, gamma) in the ZYZ convention

\[ h^{P}_{lm} = \sum_{m'} D^{l}_{m m'} h^{I}_{lm'}\]

\[ h^{I}_{lm} = \sum_{m'} D^{l}_{m m'}* h^{P}_{lm'}\]

\[ D^{l}_{m m'} = d^{l}_{m m'}(\beta) \exp{i m \alpha} \exp{i m' \gamma}\]

with the notation \( c,s = \cos, \sin (\beta/2)\), \( k_{min} = \max(0,m-m'), k_{max} = \min(l+m, l-m')\):

\[d^{l}_{m m'}(\beta) = \sum_{k=k_{min}}^{k_{max}} \frac{(-1)^{k+m'-m}}{k!} \frac{\sqrt{(l+m)!(l-m)!(l+m')!(l-m')!}}{(l+m-k)!(l-m'-k)!(k-m+m')!} c^{2l+m-m'-2k} s^{2k-m+m'}\]

Definition at line 4013 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBWignerDPhase()

static REAL8 SEOBWignerDPhase ( INT4  m,
INT4  mp,
REAL8  alpha,
REAL8  gamma 
)
static

Definition at line 4016 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBRotateInterpolatehJlmReImFromSphHarmListhPlmAmpPhase()

static int SEOBRotateInterpolatehJlmReImFromSphHarmListhPlmAmpPhase ( SphHarmTimeSeries **  hJlm,
INT4  modes[][2],
UINT4  nmodes,
INT4  modes_lmax,
REAL8  deltaT,
UINT4  retLenTS,
REAL8Vector tVecPmodes,
SphHarmListCAmpPhaseSequence listhPlm,
REAL8Vector alphaJ2P,
REAL8Vector betaJ2P,
REAL8Vector gammaJ2P,
UINT4  flagSymmetrizehPlminusm 
)
static

This function computes the hJlm Re/Im timeseries (fixed sampling) from hPlm amp/phase modes and Euler angles J2P (irregular sampling).

The Wigner rotation coefficients are first computed on the irregular sampling. We assume that the hPlm and Euler angles are all given on a common time vector. P-frame modes hPlmp should have mp>0 only We will generate the modes mp<0 using the symmetry relation hPl-mp = (-1)^l hPlmp* All modes with l<=modes_lmax will be created in output, and will be 0 for values of l possibly absent from listhPlm

Parameters
hJlm< Output: hJlm time series, will contain complex values on fixed sampling
modes< Input: array of modes (l,m)
nmodes< Input: number of modes (l,m)
modes_lmax< Input: maximum value of l in modes (l,m)
deltaT< Input: time step for the hJlm timeseries
retLenTS< Input: number of samples for the hJlm timeseries
tVecPmodes< Input: irregular time vector on which the hPlm and Euler angles are given
listhPlm< Input: list of P-frame modes hPlm
alphaJ2P< Input: vector for Euler angle alpha J2P
betaJ2P< Input: vector for Euler angle beta J2P
gammaJ2P< Input: vector for Euler angle gamma J2P
flagSymmetrizehPlminusm< Input: flag indicating wether the P-frame modes m<0 are generated with the symmetry hP_l-m ~ (-1)^l hP_lm*

Definition at line 4031 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBRotatehIlmFromhJlm()

static int SEOBRotatehIlmFromhJlm ( SphHarmTimeSeries **  hIlm,
SphHarmTimeSeries hJlm,
INT4  modes_lmax,
REAL8  alphaI2J,
REAL8  betaI2J,
REAL8  gammaI2J,
REAL8  deltaT 
)
static

This function computes the hIlm Re/Im timeseries (fixed sampling) from hJlm Re/Im timeseries (same sampling).

This is a simple rotation, sample-by-sample, with constant Wigner coefficients. See the comment before SEOBWignerDAmp for explanation of conventions, and Appendix A of Babak et al, Phys. Rev. D 95, 024010, 2017 [arXiv:1607.05661] for a general discussion.

Parameters
hIlm< Output: hIlm time series, complex values on fixed sampling
hJlm< Output: hJlm time series, complex values on fixed sampling
modes_lmax< Input: maximum value of l in modes (l,m)
alphaI2J< Input: Euler angle alpha I->J
betaI2J< Input: Euler angle beta I->J
gammaI2J< Input: Euler angle gamma I->J
deltaT< Input: time step, necessary to initialize new timeseries

Definition at line 4303 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBComputehplushcrossFromhIlm()

static int SEOBComputehplushcrossFromhIlm ( REAL8TimeSeries hplusTS,
REAL8TimeSeries hcrossTS,
INT4  modes_lmax,
SphHarmTimeSeries hIlm,
REAL8  amp0,
REAL8  inc,
REAL8  phi 
)
static

This function combines the modes hIlm timeseries with the sYlm to produce the polarizations hplus, hcross.

Parameters
hplusTS< Output: time series for hplus, already created
hcrossTS< Output: time series for hplus, already created
modes_lmax< Input: maximum value of l
hIlm< Input: list with time series for each mode hIlm
amp0< Input: amplitude prefactor
inc< Input: inclination
phi< Input: phase

Definition at line 4396 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBGetNumberOfModesInModeArray()

static UINT4 SEOBGetNumberOfModesInModeArray ( LALValue *  modearray,
int  lmax 
)
static

This function gets the number of modes present in a mode array, ignoring modes l>lmax (and l<2) Note that m<=0 modes are also ignored and a warning given.

Parameters
modearray< Input: ModeArray structure
lmax< Input: maximum value of l to explore -- possible modes with l>lmax will be ignored

Definition at line 4445 of file LALSimIMRSpinPrecEOBv4P.c.

◆ SEOBGetModeNumbersFromModeArray()

static int SEOBGetModeNumbersFromModeArray ( INT4  modes[][2],
LALValue *  modearray,
int  lmax 
)
static

This function populates a dynamically allocated INT4 array to with the modes active in a ModeArray Possible modes with l>lmax are ignored (as well as l<2) Note that m<=0 modes are also ignored and a warning given.

Parameters
modes< Output: array of dimension (nmodes,2) with mode numbers (l,m)
modearray< Input: ModeArray structure
lmax< Input: maximum value of l to explore -- possible modes with l>lmax will be ignored

Definition at line 4472 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALEOBCheckNyquistFrequency()

int XLALEOBCheckNyquistFrequency ( REAL8  m1,
REAL8  m2,
REAL8  spin1[3],
REAL8  spin2[3],
UINT4  ell_max,
Approximant  approx,
REAL8  deltaT 
)

Definition at line 4503 of file LALSimIMRSpinPrecEOBv4P.c.

◆ XLALSimIMRSpinPrecEOBWaveformAll()

int XLALSimIMRSpinPrecEOBWaveformAll ( REAL8TimeSeries **  hplus,
REAL8TimeSeries **  hcross,
SphHarmTimeSeries **  hIlm,
SphHarmTimeSeries **  hJlm,
REAL8Vector **  seobdynamicsAdaSVector,
REAL8Vector **  seobdynamicsHiSVector,
REAL8Vector **  seobdynamicsAdaSHiSVector,
REAL8Vector **  tVecPmodes,
REAL8Vector **  hP22_amp,
REAL8Vector **  hP22_phase,
REAL8Vector **  hP21_amp,
REAL8Vector **  hP21_phase,
REAL8Vector **  hP33_amp,
REAL8Vector **  hP33_phase,
REAL8Vector **  hP44_amp,
REAL8Vector **  hP44_phase,
REAL8Vector **  hP55_amp,
REAL8Vector **  hP55_phase,
REAL8Vector **  alphaJ2P,
REAL8Vector **  betaJ2P,
REAL8Vector **  gammaJ2P,
REAL8Vector **  mergerParams,
const REAL8  phi,
const REAL8  INdeltaT,
const REAL8  m1SI,
const REAL8  m2SI,
const REAL8  fMin,
const REAL8  r,
const REAL8  inc,
const REAL8  chi1x,
const REAL8  chi1y,
const REAL8  chi1z,
const REAL8  chi2x,
const REAL8  chi2y,
const REAL8  chi2z,
LALValue *  modearray,
LALDict *  seobflags 
)

This function is the master function generating precessing spinning SEOBNRv4P waveforms h+ and hx.

Currently, only h2m harmonics will be generated.

Input conventions: Cartesian coordinate system: initial \(\vec{L}_N\) is in the xz plane, rotated away from the z-axis by an angle inc phiC : in radians deltaT : in SI units (s) m1SI, m2SI : in SI units (kg) fMin : in SI units (Hz) r : in SI units (m) inc : in radians INspin{1,2}: in dimensionless units of m{1,2}^2

Evolution conventions: values[0-2]: r vector in units of total mass values[3-5]: pstar vector in units of reduced mass values[6-8]: S1 vector in units of (total mass)^2 values[9-11]: S2 vector in units of (total mass)^2 values[12-13]: phases (carrier and precession (Thomas)) in rads

Note that when the initial opening angles of the spins w.r.t. the initial Newtonian angular momentum are small, the aligned-spin SEOBNRv4 dynamics is used. However, the waveforms are then generated according to the SEOBNRv4P model: for example, they include the (2,1) mode.

STEP 0) Prepare parameters, including pre-computed coefficients for EOB Hamiltonian, flux and waveform STEP 1) Solve for initial conditions STEP 2) Evolve EOB trajectory with adaptive sampling (AdaS) STEP 3) Step back and evolve EOB trajectory at high sampling rate (HiS) STEP 4) Get final J/L/spins from HiS dynamics at peak of Omega, compute constant angles EulerI2J STEP 5) Compute P-frame 22 mode amp/phase on HiS and compute NQC coefficients STEP 6) Compute P-frame amp/phase for all modes on HiS, now including NQC STEP 7) Attach RD to the P-frame waveform STEP 8) Build the joined dynamics AdaS+HiS up to attachment, joined P-modes AdaS+HiS+RDpatch STEP 9) Compute Euler angles J2P from AdaS and HiS dynamics up to attachment STEP 10) Compute Euler angles J2P extension after attachment STEP 11) Compute modes hJlm on the output time series by rotating and interpolating the modes hPlm STEP 12) Rotate waveform from J-frame to the output I-frame on timeseries-sampling (constant Wigner coeffs) STEP 13) Compute hplus, hcross from I-frame waveform on timeseries sampling STEP -1) Cleanup

Parameters
hplus< Main output: hplus GW polarization time series
hcross< Main output: hcross GW polarization time series
hIlm< Spherical modes time series for the waveform in the initial inertial frame
hJlm< Spherical modes time series for the waveform in the final-J inertial frame
seobdynamicsAdaSVector< Vector for extended dynamics values, adaptive sampling part
seobdynamicsHiSVector< Vector for extended dynamics values, high sampling part
seobdynamicsAdaSHiSVector< Vector for extended joined dynamics values
tVecPmodes< Time vector for the P-modes
hP22_amp< Vector for the hP22 mode amplitude
hP22_phase< Vector for the hP22 mode phase
hP21_amp< Vector for the hP21 mode amplitude
hP21_phase< Vector for the hP21 mode phase
hP33_amp< Vector for the hP33 mode amplitude
hP33_phase< Vector for the hP33 mode phase
hP44_amp< Vector for the hP44 mode amplitude
hP44_phase< Vector for the hP44 mode phase
hP55_amp< Vector for the hP55 mode amplitude
hP55_phase< Vector for the hP55 mode phase
alphaJ2P< Vector for the Euler angle alphaJ2P
betaJ2P< Vector for the Euler angle betaJ2P
gammaJ2P< Vector for the Euler angle gammaJ2P
mergerParams< Parameters at merger
phi< Input: phase
INdeltaT< Input: sampling time step in SI
m1SI< Input: mass of first object in SI
m2SI< Input: mass of second object in SI
fMin< Input: fMin
r< Input: luminosity distance in SI
inc< Input: inclination
chi1x< Input: spin1 x-component, dimensionless (in units of m1^2)
chi1y< Input: spin1 y-component, dimensionless (in units of m1^2)
chi1z< Input: spin1 z-component, dimensionless (in units of m1^2)
chi2x< Input: spin2 x-component, dimensionless (in units of m2^2)
chi2y< Input: spin2 y-component, dimensionless (in units of m2^2)
chi2z< Input: spin2 z-component, dimensionless (in units of m2^2)
modearray< Input: mode array for the hlm modes (m>0) to be generated in the P-frame -- has to include (2,2) mode -- modes with l larger than _SEOB_MODES_LMAX will be ignored
seobflags< Input: dictionary of SEOB flags

Definition at line 4571 of file LALSimIMRSpinPrecEOBv4P.c.

Variable Documentation

◆ v4P

struct approximant v4P = {.name = "SEOBNRv4P", .number = 401}

Definition at line 1 of file LALSimIMRSpinPrecEOBv4P.c.

◆ v4PHM

struct approximant v4PHM = {.name = "SEOBNRv4PHM", .number = 402}

Definition at line 1 of file LALSimIMRSpinPrecEOBv4P.c.