LALSimulation  5.4.0.1-fe68b98
LALSimIMRSpinPrecEOB.c File Reference

Prototypes

static UNUSED int XLALEOBSpinPrecStopConditionBasedOnPR (double UNUSED t, const double values[], double dvalues[], void UNUSED *funcParams)
 Stopping conditions for dynamics integration for SEOBNRv3. 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 SEOBNRv1/2 orbital evolution – stop when reaching a minimum radius 0.3M out of the EOB horizon (Eqs. More...
 
SEOBHCoeffConstants XLALEOBSpinPrecCalcSEOBHCoeffConstants (REAL8 eta)
 Optimized routine for calculating coefficients for the v3 Hamiltonian. More...
 
int XLALSimIMRSpinEOBWaveform (REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI_in, const REAL8 m2SI_in, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 INspin1[], const REAL8 INspin2[], const UINT4 PrecEOBversion)
 Standard interface for SEOBNRv3 waveform generator: calls XLALSimIMRSpinEOBWaveformAll. More...
 
int XLALSimIMRSpinEOBWaveformAll (REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8Vector **dynHi, SphHarmTimeSeries **hlmPTSoutput, SphHarmTimeSeries **hlmPTSHiOutput, SphHarmTimeSeries **hIMRlmJTSHiOutput, SphHarmTimeSeries **hIMRoutput, REAL8Vector **AttachPars, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 INspin1x, const REAL8 INspin1y, const REAL8 INspin1z, const REAL8 INspin2x, const REAL8 INspin2y, const REAL8 INspin2z, const UINT4 PrecEOBversion)
 This function generates precessing spinning SEOBNRv3 waveforms h+ and hx. More...
 

Go to the source code of this file.

Macros

#define _LALSIMIMRSPINPRECEOB_C
 
#define debugOutput   0
 
#define FREE_EVERYTHING
 
#define FREE_SPHHARM
 
#define PRINT_PARAMS
 

Macro Definition Documentation

◆ _LALSIMIMRSPINPRECEOB_C

#define _LALSIMIMRSPINPRECEOB_C

Definition at line 21 of file LALSimIMRSpinPrecEOB.c.

◆ debugOutput

#define debugOutput   0

Definition at line 73 of file LALSimIMRSpinPrecEOB.c.

◆ FREE_EVERYTHING

#define FREE_EVERYTHING

Definition at line 81 of file LALSimIMRSpinPrecEOB.c.

◆ FREE_SPHHARM

#define FREE_SPHHARM
Value:
XLALDestroyREAL8Vector( tlistHi ); \
XLALDestroyREAL8Vector( timeJFull ); \
XLALDestroyREAL8Vector( timeIFull ); \
XLALDestroyREAL8Vector( tlistRDPatch ); \
XLALDestroyREAL8Vector( tlistRDPatchHi );
void XLALDestroyREAL8Vector(REAL8Vector *vector)

Definition at line 158 of file LALSimIMRSpinPrecEOB.c.

◆ PRINT_PARAMS

#define PRINT_PARAMS
Value:
do { \
XLALPrintError("--approximant SEOBNRv3 --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, INspin1x, INspin1y, INspin1z, INspin2x, INspin2y, INspin2z, inc, r/(1e6 * LAL_PC_SI), phiC, 1./deltaT);\
} while(0);
static const INT4 r
double deltaT
Definition: unicorn.c:24

Definition at line 166 of file LALSimIMRSpinPrecEOB.c.

Function Documentation

◆ XLALEOBSpinPrecStopConditionBasedOnPR()

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

Stopping conditions for dynamics integration for SEOBNRv3.

Definition at line 175 of file LALSimIMRSpinPrecEOB.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 371 of file LALSimIMRSpinPrecEOB.c.

◆ XLALSpinPrecAlignedHiSRStopCondition()

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

Stopping condition for the high resolution SEOBNRv1/2 orbital evolution – stop when reaching a minimum radius 0.3M out of the EOB horizon (Eqs.

9b, 37) or when getting nan in any of the four ODE equations At each test, if conditions met, return 1 to stop evolution; if not, return GSL_SUCCESS to continue evolution.

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

Definition at line 403 of file LALSimIMRSpinPrecEOB.c.

◆ XLALEOBSpinPrecCalcSEOBHCoeffConstants()

SEOBHCoeffConstants XLALEOBSpinPrecCalcSEOBHCoeffConstants ( REAL8  eta)

Optimized routine for calculating coefficients for the v3 Hamiltonian.

Definition at line 425 of file LALSimIMRSpinPrecEOB.c.

◆ XLALSimIMRSpinEOBWaveform()

int XLALSimIMRSpinEOBWaveform ( REAL8TimeSeries **  hplus,
REAL8TimeSeries **  hcross,
const REAL8  phiC,
const REAL8  deltaT,
const REAL8  m1SI_in,
const REAL8  m2SI_in,
const REAL8  fMin,
const REAL8  r,
const REAL8  inc,
const REAL8  INspin1[],
const REAL8  INspin2[],
const UINT4  PrecEOBversion 
)

Standard interface for SEOBNRv3 waveform generator: calls XLALSimIMRSpinEOBWaveformAll.

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)

Stores harmonics in J-frame with RD, for the end of the signal (high samling part)

stores harmonics of the full waveform in I-frame

Parameters
hplus< OUTPUT, +-polarization waveform
hcross< OUTPUT, x-polarization waveform
phiC< coalescence orbital phase (rad)
deltaT< sampling time step
m1SI_in< mass-1 in SI unit (kg)
m2SI_in< 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

Definition at line 460 of file LALSimIMRSpinPrecEOB.c.

◆ XLALSimIMRSpinEOBWaveformAll()

int XLALSimIMRSpinEOBWaveformAll ( REAL8TimeSeries **  hplus,
REAL8TimeSeries **  hcross,
REAL8Vector **  dynHi,
SphHarmTimeSeries **  hlmPTSoutput,
SphHarmTimeSeries **  hlmPTSHiOutput,
SphHarmTimeSeries **  hIMRlmJTSHiOutput,
SphHarmTimeSeries **  hIMRoutput,
REAL8Vector **  AttachPars,
const REAL8  phiC,
const REAL8  deltaT,
const REAL8  m1SI,
const REAL8  m2SI,
const REAL8  fMin,
const REAL8  r,
const REAL8  inc,
const REAL8  INspin1x,
const REAL8  INspin1y,
const REAL8  INspin1z,
const REAL8  INspin2x,
const REAL8  INspin2y,
const REAL8  INspin2z,
const UINT4  PrecEOBversion 
)

This function generates precessing spinning SEOBNRv3 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 SEOBNRv2 dynamics is used. However, the waveforms are then generated according the the SEOBNRv3 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 both at low and high sampling rate STEP 3) Compute Euler angles to go from initial inertial frame to precessing frame STEP 4) Locate merger point and at that time calculate J, chi and kappa, and construct final J frame STEP 5) Generate quasi-nonprecessing waveforms in precessing frame STEP 6) Rotate quasi-nonprecessing waveforms from precessing to final-J-frame STEP 7) Attach ringdown to final-J-frame modes STEP 8) Rotate modes from final final-J-frame to initial inertial frame STEP 9) Compute h+, hx

