LALInspiral 5.0.3.1-eeff03c
LALEOBNRv2Waveform.h
Go to the documentation of this file.
1/*
2* Copyright (C) 2010 Craig Robinson
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#include <lal/LALInspiral.h>
22
23
24#ifndef _LALEOBNR_H
25#define _LALEOBNR_H
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31#ifdef __GNUC__
32#define UNUSED __attribute__ ((unused))
33#else
34#define UNUSED
35#endif
36
37#define LALEOB_MAX_MULTIPOLE 8
38
39/**
40 * \defgroup LALEOBNRv2Waveform_h Header LALEOBNRv2Waveform.h
41 * \ingroup lalinspiral_UNCLASSIFIED
42 * \author Craig Robinson
43 *
44 * \brief %Header containing most of the structures and prototypes which are
45 * used in the generation of the EOBNRv2 waveform.
46 */
47/** @{ */
48
49/**
50 * Structure containing the coefficients for EOBNRv2 A potential function.
51 * The elements in the structure are labelled as follows:
52 * aN, where a is denotes whether the parameter is in the numerator (n)
53 * or denominator (d); and N is the power of r which will multiply this
54 * coefficient. For example, the coefficient of r^5 in the numerator
55 * will be called n5.
56 */
57typedef struct
58tagEOBACoefficients
59{
60 REAL8 n4;
61 REAL8 n5;
62 REAL8 d0;
63 REAL8 d1;
64 REAL8 d2;
65 REAL8 d3;
66 REAL8 d4;
67 REAL8 d5;
68}
70
71/**
72 * Structure containing the coefficients for calculating the factorized
73 * waveform. The coefficients are precomputed in the function
74 * XLALCalcFacWaveformCoefficients()
75 */
76typedef struct
77tagFacWaveformCoeffs
78{
79 REAL8 delta22vh3;
80 REAL8 delta22vh6;
81 REAL8 delta22vh8;
82 REAL8 delta22vh9;
83 REAL8 delta22v5;
84
85 REAL8 rho22v2;
86 REAL8 rho22v3;
87 REAL8 rho22v4;
88 REAL8 rho22v5;
89 REAL8 rho22v6;
90 REAL8 rho22v6l;
91 REAL8 rho22v7;
92 REAL8 rho22v8;
93 REAL8 rho22v8l;
94 REAL8 rho22v10;
95 REAL8 rho22v10l;
96
97 REAL8 delta21vh3;
98 REAL8 delta21vh6;
99 REAL8 delta21vh7;
100 REAL8 delta21vh9;
101 REAL8 delta21v5;
102 REAL8 delta21v7;
103
104 REAL8 rho21v1;
105 REAL8 rho21v2;
106 REAL8 rho21v3;
107 REAL8 rho21v4;
108 REAL8 rho21v5;
109 REAL8 rho21v6;
110 REAL8 rho21v6l;
111 REAL8 rho21v7;
112 REAL8 rho21v7l;
113 REAL8 rho21v8;
114 REAL8 rho21v8l;
115 REAL8 rho21v10;
116 REAL8 rho21v10l;
117
118 REAL8 delta33vh3;
119 REAL8 delta33vh6;
120 REAL8 delta33vh9;
121 REAL8 delta33v5;
122 REAL8 delta33v7;
123
124 REAL8 rho33v2;
125 REAL8 rho33v3;
126 REAL8 rho33v4;
127 REAL8 rho33v5;
128 REAL8 rho33v6;
129 REAL8 rho33v6l;
130 REAL8 rho33v7;
131 REAL8 rho33v8;
132 REAL8 rho33v8l;
133
134 REAL8 delta32vh3;
135 REAL8 delta32vh4;
136 REAL8 delta32vh6;
137 REAL8 delta32vh9;
138
139 REAL8 rho32v;
140 REAL8 rho32v2;
141 REAL8 rho32v3;
142 REAL8 rho32v4;
143 REAL8 rho32v5;
144 REAL8 rho32v6;
145 REAL8 rho32v6l;
146 REAL8 rho32v8;
147 REAL8 rho32v8l;
148
149 REAL8 delta31vh3;
150 REAL8 delta31vh6;
151 REAL8 delta31vh7;
152 REAL8 delta31vh9;
153 REAL8 delta31v5;
154
155 REAL8 rho31v2;
156 REAL8 rho31v3;
157 REAL8 rho31v4;
158 REAL8 rho31v5;
159 REAL8 rho31v6;
160 REAL8 rho31v6l;
161 REAL8 rho31v7;
162 REAL8 rho31v8;
163 REAL8 rho31v8l;
164
165 REAL8 delta44vh3;
166 REAL8 delta44vh6;
167 REAL8 delta44v5;
168
169 REAL8 rho44v2;
170 REAL8 rho44v3;
171 REAL8 rho44v4;
172 REAL8 rho44v5;
173 REAL8 rho44v6;
174 REAL8 rho44v6l;
175
176 REAL8 delta43vh3;
177 REAL8 delta43vh4;
178 REAL8 delta43vh6;
179
180 REAL8 rho43v;
181 REAL8 rho43v2;
182 REAL8 rho43v4;
183 REAL8 rho43v5;
184 REAL8 rho43v6;
185 REAL8 rho43v6l;
186
187 REAL8 delta42vh3;
188 REAL8 delta42vh6;
189
190 REAL8 rho42v2;
191 REAL8 rho42v3;
192 REAL8 rho42v4;
193 REAL8 rho42v5;
194 REAL8 rho42v6;
195 REAL8 rho42v6l;
196
197 REAL8 delta41vh3;
198 REAL8 delta41vh4;
199 REAL8 delta41vh6;
200
201 REAL8 rho41v;
202 REAL8 rho41v2;
203 REAL8 rho41v4;
204 REAL8 rho41v5;
205 REAL8 rho41v6;
206 REAL8 rho41v6l;
207
208 REAL8 delta55vh3;
209 REAL8 delta55v5;
210 REAL8 rho55v2;
211 REAL8 rho55v3;
212 REAL8 rho55v4;
213 REAL8 rho55v5;
214 REAL8 rho55v6;
215
216 REAL8 delta54vh3;
217 REAL8 delta54vh4;
218 REAL8 rho54v2;
219 REAL8 rho54v3;
220 REAL8 rho54v4;
221
222 REAL8 delta53vh3;
223 REAL8 rho53v2;
224 REAL8 rho53v3;
225 REAL8 rho53v4;
226 REAL8 rho53v5;
227
228 REAL8 delta52vh3;
229 REAL8 delta52vh4;
230 REAL8 rho52v2;
231 REAL8 rho52v3;
232 REAL8 rho52v4;
233
234 REAL8 delta51vh3;
235 REAL8 rho51v2;
236 REAL8 rho51v3;
237 REAL8 rho51v4;
238 REAL8 rho51v5;
239
240 REAL8 delta66vh3;
241 REAL8 rho66v2;
242 REAL8 rho66v3;
243 REAL8 rho66v4;
244
245 REAL8 delta65vh3;
246 REAL8 rho65v2;
247 REAL8 rho65v3;
248
249 REAL8 delta64vh3;
250 REAL8 rho64v2;
251 REAL8 rho64v3;
252 REAL8 rho64v4;
253
254 REAL8 delta63vh3;
255 REAL8 rho63v2;
256 REAL8 rho63v3;
257
258 REAL8 delta62vh3;
259 REAL8 rho62v2;
260 REAL8 rho62v3;
261 REAL8 rho62v4;
262
263 REAL8 delta61vh3;
264 REAL8 rho61v2;
265 REAL8 rho61v3;
266
267 REAL8 delta77vh3;
268 REAL8 rho77v2;
269 REAL8 rho77v3;
270
271 REAL8 rho76v2;
272
273 REAL8 delta75vh3;
274 REAL8 rho75v2;
275 REAL8 rho75v3;
276
277 REAL8 rho74v2;
278
279 REAL8 delta73vh3;
280 REAL8 rho73v2;
281 REAL8 rho73v3;
282
283 REAL8 rho72v2;
284
285 REAL8 delta71vh3;
286 REAL8 rho71v2;
287 REAL8 rho71v3;
288
289 REAL8 rho88v2;
290 REAL8 rho87v2;
291 REAL8 rho86v2;
292 REAL8 rho85v2;
293 REAL8 rho84v2;
294 REAL8 rho83v2;
295 REAL8 rho82v2;
296 REAL8 rho81v2;
297}
299
300/**
301 * Structure containing all the terms of the Newtonian multipole which
302 * are constant over the course of the evolution, and can therefore be
303 * pre-computed. They are stored in a two-dimensional array, which is
304 * indexed as values[l][m]. Since m has to be <= l, this structure
305 * is larger than it needs to be; but it makes the coding a bit neater...
306 */
307typedef
308struct tagNewtonMultipolePrefixes
309{
311}
313
314/**
315 * Structure containing all the parameters needed for the EOB waveform.
316 * It contains eta, the pre-computed parameters for the A potential function,
317 * and the pre-computed parameters for the factorized waveform
318 */
319typedef
320struct tagEOBParams
321{
322 REAL8 eta;
323 REAL8 omega;
324 REAL8 m1;
325 REAL8 m2;
326 EOBACoefficients *aCoeffs;
327 FacWaveformCoeffs *hCoeffs;
328 EOBNonQCCoeffs *nqcCoeffs;
329 NewtonMultipolePrefixes *prefixes;
330}
332
333
334/*---------------------------------------------------------------- */
335/* Functions used in calculating the Newtonian multipolar waveform */
336/* Defined in Damour et al Phys.Rev.D79:064004,2009 */
337int
339 COMPLEX16 *multipole,
340 REAL8 x,
341 REAL8 r,
342 REAL8 phi,
343 UINT4 l,
344 INT4 m,
346 );
347
348REAL8
350 REAL8Vector *values,
351 const REAL8 omega,
352 EOBParams *ak,
353 const INT4 lMax
354 );
355
356INT4
358 COMPLEX16 *hlm,
359 REAL8Vector *values,
360 const REAL8 v,
361 const INT4 l,
362 const INT4 m,
364 );
365
367 INT4 l,
368 INT4 m,
369 REAL8 eta
370 );
371
373 COMPLEX16 * _LAL_RESTRICT_ nqc,
374 REAL8Vector * _LAL_RESTRICT_ values,
375 const REAL8 omega,
376 EOBNonQCCoeffs * _LAL_RESTRICT_ coeffs
377 );
378
380 REAL8Vector * _LAL_RESTRICT_ amplitude,
381 REAL8Vector * _LAL_RESTRICT_ phase,
382 REAL8Vector * _LAL_RESTRICT_ q1,
383 REAL8Vector * _LAL_RESTRICT_ q2,
384 REAL8Vector * _LAL_RESTRICT_ q3,
385 REAL8Vector * _LAL_RESTRICT_ p1,
386 REAL8Vector * _LAL_RESTRICT_ p2,
387 INT4 l,
388 INT4 m,
389 REAL8 timePeak,
390 REAL8 deltaT,
391 REAL8 eta,
392 EOBNonQCCoeffs * _LAL_RESTRICT_ coeffs );
393
395
397 FacWaveformCoeffs * const coeffs,
398 const REAL8 eta
399 );
400
402 FacWaveformCoeffs * const coeffs,
403 const REAL8 eta
404 );
405
408 const REAL8 m1,
409 const REAL8 m2 );
410
411/** @} */ /* end:LALEOBNRv2Waveform_h */
412
413#ifdef __cplusplus
414}
415#endif
416
417#endif /* _LALEOBNR_H */
#define LALEOB_MAX_MULTIPOLE
double complex COMPLEX16
double REAL8
uint32_t UINT4
int32_t INT4
int XLALModifyFacWaveformCoefficients(FacWaveformCoeffs *const coeffs, const REAL8 eta)
REAL8 XLALGetNRPeakDeltaT(INT4 l, INT4 m, REAL8 eta)
More recent versions of the EOB model, such as EOBNR_v2, utilise a non-quasicircular correction to br...
int XLALCalculateNewtonianMultipole(COMPLEX16 *multipole, REAL8 x, REAL8 r, REAL8 phi, UINT4 l, INT4 m, EOBParams *params)
int XLALCalculateNQCCoefficients(REAL8Vector *_LAL_RESTRICT_ amplitude, REAL8Vector *_LAL_RESTRICT_ phase, REAL8Vector *_LAL_RESTRICT_ q1, REAL8Vector *_LAL_RESTRICT_ q2, REAL8Vector *_LAL_RESTRICT_ q3, REAL8Vector *_LAL_RESTRICT_ p1, REAL8Vector *_LAL_RESTRICT_ p2, INT4 l, INT4 m, REAL8 timePeak, REAL8 deltaT, REAL8 eta, EOBNonQCCoeffs *_LAL_RESTRICT_ coeffs)
int XLALGetCalibratedNQCCoeffs(EOBNonQCCoeffs *coeffs, INT4 l, INT4 m, REAL8 eta)
For the 2,2 mode, there are fits available for the NQC coefficients.
int XLALCalcFacWaveformCoefficients(FacWaveformCoeffs *const coeffs, const REAL8 eta)
The functions contained within this file pre-compute the various coefficients which are required for ...
REAL8 XLALInspiralFactorizedFlux(REAL8Vector *values, const REAL8 omega, EOBParams *ak, const INT4 lMax)
Function to compute the factorized flux as uses in the new EOBNR_PP model. Flux function given by Phy...
int XLALComputeNewtonMultipolePrefixes(NewtonMultipolePrefixes *prefix, const REAL8 m1, const REAL8 m2)
int XLALEOBNonQCCorrection(COMPLEX16 *_LAL_RESTRICT_ nqc, REAL8Vector *_LAL_RESTRICT_ values, const REAL8 omega, EOBNonQCCoeffs *_LAL_RESTRICT_ coeffs)
INT4 XLALGetFactorizedWaveform(COMPLEX16 *hlm, REAL8Vector *values, const REAL8 v, const INT4 l, const INT4 m, EOBParams *params)
static const INT4 r
static const INT4 m