22 #include <gsl/gsl_const.h>
23 #include <gsl/gsl_errno.h>
24 #include <gsl/gsl_math.h>
25 #include <gsl/gsl_odeiv.h>
27 #include <lal/LALSimInspiral.h>
28 #include <lal/FindRoot.h>
29 #include <lal/LALConstants.h>
30 #include <lal/LALStdlib.h>
31 #include <lal/TimeSeries.h>
32 #include <lal/Units.h>
39 #define UNUSED __attribute__ ((unused))
116 return sqrt(
zeta * (1.0
127 return sqrt(
zeta * (1.0
140 return sqrt(
zeta * (1.0
164 return ak->
phN * zeta3_2;
174 return ak->
phN * zeta3_2 * (1.0
186 return ak->
phN * zeta3_2 * (1.0
200 return ak->
phN * zeta3_2 * (1.0
224 return ak->
zN * zeta5;
234 return ak->
zN * zeta5 * (1.0
246 return ak->
zN * zeta5 * (1.0
248 + ak->
z3 *
zeta * zeta1_2);
260 return ak->
zN * zeta5 * (1.0
275 return ak->
zN * zeta5 * (1.0
279 + ak->
z5 * zeta2 * zeta1_2);
291 REAL8 zeta5 = zeta2*zeta3;
292 return ak->
zN * zeta5 * (1.0
296 + ak->
z5 * zeta2 * zeta1_2
297 + (ak->
z6 + ak->
z6l * log(16.0 *
zeta)) * zeta3);
309 REAL8 zeta5 = zeta2*zeta3;
310 return ak->
zN * zeta5 * (1.0
314 + ak->
z5 * zeta2 * zeta1_2
315 + (ak->
z6 + ak->
z6l * log(16.0 *
zeta)) * zeta3
316 + ak->
z7 * zeta3 * zeta1_2);
353 ydot[0] =
p->dzeta(
y[0],&
p->ak);
354 ydot[1] =
p->dphase(
y[0],&
p->ak);
408 XLALPrintError(
"XLAL Error - %s: PN approximant not supported for PN order %d\n", __func__,O);
443 XLALPrintError(
"XLAL Error - %s: PN approximant not supported for PN order %d\n", __func__,O);
447 XLALPrintError(
"XLAL Error - %s: Unknown PN order in switch\n", __func__);
485 const UINT4 blocklen = 1024;
486 const REAL8 visco = 1./sqrt(6.);
502 const gsl_odeiv_step_type *T = gsl_odeiv_step_rk4;
504 gsl_odeiv_system sys;
522 REAL8 xmax = 10.0 * v_min*v_min;
524 REAL8 xmin = 0.1 * v_min*v_min;
527 y[1] = (*phi)->data->data[0] = 0.;
528 (*V)->data->data[0] = expnfunc.
vOfZeta(
y[0], &ak);
531 s = gsl_odeiv_step_alloc(T, 2);
535 gsl_odeiv_step_apply(
s, j*
deltaT,
deltaT,
y, yerr, NULL, NULL, &sys);
537 if ( tmpv > visco ) {
538 XLALPrintInfo(
"XLAL Info - %s: PN inspiral terminated at ISCO\n", __func__);
541 if ( j >= (*V)->data->length ) {
547 (*V)->data->data[j] = tmpv;
548 (*phi)->data->data[j] =
y[1];
550 gsl_odeiv_step_free(
s);
563 phic -= (*phi)->data->data[j-1];
564 for (j = 0; j < (*phi)->data->length; ++j)
565 (*phi)->data->data[j] += phic;
567 return (
int)(*V)->data->length;
631 return XLALSimInspiralTaylorEtPNGenerator(hplus, hcross, phic, 1.0,
deltaT, m1, m2,
f_min,
r,
i, O, O);
658 return XLALSimInspiralTaylorEtPNGenerator(hplus, hcross, phic, 1.0,
deltaT, m1, m2,
f_min,
r,
i, 0, O);
665 #include <lal/PrintFTSeries.h>
666 #include <lal/PrintFTSeries.h>
680 XLALSimInspiralTaylorEtPN(&hplus, &hcross, &tc, phic,
deltaT, m1, m2,
f_min,
r,
i, O);
void LALCheckMemoryLeaks(void)
static REAL8 UNUSED z4(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED z6(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED z7(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED z5(REAL8 UNUSED f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED z3(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED XLALSimInspiralTaylorEtVOfZeta_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtVOfZeta_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtPhasing_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtPhasing_0PNCoeff(REAL8 m)
Computes the PN Coefficients for using in the TaylorEt dPhase/dt equation.
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_0PNCoeff(REAL8 m, REAL8 eta)
Computes the PN Coefficients for using in the TaylorEt dZeta/dt equation.
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtPhasing_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtZeta_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtPhasing_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorEtVOfZeta_2PNCoeff(REAL8 eta)
Computes the PN Coefficients for using in the TaylorEt v(zeta) equation, which is the square root of ...
static REAL8 XLALSimInspiralTaylorEtPhasing_2PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_3PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtPhasing_0PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
REAL8() SimInspiralTaylorEtdZeta(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_4PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtVOfZeta_2PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
REAL8() SimInspiralTaylorEtVOfZeta(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtPhasing_6PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_0PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtVOfZeta_6PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtPhasing_4PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static int XLALSimInspiralTaylorEtPNEvolveOrbitIntegrand(double UNUSED t, const double y[], double ydot[], void *params)
static REAL8 XLALSimInspiralTaylorEtPhasingWrapper(REAL8 zeta, void *params)
static REAL8 XLALSimInspiralTaylorEtZeta_2PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_7PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static int XLALSimInspiralTaylorEtSetup(expnCoeffsTaylorEt *ak, expnFuncTaylorEt *f, REAL8 m1, REAL8 m2, int O)
REAL8() SimInspiralTaylorEtdPhase(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_5PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtZeta_6PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtVOfZeta_4PN(REAL8 zeta, expnCoeffsTaylorEt *ak)
static REAL8 XLALSimInspiralTaylorEtVOfZeta_0PN(REAL8 zeta, expnCoeffsTaylorEt UNUSED *ak)
Module containing the energy and flux functions for waveform generation.
int main(int argc, char *argv[])
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+...
int XLALSimInspiralTaylorEtPNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phic, REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 r, REAL8 i, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorEtPNRestricted(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phic, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 r, REAL8 i, int O)
Driver routine to compute the restricted post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorEtPNEvolveOrbit(REAL8TimeSeries **V, REAL8TimeSeries **phi, REAL8 phic, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, int O)
Evolves a post-Newtonian orbit using the Taylor Et method.
int XLALSimInspiralTaylorEtPN(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phic, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 r, REAL8 i, int O)
Driver routine to compute the post-Newtonian inspiral waveform.
void LALDPrintTimeSeries(REAL8TimeSeries *series, const CHAR *filename)
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 XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
const LALUnit lalDimensionlessUnit
int int int XLALPrintInfo(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
REAL8(* dphase)(REAL8 zeta, expnCoeffsTaylorEt *ak)
XLALSimInspiralTaylorEtPNEvolveOrbitParams * eoparams
SimInspiralTaylorEtdZeta * dzeta
SimInspiralTaylorEtdPhase * dphase
SimInspiralTaylorEtVOfZeta * vOfZeta