NOTE: if the spin magnitude is less than 1.e-5 we put them explicitely to zero!

If the misalignment angle of spins with orbital angular momentum is less than <1.e-4 we treat them as aligned for evolution of the orbital dynamics

OPTV3: Define the SpinEOBH coefficients constants of Hamiltonian spin derivative calculation.

  • An alternative is to project the spins onto L = rXp *‍/

If spins are aligned/antialigned with LNhat to within 1e-4 rads, then use SEOBNRv2 dynamics

Euler angles to go from precessing to J-frame. Note that we follow in this code passive rotation Z-Y-Z and notations of Arun et al. arXiv 0810.5336, however the Wiegner D-matrix and mode rotation coded up in LAL for active rotation We make the angle transformation here in order to match two conventions

We search for maximum of the frame-invariant amplitude and set its time as time of coalescence (or reference time)

NOTE we are making again transformation between notations of Arun et. al adopted here and Wiegner matrix (active rotation) coded up in LAL

NOTE that we have use now different convention: the phi_ref (or one might call it phi_c) is now the azimuthal phase of the observer in the source (I-)frame. Together with inclination angle it defines the position of the observer in the (I-)frame associated with the source at t=0

Parameters
hplus< output: hplus GW polarization
hcross< output: hcross GW polarization
dynHi< Here we store and return the seob dynamics for high sampling (end of inspiral)
hlmPTSoutput< Here we store and return the PWave (high sampling)
hlmPTSHiOutput< Here we store and return the JWave (high sampling)
hIMRlmJTSHiOutput< Here we store and return the JWaveIMR (high sampling)
hIMRoutput< Here we store and return the IWave (full)
AttachPars< Parameters of RD attachment:
phiC< intitial orbital phase
deltaT< sampling time step
m1SI< mass of first object in SI
m2SI< mass of second object in SI
fMin< fMin
r< luminosity distance in SI
inc< inclination
INspin1x< spin1 x-component
INspin1y< spin1 y-component
INspin1z< spin1 z-component
INspin2x< spin2 x-component
INspin2y< spin2 y-component
INspin2z< spin2 z-component
PrecEOBversion< Precessing EOB waveform generator model

Definition at line 583 of file LALSimIMRSpinPrecEOB.c.