Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALInspiral 5.0.3.1-ea7c608
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
LALInspiralWave1.c
Go to the documentation of this file.
1/*
2* Copyright (C) 2007 Stas Babak, David Churches, Alexander Dietz, B.S. Sathyaprakash, Craig Robinson , Thomas Cokelaer
3*
4* This program is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License as published by
6* the Free Software Foundation; either version 2 of the License, or
7* (at your option) any later version.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with with program; see the file COPYING. If not, write to the
16* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17* MA 02110-1301 USA
18*/
19
20/**
21 * \author Sathyaprakash, B. S.
22 * \file
23 * \ingroup LALInspiral_h
24 *
25 * \brief The code \c LALInspiralWave1() generates an time-domain inspiral waveform corresponding to the
26 * \c Approximant #TaylorT1 and #PadeT1 as outlined in the documentation for the function \c LALInspiralWave().
27 *
28 * ### Prototypes ###
29 *
30 * <tt>LALInspiralWave1()</tt>
31 * <ul>
32 * <li> \c signalvec: Output containing the inspiral waveform.</li>
33 * <li> \c params: Input containing binary chirp parameters.</li>
34 * </ul>
35 *
36 * <tt>XLALInspiralWave1Templates()</tt>
37 * <ul>
38 * <li> \c signalvec1: Output containing the 0-phase inspiral waveform.</li>
39 * <li> \c signalvec2: Output containing the \f$\pi/2\f$-phase inspiral waveform.</li>
40 * <li> \c params: Input containing binary chirp parameters.</li>
41 * </ul>
42 *
43 * ### Description ###
44 *
45 * LALInspiralWave1() is called if the user has specified the
46 * enum \c Approximant to be
47 * either #TaylorT1 or #PadeT1.
48 * XLALInspiralWave1Templates() is exactly the same as LALInspiralWave1(), except that
49 * it generates two templates one for which the starting phase is
50 * <tt>params.startPhase</tt> and the other for which the phase is
51 * <tt>params.startPhase + \f$\pi/2\f$</tt>.
52 *
53 * ### Algorithm ###
54 *
55 * This code uses a fourth-order Runge-Kutta algorithm to solve the ODEs
56 * in \eqref{eq_ode2}.
57 *
58 * ### Uses ###
59 *
60 * \code
61 * LALInspiralSetup()
62 * LALInspiralChooseModel()
63 * LALInspiralVelocity()
64 * LALInspiralPhasing1()
65 * LALInspiralDerivatives()
66 * LALRungeKutta4()
67 * \endcode
68 *
69 * ### Notes ###
70 *
71 */
72
73/*
74 Interface routine needed to generate time-domain T- or a P-approximant
75 waveforms by solving the ODEs using a 4th order Runge-Kutta; April 5, 00.
76*/
77#include <math.h>
78#include <lal/LALInspiral.h>
79#include <lal/LALStdlib.h>
80#include <lal/Units.h>
81#include <lal/SeqFactories.h>
82
83static int
85 REAL4Vector *output1,
86 REAL4Vector *output2,
87 REAL4Vector *h,
89 REAL4Vector *ff,
90 REAL8Vector *phi,
92 InspiralInit *paramsInit
93 );
94
95int
97 REAL4Vector *output,
99 )
100{
101 INT4 count;
102 InspiralInit paramsInit;
103
104 if (output == NULL)
106 if (output->data == NULL)
108 if (params == NULL)
110 if (params->nStartPad < 0)
112 if (params->fLower <= 0)
114 if (params->tSampling <= 0)
116
119 if (XLALInspiralSetup(&(paramsInit.ak), params))
121 if (XLALInspiralChooseModel(&(paramsInit.func), &(paramsInit.ak), params))
123
124 if (params->totalMass <= 0.)
126 if (params->eta < 0.)
128
129 memset( output->data, 0, output->length * sizeof(REAL4) );
130
131 /*Call the engine function*/
132 count = XLALInspiralWave1Engine(output, NULL, NULL, NULL, NULL, NULL, params, &paramsInit);
133 if (count < 0)
135
136 return XLAL_SUCCESS;
137}
138
139
140
141/*
142 Interface routine needed to generate time-domain T- or a P-approximant
143 waveforms by solving the ODEs using a 4th order Runge-Kutta; April 5, 00.
144*/
145
146int
148 REAL4Vector *output1,
149 REAL4Vector *output2,
151 )
152{
153 INT4 count;
154
155 InspiralInit paramsInit;
156
157 if (output1 == NULL)
159 if (output2 == NULL)
161 if (output1->data == NULL)
163 if (output2->data == NULL)
165 if (params == NULL)
167 if (params->nStartPad < 0)
169 if (params->fLower <= 0)
171 if (params->tSampling <= 0)
173
176 if (XLALInspiralSetup(&(paramsInit.ak), params))
178 if (XLALInspiralChooseModel(&(paramsInit.func), &(paramsInit.ak), params))
180
181 if (params->totalMass <= 0.)
183 if (params->eta < 0.)
185
186 /* Initialise the waveforms to zero */
187 memset(output1->data, 0, output1->length * sizeof(REAL4));
188 memset(output2->data, 0, output2->length * sizeof(REAL4));
189
190 /* Call the engine function */
191 count = XLALInspiralWave1Engine(output1, output2, NULL, NULL, NULL, NULL, params, &paramsInit);
192 if (count < 0)
194
195 return XLAL_SUCCESS;
196}
197
198/*
199 Interface routine needed to generate time-domain T- or a P-approximant
200 waveforms for injection packages T.Cokelaer sept 2003
201*/
202
203int
205 CoherentGW *waveform,
207 PPNParamStruc *ppnParams
208 )
209{
210 INT4 count, i;
211 REAL8 p, phiC;
212
213 REAL4Vector *a = NULL; /* pointers to generated amplitude data */
214 REAL4Vector *h = NULL; /* pointers to generated polarizations */
215 REAL4Vector *ff = NULL; /* pointers to generated frequency data */
216 REAL8Vector *phi = NULL; /* pointer to generated phase data */
217
218 CHAR message[256];
219
220 InspiralInit paramsInit;
221
222
223 /* Make sure parameter and waveform structures exist. */
224 if (params == NULL)
226 if (waveform == NULL)
228 if (waveform->h != NULL)
230 if (waveform->a != NULL)
232 if (waveform->f != NULL)
234 if (waveform->phi != NULL)
236 if (waveform->shift != NULL)
238
239 params->ampOrder = (LALPNOrder) 0;
240 sprintf(message, "WARNING: Amp Order has been reset to %d", params->ampOrder);
241 XLALPrintInfo("%s", message);
242 /* Compute some parameters*/
243 if (XLALInspiralInit(params, &paramsInit))
245
246 if (paramsInit.nbins == 0)
247 {
248 /* FIXME: is this the correct thing to return? */
249 return XLAL_SUCCESS;
250 }
251
252 /* Now we can allocate memory and vector for coherentGW structure*/
253 ff = XLALCreateREAL4Vector(paramsInit.nbins);
254 if (ff == NULL)
256 a = XLALCreateREAL4Vector(2*paramsInit.nbins);
257 if (a == NULL)
259 phi = XLALCreateREAL8Vector(paramsInit.nbins);
260 if (phi == NULL)
262
263 /* By default the waveform is empty */
264 memset(ff->data, 0, paramsInit.nbins * sizeof(REAL4));
265 memset(a->data, 0, 2 * paramsInit.nbins * sizeof(REAL4));
266 memset(phi->data, 0, paramsInit.nbins * sizeof(REAL8));
267
268 if( params->ampOrder )
269 {
270 h = XLALCreateREAL4Vector(2*paramsInit.nbins);
271 if (h == NULL)
273 memset(h->data, 0, h->length * sizeof(REAL4));
274 }
275
276 /* Call the engine function */
277 count = XLALInspiralWave1Engine(NULL, NULL, h, a, ff,
278 phi, params, &paramsInit);
279 if (count < 0)
280 {
284 if( h )
285 {
287 }
289 }
290
291 p = phi->data[count-1];
292
293 params->fFinal = ff->data[count-1];
294 sprintf(message, "cycles = %f", fabs(p)/(double)LAL_TWOPI);
295 XLALPrintInfo("%s", message);
296
297 if ( (INT4)(p/LAL_TWOPI) < 2 ){
298 sprintf(message, "The waveform has only %f cycles; we don't keep waveform with less than 2 cycles.",
299 fabs(p)/(double)LAL_TWOPI );
300 XLALPrintWarning("%s", message);
301 }
302 else
303 {
304 /*wrap the phase vector*/
305 phiC = phi->data[count-1] ;
306 for (i=0; i<count;i++)
307 {
308 phi->data[i] = phi->data[i] -phiC + ppnParams->phi;
309 }
310 /* Allocate the waveform structures. */
311 waveform->a = (REAL4TimeVectorSeries *) XLALMalloc( sizeof(REAL4TimeVectorSeries) );
312 if ( waveform->a == NULL )
314 memset( waveform->a, 0, sizeof(REAL4TimeVectorSeries) );
315
316 waveform->f = (REAL4TimeSeries *) LALMalloc( sizeof(REAL4TimeSeries) );
317 if ( waveform->f == NULL )
318 {
319 XLALFree( waveform->a );
320 waveform->a = NULL;
322 }
323 memset( waveform->f, 0, sizeof(REAL4TimeSeries) );
324
325 waveform->phi = (REAL8TimeSeries *) LALMalloc( sizeof(REAL8TimeSeries) );
326 if ( waveform->phi == NULL )
327 {
328 XLALFree( waveform->a );
329 waveform->a = NULL;
330 XLALFree( waveform->f );
331 waveform->f = NULL;
333 }
334 memset( waveform->phi, 0, sizeof(REAL8TimeSeries) );
335
336 waveform->a->data = XLALCreateREAL4VectorSequence(count, 2);
337 if (waveform->a->data == NULL)
339 waveform->f->data = XLALCreateREAL4Vector(count);
340 if (waveform->f->data == NULL)
342 waveform->phi->data = XLALCreateREAL8Vector(count);
343 if (waveform->phi->data == NULL)
345
346 memcpy(waveform->f->data->data , ff->data, count*(sizeof(REAL4)));
347 memcpy(waveform->a->data->data , a->data, 2*count*(sizeof(REAL4)));
348 memcpy(waveform->phi->data->data ,phi->data, count*(sizeof(REAL8)));
349
350 waveform->a->deltaT = waveform->f->deltaT = waveform->phi->deltaT = ppnParams->deltaT;
351
352 waveform->a->sampleUnits = lalStrainUnit;
353 waveform->f->sampleUnits = lalHertzUnit;
355 waveform->position = ppnParams->position;
356 waveform->psi = ppnParams->psi;
357
358 snprintf( waveform->a->name, LALNameLength, "T1 inspiral amplitude" );
359 snprintf( waveform->f->name, LALNameLength, "T1 inspiral frequency" );
360 snprintf( waveform->phi->name, LALNameLength, "T1 inspiral phase" );
361
362 /* --- fill some output ---*/
363 ppnParams->tc = (double)(count-1) / params->tSampling ;
364 ppnParams->length = count;
365 ppnParams->dfdt = ((REAL4)(waveform->f->data->data[count-1] - waveform->f->data->data[count-2])) * ppnParams->deltaT;
366 ppnParams->fStop = params->fFinal;
368 ppnParams->termDescription = GENERATEPPNINSPIRALH_MSGEFSTOP;
369
370 ppnParams->fStart = ppnParams->fStartIn;
371
372 if( params->ampOrder )
373 {
374 waveform->h = (REAL4TimeVectorSeries *) XLALMalloc( sizeof(REAL4TimeVectorSeries) );
375 if ( waveform->h == NULL )
377 memset( waveform->h, 0, sizeof(REAL4TimeVectorSeries) );
378
379 waveform->h->data = XLALCreateREAL4VectorSequence(count, 2);
380 if ( waveform->h->data == NULL )
382 memcpy(waveform->h->data->data , h->data, 2*count*(sizeof(REAL4)));
383 waveform->h->deltaT = 1./params->tSampling;
384 waveform->h->sampleUnits = lalStrainUnit;
385 snprintf( waveform->h->name, LALNameLength, "T3 inspiral polarizations" );
387 h = NULL;
388 }
389 } /*end of coherentGW storage */
390
391 /* --- free memory --- */
395
396 return XLAL_SUCCESS;
397}
398
399/*
400 * Engine function for use by other LALInspiralWave1* functions
401 * Craig Robinson April 2005
402 */
403
404int
406 REAL4Vector *signalvec1,
407 REAL4Vector *signalvec2,
408 REAL4Vector *h,
409 REAL4Vector *a,
410 REAL4Vector *ff,
411 REAL8Vector *phi,
413 InspiralInit *paramsInit
414)
415{
416 INT4 n=2, count;
417 REAL8 omega;
418 REAL8 amp, m, dt, t, v, p, h1, h2, f, fu, fHigh, piM;
419 REAL8Vector dummy, values, dvalues, valuesNew, yt, dym, dyt;
420 TofVIn in1;
421 InspiralPhaseIn in2;
423 rk4In in4;
424 rk4GSLIntegrator *integrator;
425 void *funcParams;
426 expnCoeffs ak;
427 expnFunc func;
428
429 REAL8 mTot = 0;
430 REAL8 unitHz = 0;
431 REAL8 f2a = 0;
432 REAL8 mu = 0;
433 REAL8 cosI = 0;/* cosine of system inclination */
434 REAL8 etab = 0;
435 REAL8 fFac = 0; /* SI normalization for f and t */
436 REAL8 f2aFac = 0;/* factor multiplying f in amplitude function */
437 REAL8 apFac = 0, acFac = 0;/* extra factor in plus and cross amplitudes */
438
439 ak = paramsInit->ak;
440 func = paramsInit->func;
441
442 if (params == NULL)
444 if (params->nStartPad < 0)
446 if (params->nEndPad < 0)
448 if (params->fLower <= 0)
450 if (params->tSampling <= 0)
452
453 values.length = dvalues.length = valuesNew.length =
454 yt.length = dym.length = dyt.length = n;
455 dummy.length = n * 6;
456 if (!(dummy.data = (REAL8 * ) LALMalloc(sizeof(REAL8) * n * 6))) {
458 }
459
460 values.data = &dummy.data[0];
461 dvalues.data = &dummy.data[n];
462 valuesNew.data = &dummy.data[2*n];
463 yt.data = &dummy.data[3*n];
464 dym.data = &dummy.data[4*n];
465 dyt.data = &dummy.data[5*n];
466
467 m = ak.totalmass;
468 dt = 1./params->tSampling;
469
470 if (a || h)
471 {
472 mTot = params->mass1 + params->mass2;
473 etab = params->mass1 * params->mass2;
474 etab /= mTot;
475 etab /= mTot;
476 unitHz = mTot *LAL_MTSUN_SI*(REAL8)LAL_PI;
477 cosI = cos( params->inclination );
478 mu = etab * mTot;
479 fFac = 1.0 / ( 4.0*LAL_TWOPI*LAL_MTSUN_SI*mTot );
480 f2aFac = LAL_PI*LAL_MTSUN_SI*mTot*fFac;
481 apFac = acFac = -2.0 * mu * LAL_MRSUN_SI/params->distance;
482 apFac *= 1.0 + cosI*cosI;
483 acFac *= 2.0*cosI;
484 params->nStartPad = 0;
485 }
486
487 if (params->totalMass <= 0)
489
490 t = 0.0;
491 in1.t = t;
492 in1.t0=ak.t0;
493 in1.v0 = ak.v0;
494 in1.vlso = ak.vlso;
495 in1.totalmass = ak.totalmass;
496 in1.dEnergy = func.dEnergy;
497 in1.flux = func.flux;
498 in1.coeffs = &ak;
499
500 in2.v0 = ak.v0;
501 in2.phi0 = params->startPhase;
502 in2.dEnergy = func.dEnergy;
503 in2.flux = func.flux;
504 in2.coeffs = &ak;
505
506 in3.totalmass = ak.totalmass;
507 in3.dEnergy = func.dEnergy;
508 in3.flux = func.flux;
509 in3.coeffs = &ak;
510 funcParams = (void *) &in3;
511
512 v = XLALInspiralVelocity(&in1);
515
516 piM = LAL_PI * m;
517 f = (v*v*v)/piM;
518
519 fu = params->fCutoff;
520 if (fu)
521 fHigh = (fu < ak.flso) ? fu : ak.flso;
522 else
523 fHigh = ak.flso;
524 f = (v*v*v)/(LAL_PI*m);
525
526/*
527 Check that the highest frequency is less than half
528 the sampling frequency - the Nyquist theorem
529*/
530
531 if (fHigh >= 0.5/dt)
533 if (fHigh <= params->fLower)
535
536
537 p = XLALInspiralPhasing1(v, &in2);
540
541 *(values.data) = v;
542 *(values.data+1) = p;
543
545 in4.x = t;
546 in4.y = &values;
547 in4.h = dt;
548 in4.n = n;
549 in4.yt = &yt;
550 in4.dym = &dym;
551 in4.dyt = &dyt;
552
553 /* Initialize GSL integrator */
554 if (!(integrator = XLALRungeKutta4Init(n, &in4)))
556
557 count = 0;
558 if (signalvec2) {
559 params->nStartPad = 0;} /* for template generation, that value must be zero*/
560
561 else if (signalvec1) {
562 count = params->nStartPad;
563 }
564
565 t = 0.0;
566 do {
567 /* Free up memory and abort if writing beyond the end of vector*/
568 if ((signalvec1 && (UINT4)count >= signalvec1->length) || (ff && (UINT4)count >= ff->length))
569 {
570 XLALRungeKutta4Free( integrator );
571 XLALFree(dummy.data);
573 }
574
575 /* Non-injection case */
576 if (signalvec1)
577 {
578 amp = params->signalAmplitude * v*v;
579 h1 = amp * cos(p);
580 *(signalvec1->data + count) = (REAL4) h1;
581 if (signalvec2)
582 {
583 h2 = amp * cos(p+LAL_PI_2);
584 *(signalvec2->data + count) = (REAL4) h2;
585 }
586 }
587 /* Injection case */
588 else if (a)
589 {
590 int ice, ico;
591 ice = 2*count;
592 ico = ice + 1;
593 omega = v*v*v;
594
595 ff->data[count] = (REAL4)(omega/unitHz);
596 f2a = pow (f2aFac * omega, 2./3.);
597 a->data[ice] = (REAL4)(4.*apFac * f2a);
598 a->data[ico] = (REAL4)(4.*acFac * f2a);
599 phi->data[count] = (REAL8)(p);
600
601 if (h)
602 {
603 h->data[ice] = LALInspiralHPlusPolarization( p, v, params );
605 }
606
607 }
608
609 LALInspiralDerivatives(&values, &dvalues, funcParams);
610
611 in4.dydx = &dvalues;
612 in4.x=t;
613
614 if(XLALRungeKutta4(&valuesNew, integrator, funcParams))
616
617 *(values.data) = v = *(valuesNew.data);
618 *(values.data+1) = p = *(valuesNew.data+1);
619
620 t = (++count-params->nStartPad) * dt;
621 f = v*v*v/piM;
622
623 } while (t < ak.tn && f<fHigh);
624
625 params->vFinal = p;
626 params->fFinal = f;
627 params->tC = t;
628
629 XLALRungeKutta4Free( integrator );
630 XLALFree(dummy.data);
631
632 return count;
633}
REAL8 XLALInspiralPhasing1(REAL8 v, void *params)
int XLALInspiralParameterCalc(InspiralTemplate *params)
REAL4 LALInspiralHCrossPolarization(REAL8 phase, REAL8 v, InspiralTemplate *params)
void XLALRungeKutta4Free(rk4GSLIntegrator *integrator)
int XLALInspiralSetup(expnCoeffs *ak, InspiralTemplate *params)
int XLALInspiralInit(InspiralTemplate *params, InspiralInit *paramsInit)
void LALInspiralDerivatives(REAL8Vector *vec1, REAL8Vector *vec2, void *params)
REAL8 XLALInspiralVelocity(TofVIn *params)
int XLALInspiralChooseModel(expnFunc *func, expnCoeffs *ak, InspiralTemplate *params)
REAL4 LALInspiralHPlusPolarization(REAL8 phase, REAL8 v, InspiralTemplate *params)
rk4GSLIntegrator * XLALRungeKutta4Init(INT4 n, rk4In *input)
int XLALRungeKutta4(REAL8Vector *yout, rk4GSLIntegrator *integrator, void *params)
int XLALInspiralWave1ForInjection(CoherentGW *waveform, InspiralTemplate *params, PPNParamStruc *ppnParams)
int XLALInspiralWave1Templates(REAL4Vector *output1, REAL4Vector *output2, InspiralTemplate *params)
int XLALInspiralWave1(REAL4Vector *output, InspiralTemplate *params)
static int XLALInspiralWave1Engine(REAL4Vector *output1, REAL4Vector *output2, REAL4Vector *h, REAL4Vector *a, REAL4Vector *ff, REAL8Vector *phi, InspiralTemplate *params, InspiralInit *paramsInit)
#define LALMalloc(n)
double i
REAL4VectorSequence * XLALCreateREAL4VectorSequence(UINT4 length, UINT4 veclen)
#define GENERATEPPNINSPIRALH_EFSTOP
Reached requested termination frequency.
#define LAL_PI_2
#define LAL_PI
#define LAL_TWOPI
#define LAL_MTSUN_SI
#define LAL_MRSUN_SI
double REAL8
char CHAR
uint32_t UINT4
int32_t INT4
float REAL4
LALNameLength
void * XLALMalloc(size_t n)
void XLALFree(void *p)
LALPNOrder
static const INT4 m
static const INT4 a
const LALUnit lalStrainUnit
const LALUnit lalHertzUnit
const LALUnit lalDimensionlessUnit
REAL4Vector * XLALCreateREAL4Vector(UINT4 length)
void XLALDestroyREAL4Vector(REAL4Vector *vector)
REAL8Vector * XLALCreateREAL8Vector(UINT4 length)
void XLALDestroyREAL8Vector(REAL8Vector *vector)
int int int XLALPrintInfo(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_ERROR(...)
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_IS_REAL8_FAIL_NAN(val)
XLAL_EBADLEN
XLAL_ENOMEM
XLAL_SUCCESS
XLAL_EFAULT
XLAL_EFUNC
XLAL_EDOM
list mu
int n
p
REAL4TimeSeries * shift
SkyPosition position
REAL4TimeVectorSeries * a
REAL8TimeSeries * phi
REAL4TimeVectorSeries * h
REAL4TimeSeries * f
Structure used as an input to compute the derivatives needed in solving the phasing formula when the ...
Definition: LALInspiral.h:607
EnergyFunction * dEnergy
Definition: LALInspiral.h:609
FluxFunction * flux
Definition: LALInspiral.h:610
expnCoeffs * coeffs
Definition: LALInspiral.h:611
expnFunc func
Definition: LALInspiral.h:680
expnCoeffs ak
Definition: LALInspiral.h:679
Structures used to compute the phase of the signal from the ‘beginning’, when the veolcity parameter ...
Definition: LALInspiral.h:654
EnergyFunction * dEnergy
Definition: LALInspiral.h:657
FluxFunction * flux
Definition: LALInspiral.h:658
expnCoeffs * coeffs
Definition: LALInspiral.h:659
The inspiral waveform parameter structure containing information about the waveform to be generated.
Definition: LALInspiral.h:205
This structure stores the parameters for constructing a restricted post-Newtonian waveform.
const CHAR * termDescription
The termination code description (above)
INT4 termCode
The termination condition (above) that stopped computation of the waveform.
REAL4 dfdt
The maximum value of encountered over any timestep used in generating the waveform.
REAL4 phi
The phase at coalescence (or arbitrary reference phase for a post -Newtonian approximation),...
REAL4 psi
polarization angle (radians)
REAL4 fStart
The actual starting frequency of the waveform, in Hz (normally close but not identical to fStartIn)
SkyPosition position
location of source on sky
UINT4 length
The length of the generated waveform.
REAL4 fStop
The frequency at the termination of the waveform, in Hz.
REAL8 tc
The time from the start of the waveform to coalescence (in the point-mass approximation),...
REAL4 fStartIn
The requested starting frequency of the waveform, in Hz.
REAL8 deltaT
The requested sampling interval of the waveform, in s.
CHAR name[LALNameLength]
REAL4Sequence * data
LALUnit sampleUnits
CHAR name[LALNameLength]
REAL4VectorSequence * data
REAL4 * data
REAL8Sequence * data
LALUnit sampleUnits
CHAR name[LALNameLength]
REAL8 * data
REAL8 t0
Definition: LALInspiral.h:567
REAL8 v0
Definition: LALInspiral.h:566
REAL8 totalmass
Definition: LALInspiral.h:569
EnergyFunction dEnergy
expnCoeffsdEnergyFlux * coeffs
REAL8 t
Definition: LALInspiral.h:565
FluxFunction flux
REAL8 vlso
Definition: LALInspiral.h:568
This structure contains various post-Newtonian and P-approximant expansion coefficients; the meanings...
Definition: LALInspiral.h:399
REAL8 totalmass
Definition: LALInspiral.h:474
REAL8 flso
Definition: LALInspiral.h:487
REAL8 vlso
Definition: LALInspiral.h:487
Structure to hold the pointers to the generic functions defined above.
Definition: LALInspiral.h:546
EnergyFunction * dEnergy
Definition: LALInspiral.h:547
FluxFunction * flux
Definition: LALInspiral.h:548
double inclination
double distance
Structure containing steps and controls for the GSL Runge-Kutta solver.
Definition: LALInspiral.h:637
Structure used as an input to Runge-Kutta solver.
Definition: LALInspiral.h:620
REAL8Vector * dym
Definition: LALInspiral.h:626
REAL8 x
Definition: LALInspiral.h:622
REAL8Vector * yt
Definition: LALInspiral.h:625
REAL8Vector * dydx
Definition: LALInspiral.h:624
REAL8 h
Definition: LALInspiral.h:628
REAL8Vector * dyt
Definition: LALInspiral.h:627
INT4 n
Definition: LALInspiral.h:629
REAL8Vector * y
Definition: LALInspiral.h:623
TestFunction * function
Definition: LALInspiral.h:621
char output[FILENAME_MAX]