22 #include <lal/LALSimInspiral.h>
23 #include <lal/FindRoot.h>
24 #include <lal/LALConstants.h>
25 #include <lal/LALStdlib.h>
26 #include <lal/TimeSeries.h>
27 #include <lal/Units.h>
33 #define UNUSED __attribute__ ((unused))
39 tagexpnCoeffsTaylorT2 {
41 REAL8 tvaN, tva2, tva3, tva4, tva5, tva6, tva7, tvl6,
tva10, tva12;
43 REAL8 pvaN, pva2, pva3, pva4, pva5, pva6, pva7, pvl6,
pva10, pva12;
52 REAL8 f0, fn, t0, tn, v0, vn, vf, vlso, flso, phiC;
74 tagSimInspiralToffInput
112 v = cbrt(toffIn->
piM * f);
115 toff = - toffIn->
t + toffIn->
tc
128 REAL8 v, v2, v8, v10, v12;
142 v = cbrt(toffIn->
piM * f);
148 toff = - toffIn->
t + toffIn->
tc
149 + toffIn->
tN / v8 * (1.
152 + toffIn->
t12 * v12);
164 REAL8 v, v2, v3, v8, v10, v12;
178 v = cbrt(toffIn->
piM * f);
185 toff = - toffIn->
t + toffIn->
tc
186 + toffIn->
tN / v8 * (1.
190 + toffIn->
t12 * v12);
202 REAL8 v, v2, v3, v4, v8, v10, v12;
216 v = cbrt(toffIn->
piM * f);
224 toff = - toffIn->
t + toffIn->
tc
225 + toffIn->
tN / v8 * (1.
230 + toffIn->
t12 * v12);
242 REAL8 v, v2, v3, v4, v5, v8, v10, v12;
256 v = cbrt(toffIn->
piM * f);
265 toff = - toffIn->
t + toffIn->
tc
266 + toffIn->
tN / v8 * (1.
272 + toffIn->
t12 * v12);
285 REAL8 v, v2, v3, v4, v5, v6, v8, v10, v12;
299 v = cbrt(toffIn->
piM * f);
309 toff = - toffIn->
t + toffIn->
tc
310 + toffIn->
tN / v8 * (1.
315 + (toffIn->
t6 + toffIn->
tl6 * log(16.*v2)) * v6
317 + toffIn->
t12 * v12);
329 REAL8 v, v2, v3, v4, v5, v6, v7, v8, v10, v12;
343 v = cbrt(toffIn->
piM*f);
354 toff = - toffIn->
t + toffIn->
tc
355 + toffIn->
tN / v8 * (1.
360 + (toffIn->
t6 + toffIn->
tl6 * log(16.*v2)) * v6
363 + toffIn->
t12 * v12);
405 + ak->
pvaN / v5 * ( 1. +
419 REAL8 v2,v3,v5,v10,v12;
431 + ak->
pvaN / v5 * ( 1. +
446 REAL8 v2,v3,v4,v5,v10,v12;
459 + ak->
pvaN / v5 * ( 1. +
475 REAL8 v2,v3,v4,v5,v10,v12;
488 + ak->
pvaN / v5 * ( 1. +
505 REAL8 v2,v3,v4,v5,v6,v10,v12;
519 + ak->
pvaN / v5 * ( 1. +
524 + (ak->
pva6 + ak->
pvl6*log(16.*v2)) * v6
537 REAL8 v2,v3,v4,v5,v6,v7,v10,v12;
552 + ak->
pvaN / v5 * ( 1. +
557 + (ak->
pva6 + ak->
pvl6*log(16.*v2)) * v6
585 REAL8 eta, lso, chi1, chi2;
586 REAL8 oneby6 = 1./6.;
632 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
640 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
646 XLALPrintError(
"XLAL Error - %s: Invalid tidal PN order %d\nSee LALSimInspiralTidalOrder enum in LALSimInspiralWaveformFlags.h for valid tidal orders.\n",
670 XLALPrintError(
"XLAL Error - %s: PN approximant not supported for requested PN order\n", __func__);
717 XLALPrintError(
"XLAL Error - %s: PN approximant not supported for requested PN order\n", __func__);
721 XLALPrintError(
"XLAL Error - %s: Unknown PN order in switch\n", __func__);
760 const UINT4 blocklen = 1024;
761 REAL8 tC, xmin, xmax, xacc, v, phase;
763 UINT4 j, len, idxRef = 0;
765 REAL8 f, fLso, VRef = 0.;
783 lambda2, tideO,
f_min, O))
805 funcParams = (
void *) &toffIn;
806 tC = timing2(
f_min, funcParams);
825 xmin = 0.999999*
f_min;
833 funcParams = (
void *) &toffIn;
841 if ( j >= (*V)->data->length ) {
850 v = cbrt(f*toffIn.
piM);
855 (*V)->data->data[j] = v;
856 (*phi)->data->data[j] = phase;
873 XLALPrintWarning(
"XLAL Warning - %s: Waveform does not reach ISCO frequency %f (Hz)... generation stopping at frequency %f (Hz)\n",
874 __func__, fLso, v*v*v/toffIn.
piM);
877 }
while (f < fLso && toffIn.
t < -tC);
881 if (toffIn.
t >= -tC) {
882 XLALPrintInfo(
"XLAL Info - %s: PN inspiral terminated at coalesence time\n", __func__);
885 XLALPrintInfo(
"XLAL Info - %s: PN inspiral terminated at ISCO\n", __func__);
901 len = (*phi)->data->length;
904 phiRef -= (*phi)->data->data[len-1];
906 else if( fRef ==
f_min )
907 phiRef -= (*phi)->data->data[0];
916 }
while ((*V)->data->data[j] <= VRef);
917 phiRef -= (*phi)->data->data[idxRef];
919 for (j = 0; j < len; ++j)
920 (*phi)->data->data[j] += phiRef;
922 return (
int)(*V)->data->length;
961 if( fRef != 0. && fRef <
f_min )
963 XLALPrintError(
"XLAL Error - %s: fRef = %f must be > fStart = %f\n",
964 __func__, fRef,
f_min);
969 XLALPrintError(
"XLAL Error - %s: fRef = %f must be < Schwar. ISCO=%f\n",
970 __func__, fRef, fISCO);
980 m1, m2,
f_min, fRef, lambda1, lambda2, tideO, phaseO);
984 v0, m1, m2,
r,
i, amplitudeO);
1023 if( fRef != 0. && fRef <
f_min )
1025 XLALPrintError(
"XLAL Error - %s: fRef = %f must be > fStart = %f\n",
1026 __func__, fRef,
f_min);
1031 XLALPrintError(
"XLAL Error - %s: fRef = %f must be < Schwar. ISCO=%f\n",
1032 __func__, fRef, fISCO);
1040 m1, m2,
f_min, fRef, lambda1, lambda2, tideO, phaseO);
1045 for(
l=2;
l<=lmax;
l++){
1046 for(
m=-
l;
m<=
l;
m++){
1048 m1, m2,
r, amplitudeO,
l,
m);
1093 if( fRef != 0. && fRef <
f_min )
1095 XLALPrintError(
"XLAL Error - %s: fRef = %f must be > fStart = %f\n",
1096 __func__, fRef,
f_min);
1101 XLALPrintError(
"XLAL Error - %s: fRef = %f must be < Schwar. ISCO=%f\n",
1102 __func__, fRef, fISCO);
1110 m1, m2,
f_min, fRef, lambda1, lambda2, tideO, phaseO);
1114 m1, m2,
r, amplitudeO,
l,
m);
1148 deltaT, m1, m2,
f_min, fRef,
r,
i, lambda1, lambda2, tideO, O, O);
1180 deltaT, m1, m2,
f_min, fRef,
r,
i, lambda1, lambda2, tideO, 0, O);
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_12PNTidalCoeff(REAL8 eta, REAL8 chi, REAL8 lambda)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_12PNTidalCoeff(REAL8 eta, REAL8 chi, REAL8 lambda)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_0PNCoeff(REAL8 eta)
Computes the PN Coefficients for using in the TaylorT2 phasing equation.
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_10PNTidalCoeff(REAL8 chi, REAL8 lambda)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_0PNCoeff(REAL8 totalmass, REAL8 eta)
Computes the PN Coefficients for using in the TaylorT2 timing equation.
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_10PNTidalCoeff(REAL8 chi, REAL8 lambda)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Phasing_7PNCoeff(REAL8 eta)
static REAL8 XLALSimInspiralPhasing2_5PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_5PN(REAL8 f, void *params)
static REAL8 XLALSimInspiralPhasing2_2PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_6PN(REAL8 f, void *params)
REAL8() SimInspiralTiming2(REAL8 td, void *ak)
REAL8() SimInspiralPhasing2(REAL8 td, expnCoeffsTaylorT2 *ak)
static int XLALSimInspiralTaylorT2Setup(expnCoeffsTaylorT2 *ak, expnFuncTaylorT2 *f, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, REAL8 f_min, int O)
static REAL8 XLALSimInspiralPhasing2_7PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralPhasing2_4PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_3PN(REAL8 f, void *params)
static REAL8 XLALSimInspiralPhasing2_3PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_4PN(REAL8 f, void *params)
static REAL8 XLALSimInspiralTiming2_2PN(REAL8 f, void *params)
static REAL8 XLALSimInspiralPhasing2_0PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_7PN(REAL8 f, void *params)
static REAL8 XLALSimInspiralPhasing2_6PN(REAL8 v, expnCoeffsTaylorT2 *ak)
static REAL8 XLALSimInspiralTiming2_0PN(REAL8 f, void *params)
REAL8 XLALDBisectionFindRoot(REAL8(*y)(REAL8, void *), REAL8 xmin, REAL8 xmax, REAL8 xacc, void *params)
int XLALSimInspiralPNPolarizationWaveforms(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 r, REAL8 i, int ampO)
Given time series for a binary's orbital dynamical variables, construct the waveform polarizations h+...
LALSimInspiralTidalOrder
Enumeration of allowed PN orders of tidal effects.
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_5PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_6PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_ALL
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_0PN
COMPLEX16TimeSeries * XLALCreateSimInspiralPNModeCOMPLEX16TimeSeriesLALConvention(REAL8TimeSeries *v, REAL8TimeSeries *phi, REAL8 m1, REAL8 m2, REAL8 r, int O, int l, int m)
Computes h(l,m) mode timeseries of spherical harmonic decomposition of the post-Newtonian inspiral wa...
int XLALSimInspiralTaylorT2PNEvolveOrbit(REAL8TimeSeries **V, REAL8TimeSeries **phi, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int O)
Computes a post-Newtonian orbit using the Taylor T2 method.
int XLALSimInspiralTaylorT2PN(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int O)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorT2PNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, UNUSED REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorT2PNRestricted(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int O)
Driver routine to compute the restricted post-Newtonian inspiral waveform.
COMPLEX16TimeSeries * XLALSimInspiralTaylorT2PNMode(UNUSED REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int l, int m)
Driver routine to compute the -2 spin-weighted spherical harmonic mode using TaylorT2 phasing.
SphHarmTimeSeries * XLALSimInspiralTaylorT2PNModes(UNUSED REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int lmax)
Driver routine to compute the -2 spin-weighted spherical harmonic modes using TaylorT2 phasing.
SphHarmTimeSeries * XLALSphHarmTimeSeriesAddMode(SphHarmTimeSeries *appended, const COMPLEX16TimeSeries *inmode, UINT4 l, INT4 m)
Prepend a node to a linked list of SphHarmTimeSeries, or create a new head.
REAL8TimeSeries * XLALResizeREAL8TimeSeries(REAL8TimeSeries *series, int first, size_t length)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
const LALUnit lalDimensionlessUnit
#define XLAL_ERROR_REAL8(...)
#define XLAL_ERROR_NULL(...)
int int int XLALPrintInfo(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_TRY(statement, errnum)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_IS_REAL8_FAIL_NAN(val)
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
Structure to carry a collection of spherical harmonic modes in COMPLEX16 time series.
SimInspiralPhasing2 * phasing2
SimInspiralTiming2 * timing2