77#include <lal/LALInspiral.h>
78#include <lal/LALStdlib.h>
80#include <lal/SeqFactories.h>
83#define UNUSED __attribute__ ((unused))
201 INT4 number_of_diff_equations = 3;
205 REAL8 orbital_element_p,orbital_element_e_squared;
206 REAL8 orbital_element_e;
207 REAL8 twoPhim2Beta = 0;
208 REAL8 threePhim2Beta = 0;
211 REAL8 rbyM=1e6, rbyMFlso=6.;
212 REAL8 sin2Beta,cos2Beta,iota,onepCosSqI, SinSqI, cosI, e0,
f_min, beta, p0;
216 REAL8 amp,
m,
dt, t, h1, h2, f, fHigh, piM, fu;
217 REAL8Vector dummy, values, dvalues, valuesNew, yt, dym, dyt;
233 REAL8 apFac = 0, acFac = 0;
254 dummy.
length = number_of_diff_equations * 6;
260 dvalues.
data = &dummy.
data[number_of_diff_equations];
261 valuesNew.
data = &dummy.
data[2*number_of_diff_equations];
262 yt.
data = &dummy.
data[3*number_of_diff_equations];
263 dym.
data = &dummy.
data[4*number_of_diff_equations];
264 dyt.
data = &dummy.
data[5*number_of_diff_equations];
298 funcParams = (
void *) &in3;
325 cos2Beta = cos(twoBeta);
326 sin2Beta = sin(twoBeta);
328 onepCosSqI = 1. + cos(iota) * cos(iota);
329 SinSqI = sin(iota) * sin(iota);
334 *(values.
data) = orbital_element_p = p0;
335 *(values.
data+1) = phase =
params->startPhase;
336 *(values.
data+2) = orbital_element_e = e0;
345 in4.
n = number_of_diff_equations;
367 else if (signalvec1) {
368 count =
params->nStartPad;
376 fHigh = (fu < ak.
flso) ? fu : ak.
flso;
380 f = 1./(pow(orbital_element_p, 3./2.))/piM;
388 if ((signalvec1 && (
UINT4)count >= signalvec1->
length))
398 twoPhim2Beta = 2.* phase - twoBeta;
399 phim2Beta = phase - twoBeta;
400 threePhim2Beta = 3.* phase - twoBeta;
401 orbital_element_e_squared = orbital_element_e * orbital_element_e;
402 amp =
params->signalAmplitude / orbital_element_p;
407 h1 = amp * ( ( 2. * cos(twoPhim2Beta) + 2.5 * orbital_element_e * cos(phim2Beta)
408 + 0.5 * orbital_element_e * cos(threePhim2Beta) + orbital_element_e_squared * cos2Beta) * onepCosSqI +
409 + ( orbital_element_e * cos(orbital_element_p) + orbital_element_e_squared) * SinSqI);
410 if ((f >=
params->fLower) && (done == 0))
414 params->alpha1 = orbital_element_e;
419 *(signalvec1->
data + count) = (
REAL4) h1;
424 h2 = amp * ( ( 4. * sin(twoPhim2Beta) + 5 * orbital_element_e * sin(phim2Beta)
425 + orbital_element_e * sin(threePhim2Beta) - 2. * orbital_element_e_squared * sin2Beta) * cosI);
428 *(signalvec2->
data + count) = (
REAL4) h2;
457 *(values.
data) = orbital_element_p = *(valuesNew.
data);
458 *(values.
data+1) = phase = *(valuesNew.
data+1);
459 *(values.
data+2) = orbital_element_e = *(valuesNew.
data+2);
461 t = (++count-
params->nStartPad) *
dt;
463 f = 1./(pow(orbital_element_p, 3./2.))/piM;
466 rbyM = orbital_element_p/(1.+orbital_element_e * cos(phase));
470 }
while ( (t < ak.
tn) && (rbyM>rbyMFlso) && (f<fHigh));
476 params->vFinal = orbital_element_p;
501 double M, eta,
mu,
c1, e0, e2, UNUSED p0, p2, p3, p4, phi;
508 phi = values->
data[1];
509 e0 = values->
data[2];
510 e2 = values->
data[2] * values->
data[2];
511 p0 = values->
data[0];
512 p2 = values->
data[0] * values->
data[0];
513 p3 = p2 * values->
data[0];
514 p4 = p3 * values->
data[0];
516 c1 = pow(1. - e2, 1.5);
525 dvalues->
data[1] = 1./(
M * sqrt (p3)) * ( 1. + e0 * cos(phi) ) * ( 1. + e0 * cos(phi) );
528 dvalues->
data[0] = (-64./5.) *
mu /
M /
M *
c1 / p3 * (1 + 7./8. * e2);
531 dvalues->
data[2] = (-304./15.) *
mu /
M /
M / p4 *
c1 * e0 * (1. + 121./304. * e2);
void XLALRungeKutta4Free(rk4GSLIntegrator *integrator)
void LALInspiralSetup(LALStatus *status, expnCoeffs *ak, InspiralTemplate *params)
void LALInspiralChooseModel(LALStatus *status, expnFunc *func, expnCoeffs *ak, InspiralTemplate *params)
void LALRungeKutta4(LALStatus *, REAL8Vector *, rk4GSLIntegrator *, void *)
rk4GSLIntegrator * XLALRungeKutta4Init(INT4 n, rk4In *input)
static void LALInspiralEccentricityEngine(LALStatus *status, REAL4Vector *signalvec1, REAL4Vector *signalvec2, REAL4Vector *a, REAL4Vector *ff, REAL8Vector *phi, INT4 *countback, InspiralTemplate *params)
void LALInspiralEccentricityDerivatives(REAL8Vector *values, REAL8Vector *dvalues, void *params)
void LALInspiralEccentricity(LALStatus *status, REAL4Vector *signalvec, InspiralTemplate *params)
void LALInspiralEccentricityTemplates(LALStatus *status, REAL4Vector *signalvec1, REAL4Vector *signalvec2, InspiralTemplate *params)
#define ABORT(statusptr, code, mesg)
#define CHECKSTATUSPTR(statusptr)
#define ATTATCHSTATUSPTR(statusptr)
#define ASSERT(assertion, statusptr, code, mesg)
#define DETATCHSTATUSPTR(statusptr)
#define INITSTATUS(statusptr)
#define RETURN(statusptr)
#define LALINSPIRALH_EVECTOR
Attempting to write beyond the end of vector.
#define LALINSPIRALH_EMEM
Memory allocation error.
#define LALINSPIRALH_ENULL
Arguments contained an unexpected null pointer.
#define LALINSPIRALH_ESIZE
Invalid input range.
The inspiral waveform parameter structure containing information about the waveform to be generated.
This structure contains various post-Newtonian and P-approximant expansion coefficients; the meanings...
Structure to hold the pointers to the generic functions defined above.
Structure containing steps and controls for the GSL Runge-Kutta solver.
Structure used as an input to Runge-Kutta solver.