Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALInspiral 5.0.3.1-b246709
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
LALInspiralSpinningBHBinary.c
Go to the documentation of this file.
1/*
2* Copyright (C) 2007 Jolien Creighton, B.S. Sathyaprakash, Craig Robinson, Thomas Cokelaer, Drew Keppel
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 This module generates the inspiral waveform from a binary consisting of
26 * two spinning compact stars.
27 *
28 * ### Prototypes ###
29 *
30 * <tt>LALInspiralSpinningBHBinary()</tt>
31 * <ul>
32 * <li> \c signalvec: Output containing the spin modulated inspiral waveform.</li>
33 * <li> \c in: Input containing binary chirp parameters.</li>
34 * </ul>
35 *
36 * ### Description ###
37 *
38 * Using the formalism described in Apostolatos
39 * et al \cite ACST94 and Blanchet et al. \cite BDIWW1995 and formulas
40 * summarized in Sec.\ \ref sec_smirches this module computes
41 * the spin-modulated chirps from a pair of compact stars in orbit around
42 * each other.
43 *
44 * ### Algorithm ###
45 *
46 * This code uses a fourth-order Runge-Kutta algorithm to solve the nine
47 * first-order, coupled, ordinary differential equations in \eqref{eqn_precession1}
48 * \eqref{eqn_precession2} and \eqref{eqn_precession3}. The solution is then used
49 * in \eqref{eqn_waveform} (and following equations) to get the waveform emitted
50 * by a spinning black hole binary.
51 *
52 * ### Uses ###
53 *
54 * \code
55 * LALInspiralSetup()
56 * LALInspiralChooseModel()
57 * LALInspiralVelocity()
58 * LALInspiralPhasing3()
59 * LALRungeKutta4()
60 * \endcode
61 *
62 */
63
64/*
65 Interface routine needed to generate time-domain T- or a P-approximant
66 waveforms by solving the ODEs using a 4th order Runge-Kutta; April 5, 00.
67*/
68#include <math.h>
69#include <lal/LALInspiral.h>
70#include <lal/LALStdlib.h>
71#include <lal/Units.h>
72#include <lal/SeqFactories.h>
73
74
75/* computes the polarisation angle psi */
76static void LALInspiralPolarisationAngle( REAL8 *psi, REAL8 psiOld, REAL8 *NCap, REAL8 *L);
77/* compute beam factors Fplus and Fcross */
78static void LALInspiralBeamFactors(REAL8 *Fplus, REAL8 *Fcross, REAL8 Fp0, REAL8 Fp1, REAL8 Fc0, REAL8 Fc1, REAL8 psi);
79/* compute polarisation phase phi */
80static void LALInspiralPolarisationPhase(REAL8 *phi, REAL8 phiOld, REAL8 NCapDotLByL, REAL8 Fplus, REAL8 Fcross);
81/* computes modulated amplitude A */
82static void LALInspiralModulatedAmplitude(REAL8 *amp, REAL8 v, REAL8 amp0, REAL8 NCapDotLByL, REAL8 Fplus, REAL8 Fcross);
83/* computes the derivatives of vectors L, S1 and S2 */
84void LALACSTDerivatives (REAL8Vector *values, REAL8Vector *dvalues, void *funcParams);
85
86/* computes carrier phase Phi */
87/* func.phasing3(LALStatus *status, REAL8 *Phi, REAL8 Theta, REAL8 *ak); */
88
89/* computes precession correction to phase dThi */
90
91/* Routine to generate inspiral waveforms from binaries consisting of spinning objects */
92
93void
96 REAL4Vector *signalvec,
98 )
99{
100
101
102 UINT4 nDEDim=9/*, Dim=3*/;
103 UINT4 j, count;
104 /* polarisation and antenna pattern */
105 REAL8 psi, psiOld, Fplus, Fcross, Fp0, Fp1, Fc0, Fc1, magL, amp, amp0, phi, phiOld, /*Amplitude,*/ Phi/*, dPhi*/;
106 REAL8 v, t, tMax, dt, f, fOld, fn, phase, phi0, MCube, Theta, etaBy5M, NCapDotL, NCapDotLByL;
107 /* source direction angles */
108 InspiralACSTParams acstPars;
109 REAL8Vector dummy, values, dvalues, newvalues, yt, dym, dyt;
110 void *funcParams;
111 rk4In rk4in;
112 rk4GSLIntegrator *integrator;
113 expnFunc func;
114 expnCoeffs ak;
115
116
119 ASSERT(signalvec, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
120 ASSERT(signalvec->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
121 ASSERT(in, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
122
123 LALInspiralSetup (status->statusPtr, &ak, in);
125 LALInspiralChooseModel(status->statusPtr, &func, &ak, in);
127
128 /* Allocate space for all the vectors in one go ... */
129
130 dummy.length = nDEDim * 6;
131 values.length = dvalues.length = newvalues.length = yt.length = dym.length = dyt.length = nDEDim;
132
133 if (!(dummy.data = (REAL8 *) LALMalloc(sizeof(REAL8) * dummy.length)))
134 {
135 ABORT(status, LALINSPIRALH_EMEM, LALINSPIRALH_MSGEMEM);
136 }
137
138 /* and distribute as necessary */
139 values.data = &dummy.data[0]; /* values of L, S1, S2 at current time */
140 dvalues.data = &dummy.data[nDEDim]; /* values of dL/dt, dS1/dt, dS2/dt at current time */
141 newvalues.data = &dummy.data[2*nDEDim]; /* new values of L, S1, S2 after time increment by dt*/
142 yt.data = &dummy.data[3*nDEDim]; /* Vector space needed by LALRungeKutta4 */
143 dym.data = &dummy.data[4*nDEDim]; /* Vector space needed by LALRungeKutta4 */
144 dyt.data = &dummy.data[5*nDEDim]; /* Vector space needed by LALRungeKutta4 */
145
146 v = pow(LAL_PI * in->totalMass * LAL_MTSUN_SI * in->fLower, 1.L/3.L);
147 MCube = pow(LAL_MTSUN_SI * in->totalMass, 3.L);
148 /* Fill in the structure needed by the routine that computes the derivatives */
149 /* constant spins of the two bodies */
150 acstPars.magS1 = in->spin1[0]*in->spin1[0] + in->spin1[1]*in->spin1[1] + in->spin1[2]*in->spin1[2];
151 acstPars.magS2 = in->spin2[0]*in->spin2[0] + in->spin2[1]*in->spin2[1] + in->spin2[2]*in->spin2[2];
152 /* Direction to the source in the solar system barycenter */
153 acstPars.NCap[0] = sin(in->sourceTheta)*cos(in->sourcePhi);
154 acstPars.NCap[1] = sin(in->sourceTheta)*sin(in->sourcePhi);
155 acstPars.NCap[2] = cos(in->sourceTheta);
156 /* total mass in seconds */
157 acstPars.M = LAL_MTSUN_SI * in->totalMass;
158 /* Combination of masses that appears in the evolution of L, S1 and S2 */
159 acstPars.fourM1Plus = (4.L*in->mass1 + 3.L*in->mass2)/(2.*in->mass1*MCube);
160 acstPars.fourM2Plus = (4.L*in->mass2 + 3.L*in->mass1)/(2.*in->mass2*MCube);
161 acstPars.oneBy2Mcube = 0.5L/MCube;
162 acstPars.threeBy2Mcube = 1.5L/MCube;
163 acstPars.thirtytwoBy5etc = (32.L/5.L) * pow(in->eta,2.) * acstPars.M;
164
165 /* Constant amplitude of GW */
166 amp0 = 2.L*in->eta * acstPars.M/in->distance;
167 /* Initial magnitude of the angular momentum, determined by the initial frequency/velocity */
168 magL = in->eta * (acstPars.M * acstPars.M)/v;
169 /* Initial angular momentum and spin vectors */
170 /* Angular momentum */
171 values.data[0] = magL * sin(in->orbitTheta0) * cos(in->orbitPhi0);
172 values.data[1] = magL * sin(in->orbitTheta0) * sin(in->orbitPhi0);
173 values.data[2] = magL * cos(in->orbitTheta0);
174 /* Spin of primary */
175 values.data[3] = in->spin1[0];
176 values.data[4] = in->spin1[1];
177 values.data[5] = in->spin1[2];
178 /* Spin of secondarfy */
179 values.data[6] = in->spin2[0];
180 values.data[7] = in->spin2[1];
181 values.data[8] = in->spin2[2];
182 /* Structure needed by RungeKutta4 for the evolution of the differential equations */
184 rk4in.y = &values;
185 rk4in.h = 1.L/in->tSampling;
186 rk4in.n = nDEDim;
187 rk4in.yt = &yt;
188 rk4in.dym = &dym;
189 rk4in.dyt = &dyt;
190
191 xlalErrno = 0;
192 /* Initialize GSL integrator */
193 if (!(integrator = XLALRungeKutta4Init(nDEDim, &rk4in)))
194 {
195 INT4 errNum = XLALClearErrno();
196 LALFree(dummy.data);
197
198 if (errNum == XLAL_ENOMEM)
199 ABORT(status, LALINSPIRALH_EMEM, LALINSPIRALH_MSGEMEM);
200 else
201 ABORTXLAL( status );
202 }
203
204 /* Pad the first nStartPad elements of the signal array with zero */
205 count = 0;
206 while ((INT4)count < in->nStartPad)
207 {
208 signalvec->data[count] = 0.L;
209 count++;
210 }
211
212 /* Get the initial conditions before the evolution */
213 t = 0.L; /* initial time */
214 dt = 1.L/in->tSampling; /* Sampling interval */
215 etaBy5M = in->eta/(5.L*acstPars.M); /* Constant that appears in ... */
216 Theta = etaBy5M * (in->tC - t); /* ... Theta */
217 tMax = in->tC - dt; /* Maximum duration of the signal */
218 fn = (ak.flso > in->fCutoff) ? ak.flso : in->fCutoff; /* Frequency cutoff, smaller of user given f or flso */
219
220 Phi = func.phasing3(Theta, &ak); /* Carrier phase at the initial time */
221 if (XLAL_IS_REAL8_FAIL_NAN(Phi))
223 f = func.frequency3(Theta, &ak); /* Carrier Freqeuncy at the initial time */
226
227 /* Constants that appear in the antenna pattern */
228 Fp0 = (1.L + cos(in->sourceTheta)*cos(in->sourceTheta)) * cos(2.L*in->sourcePhi);
229 Fp1 = cos(in->sourceTheta) * sin(2.L*in->sourcePhi);
230 Fc0 = Fp0;
231 Fc1 = -Fp1;
232
233 psiOld = 0.L;
234 phiOld = 0.L;
235 magL = sqrt(values.data[0]*values.data[0] + values.data[1]*values.data[1] + values.data[2]*values.data[2]);
236 NCapDotL = acstPars.NCap[0]*values.data[0] + acstPars.NCap[1]*values.data[1] + acstPars.NCap[2]*values.data[2];
237 NCapDotLByL = NCapDotL/magL;
238
239 /* Initial values of */
240 /* the polarization angle */
241 LALInspiralPolarisationAngle(&psi, psiOld, &acstPars.NCap[0], &values.data[0]);
242 /* beam pattern factors */
243 LALInspiralBeamFactors(&Fplus, &Fcross, Fp0, Fp1, Fc0, Fc1, psi);
244 /* the polarization phase */
245 LALInspiralPolarisationPhase(&phi, phiOld, NCapDotLByL, Fplus, Fcross);
246 /* modulated amplitude */
247 LALInspiralModulatedAmplitude(&amp, v, amp0, NCapDotLByL, Fplus, Fcross);
248
249 phase = Phi + phi;
250 phi0 = -phase + in->startPhase;
251
252 fOld = f - 0.1;
253 while (f < fn && t < tMax && f>fOld)
254 {
255 ASSERT((INT4)count < (INT4)signalvec->length, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
256 /* Subtract the constant initial phase (chosen to have a phase of in->startPhase) */
257 signalvec->data[count] = amp*cos(phase+phi0);
258
259 /*
260 double s1;
261 s1 = pow(pow(values.data[3],2.0) + pow(values.data[4], 2.0) +pow(values.data[5], 2.0), 0.5);
262 printf("%e %e %e %e %e\n", t, values.data[3], values.data[4], values.data[5], s1);
263 printf("%e %e %e %e %e %e %e %e\n", t, signalvec->data[count], Phi, phi, psi, NCapDotL/magL, Fcross, Fplus);
264 */
265
266 /* Record the old values of frequency, polarisation angle and phase */
267 fOld = f;
268 psiOld = psi;
269 phiOld = phi;
270
271 count++;
272 t = (count-in->nStartPad) * dt;
273
274 /* The velocity parameter */
275 acstPars.v = v;
276 /* Cast the input structure into a void struct as required by the RungeKutta4 routine */
277 funcParams = (void *) &acstPars;
278 /* Compute the derivatives at the current time. */
279 LALACSTDerivatives(&values, &dvalues, funcParams);
280 /* Supply the integration routine with derivatives and current time*/
281 rk4in.dydx = &dvalues;
282 rk4in.x = t;
283 /* Compute the carrier phase of the signal at the current time */
284 Theta = etaBy5M * (in->tC - t);
285 Phi = func.phasing3(Theta, &ak);
286 if (XLAL_IS_REAL8_FAIL_NAN(Phi))
288 /* Compute the post-Newtonian frequency of the signal and 'velocity' at the current time */
289 f = func.frequency3(Theta, &ak);
292 v = pow(LAL_PI * in->totalMass * LAL_MTSUN_SI * f, 1.L/3.L);
293 /* Integrate the equations one step forward */
294 LALRungeKutta4(status->statusPtr, &newvalues, integrator, funcParams);
296
297 /* re-record the new values of the variables */
298 for (j=0; j<nDEDim; j++) values.data[j] = newvalues.data[j];
299
300 /* Compute the magnitude of the angular-momentum and its component along line-of-sight. */
301 magL = sqrt(values.data[0]*values.data[0] + values.data[1]*values.data[1] + values.data[2]*values.data[2]);
302 NCapDotL = acstPars.NCap[0]*values.data[0]+acstPars.NCap[1]*values.data[1]+acstPars.NCap[2]*values.data[2];
303 NCapDotLByL = NCapDotL/magL;
304
305 /* Compute the polarisation angle, beam factors, polarisation phase and modulated amplitude */
306 LALInspiralPolarisationAngle(&psi, psiOld, &acstPars.NCap[0], &values.data[0]);
307 LALInspiralBeamFactors(&Fplus, &Fcross, Fp0, Fp1, Fc0, Fc1, psi);
308 LALInspiralPolarisationPhase(&phi, phiOld, NCapDotLByL, Fplus, Fcross);
309 LALInspiralModulatedAmplitude(&amp, v, amp0, NCapDotLByL, Fplus, Fcross);
310
311 /* The new phase of the signal is ... */
312 phase = Phi + phi;
313 }
314 while (count < signalvec->length)
315 {
316 signalvec->data[count] = 0.L;
317 count++;
318 }
319 XLALRungeKutta4Free( integrator );
320 LALFree(dummy.data);
322 RETURN(status);
323
324}
325
326
327static void
329 REAL8 *psi,
330 REAL8 psiOld,
331 REAL8 *NCap,
332 REAL8 *L)
333{
334 REAL8 NCapDotL, NCapDotZ, LCapDotZ, NCapDotLCrossZ;
335
336 /* page 6278, Eq. (20) of ACST */
337 NCapDotL = NCap[0]*L[0] + NCap[1]*L[1] + NCap[2]*L[2];
338 NCapDotZ = NCap[2];
339 LCapDotZ = L[2];
340 NCapDotLCrossZ = NCap[0]*L[1] - NCap[1]*L[0];
341 if (NCapDotLCrossZ)
342 *psi = atan((LCapDotZ - NCapDotL*NCapDotZ)/NCapDotLCrossZ);
343 else
344 *psi = LAL_PI_2;
345
346 /* If you require your polarisation angle to be continuous, then uncomment the line below */
347 if (psiOld) while (fabs(*psi-psiOld)>LAL_PI_2) *psi = (psiOld > *psi) ? *psi+LAL_PI : *psi-LAL_PI;
348}
349
350static void
352 REAL8 *Fplus,
353 REAL8 *Fcross,
354 REAL8 Fp0,
355 REAL8 Fp1,
356 REAL8 Fc0,
357 REAL8 Fc1,
358 REAL8 psi)
359{
360
361
362 REAL8 cosTwoPsi, sinTwoPsi;
363 /* page 6276, Eqs. (4a) and (4b) of ACST */
364
365 cosTwoPsi = cos(2.L*psi);
366 sinTwoPsi = sin(2.L*psi);
367
368 *Fplus = Fp0 * cosTwoPsi + Fp1 * sinTwoPsi;
369 *Fcross = Fc0 * sinTwoPsi + Fc1 * cosTwoPsi;
370}
371
372static void
374 REAL8 *phi,
375 REAL8 phiOld,
376 REAL8 NCapDotLByL,
377 REAL8 Fplus,
378 REAL8 Fcross
379 )
380{
381 /* page 6278, Eqs. (19b) of ACST */
382 *phi=atan(2.L*NCapDotLByL*Fcross/((1.L + NCapDotLByL*NCapDotLByL)*Fplus));
383
384 /* If you require your polarisation phase to be continuous, then uncomment the line below */
385 if (phiOld) while (fabs(*phi-phiOld)>LAL_PI_2) *phi = (phiOld>*phi) ? *phi+LAL_PI : *phi-LAL_PI;
386}
387
388static void
390 REAL8 *amp,
391 REAL8 v,
392 REAL8 amp0,
393 REAL8 NCapDotL,
394 REAL8 Fplus,
395 REAL8 Fcross
396 )
397{
398 REAL8 NCapDotLSq;
399 /* page 6278, Eqs. (19a) of ACST */
400 NCapDotLSq = NCapDotL * NCapDotL;
401 *amp = amp0 * v*v * sqrt ( pow(1.L+NCapDotLSq,2.L) * Fplus*Fplus + 4.L*NCapDotLSq*Fcross*Fcross);
402}
403
404/* computes the derivatives of the angular mom precession eqns for rkdumb */
405void
407(
408 REAL8Vector *values,
409 REAL8Vector *dvalues,
410 void *funcParams
411 )
412{
413
414
415 /* derivatives of vectors L,S1,S2 */
416 /* page 6277, Eqs. (11a)-(11c) of ACST
417 * Note that ACST has a mis-print in Eq. (11b) */
418 /* loop variables */
419 enum { Dim=3 };
420 UINT4 i, j, k, p, q;
421 /* magnitudes of S1, S2, L etc. */
422 REAL8 /*Theta,*/ v, magL, S1DotL, S2DotL;
423 REAL8 fourM1Plus, fourM2Plus, oneBy2Mcube, Lsq, dL0, c2, v6;
424 REAL8 L[Dim], S1[Dim], S2[Dim], S1CrossL[Dim], S2CrossL[Dim], S1CrossS2[Dim];
425 InspiralACSTParams *ACSTIn;
426
427
428 ACSTIn = (InspiralACSTParams *) funcParams;
429 /* extract 'velocity' and masses */
430 v = ACSTIn->v;
431 fourM1Plus = ACSTIn->fourM1Plus;
432 fourM2Plus = ACSTIn->fourM2Plus;
433 oneBy2Mcube = ACSTIn->oneBy2Mcube;
434 magL = sqrt(values->data[0]*values->data[0] + values->data[1]*values->data[1] + values->data[2]*values->data[2]);
435
436 /* extract vectors, angular momentum and spins */
437 for (i=0; i<Dim; i++)
438 {
439 L[i]=values->data[i];
440 S1[i]=values->data[i+Dim];
441 S2[i]=values->data[i+2*Dim];
442 }
443
444 S1DotL = S2DotL = 0.L;
445 for (i=0; i<Dim; i++)
446 {
447 j = (i+1) % Dim;
448 k = (i+2) % Dim;
449 S1DotL += S1[i] * L[i];
450 S2DotL += S2[i] * L[i];
451 S1CrossL[i] = S1[j] * L[k] - S1[k] * L[j];
452 S2CrossL[i] = S2[j] * L[k] - S2[k] * L[j];
453 S1CrossS2[i] = S1[j] * S2[k] - S1[k] * S2[j];
454 }
455
456
457 Lsq = magL*magL;
458 dL0 = ACSTIn->thirtytwoBy5etc/magL;
459 c2 = ACSTIn->threeBy2Mcube/Lsq;
460 v6 = pow(v,6.L);
461
462 /*
463 printf("%e %e %e\n", L[0], L[1], L[2]);
464 printf("%e %e %e\n", S1[0], S1[1], S1[2]);
465 printf("%e %e %e\n", S2[0], S2[1], S2[2]);
466 printf("%e %e %e\n", S1CrossS2[0], S1CrossS2[1], S1CrossS2[2]);
467 printf("%e %e %e\n", S1CrossL[0], S1CrossL[1], S1CrossL[2]);
468 printf("%e %e %e %e %e %e\n", S1DotL, S2DotL, Lsq, dL0, c2, v6);
469 */
470
471 for(i=0;i<Dim;i++)
472 {
473 p = i+Dim;
474 q = i+2*Dim;
475 /* compute the derivatives */
476 dvalues->data[i] = ((fourM1Plus - c2 * S2DotL) * S1CrossL[i]
477 + (fourM2Plus - c2 * S1DotL) * S2CrossL[i] - dL0 * L[i]*v) * v6;;
478
479 dvalues->data[p] = ((c2 * S2DotL - fourM1Plus) * S1CrossL[i] - oneBy2Mcube * S1CrossS2[i]) * v6;
480
481 dvalues->data[q] = ((c2 * S1DotL - fourM2Plus) * S2CrossL[i] + oneBy2Mcube * S1CrossS2[i]) * v6;
482 }
483
484}
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 LALInspiralPolarisationPhase(REAL8 *phi, REAL8 phiOld, REAL8 NCapDotLByL, REAL8 Fplus, REAL8 Fcross)
void LALInspiralSpinModulatedWave(LALStatus *status, REAL4Vector *signalvec, InspiralTemplate *in)
static void LALInspiralBeamFactors(REAL8 *Fplus, REAL8 *Fcross, REAL8 Fp0, REAL8 Fp1, REAL8 Fc0, REAL8 Fc1, REAL8 psi)
static void LALInspiralModulatedAmplitude(REAL8 *amp, REAL8 v, REAL8 amp0, REAL8 NCapDotLByL, REAL8 Fplus, REAL8 Fcross)
static void LALInspiralPolarisationAngle(REAL8 *psi, REAL8 psiOld, REAL8 *NCap, REAL8 *L)
void LALACSTDerivatives(REAL8Vector *values, REAL8Vector *dvalues, void *funcParams)
#define LALMalloc(n)
#define LALFree(p)
const double c2
#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 ABORTXLAL(sp)
double i
#define LAL_PI_2
#define LAL_PI
#define LAL_MTSUN_SI
double REAL8
uint32_t UINT4
int32_t INT4
#define LALINSPIRALH_EMEM
Memory allocation error.
Definition: LALInspiral.h:57
#define LALINSPIRALH_ENULL
Arguments contained an unexpected null pointer.
Definition: LALInspiral.h:56
#define LALINSPIRALH_ESIZE
Invalid input range.
Definition: LALInspiral.h:59
static const INT4 q
#define xlalErrno
int XLALClearErrno(void)
#define XLAL_IS_REAL8_FAIL_NAN(val)
XLAL_ENOMEM
p
This structure is needed to solve the differential equation giving the evolution of the orbital angul...
Definition: LALInspiral.h:379
REAL8 fourM1Plus
fourM1Plus: = (all masses expressed in seconds)
Definition: LALInspiral.h:386
REAL8 v
parameter of 'integration': v=sqrt(M/r)
Definition: LALInspiral.h:380
REAL8 thirtytwoBy5etc
thirtytwoBy5etc:=
Definition: LALInspiral.h:390
REAL8 M
Total mass of the binary (in seconds)
Definition: LALInspiral.h:385
REAL8 magS1
The constant spin magnitude of the primary.
Definition: LALInspiral.h:381
REAL8 fourM2Plus
fourM2Plus: = (all masses expressed in seconds)
Definition: LALInspiral.h:387
REAL8 NCap[3]
Source direction (unit vector) in detector coordinate system.
Definition: LALInspiral.h:383
REAL8 magS2
The constant spin magnitude of the secondary.
Definition: LALInspiral.h:382
REAL8 oneBy2Mcube
oneBy2Mcube: =
Definition: LALInspiral.h:388
REAL8 threeBy2Mcube
threeBy2Mcube: =
Definition: LALInspiral.h:389
The inspiral waveform parameter structure containing information about the waveform to be generated.
Definition: LALInspiral.h:205
INT4 nStartPad
Number of leading elements in the signal generation to be set to zero (input) If template is requeste...
Definition: LALInspiral.h:307
REAL8 eta
symmetric mass ratio (input/output)
Definition: LALInspiral.h:291
REAL8 totalMass
total mass of the binary in solar mass (input/output)
Definition: LALInspiral.h:292
REAL8 spin2[3]
Spin vector of the secondary.
Definition: LALInspiral.h:266
REAL8 mass1
Mass of the primary in solar mass (input/output)
Definition: LALInspiral.h:211
REAL8 distance
Distance to the binary in seconds.
Definition: LALInspiral.h:219
REAL8 startPhase
starting phase of the waveform in radians (input)
Definition: LALInspiral.h:221
REAL8 fCutoff
upper frequency cutoff in Hz to be used in generating the waveform; If the last stable orbit frequenc...
Definition: LALInspiral.h:213
REAL8 sourcePhi
Azimuth angle in the direction to the source.
Definition: LALInspiral.h:268
REAL8 orbitPhi0
Initial azimuth angle of the orbit.
Definition: LALInspiral.h:264
REAL8 spin1[3]
Spin vector of the primary.
Definition: LALInspiral.h:265
REAL8 tC
total chirp time seconds (output)
Definition: LALInspiral.h:301
REAL8 mass2
Mass of the secondary in solar mass (mass1 need not be larger than mass2 (input/output)
Definition: LALInspiral.h:212
REAL8 orbitTheta0
Initial co-latitute of the orbit.
Definition: LALInspiral.h:263
REAL8 fLower
lower frequency cutoff of the detector in Hz (input)
Definition: LALInspiral.h:217
REAL8 tSampling
Sampling rate in Hz (input)
Definition: LALInspiral.h:218
REAL8 sourceTheta
Co-latitute in the direction to the source.
Definition: LALInspiral.h:267
REAL4 * data
REAL8 * data
This structure contains various post-Newtonian and P-approximant expansion coefficients; the meanings...
Definition: LALInspiral.h:399
REAL8 flso
Definition: LALInspiral.h:487
Structure to hold the pointers to the generic functions defined above.
Definition: LALInspiral.h:546
InspiralPhasing3 * phasing3
Definition: LALInspiral.h:551
InspiralFrequency3 * frequency3
Definition: LALInspiral.h:552
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