LALSimulation  5.4.0.1-fe68b98
LALSimIMREOBNRv2.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 /**
22  * \author Craig Robinson, Andrea Taracchini
23  *
24  * \brief File containing most of the structures and prototypes which are
25  * used in the generation of the EOBNRv2 waveform. These structures and
26  * prototypes are used internally within the waveform generation code,
27  * and shouldn't be needed to generate the waveforms from outside the
28  * library. Therefore, people generating EOBNRv2 waveforms should only
29  * need to include LALSimIMR.h.
30  */
31 
32 #include <lal/LALConstants.h>
33 #include <lal/LALSimIMR.h>
34 #include <lal/LALSimInspiral.h>
35 
36 #ifndef _LALSIMIMREOBNRv2_H
37 #define _LALSIMIMREOBNRv2_H
38 
39 #if defined(__cplusplus)
40 extern "C"
41 {
42 #elif 0
43 } /* so that editors will match preceding brace */
44 #endif
45 
46 /**
47  * The maximum possible l we have
48  */
49 #define LALEOB_MAX_MULTIPOLE 8
50 
51 /**
52  * Tidal parameters for EOB model of NS:
53  * mByM - dimensionless ratio m_{NS}/M
54  * lambda2Tidal - dimensionless adiabatic quadrupole tidal deformability normalized by total mass (2/3 k_2 (R_{NS}/M)^5)
55  * omega02Tidal - quadrupole f-mode angular freq m_{NS}*omega_{02}
56  * lambda3Tidal - dimensionless adiabatic octupole tidal deformability normalized by total mass (2/15 k_3 (R_{NS}/M)^7)
57  * omega03Tidal - octupole f-mode angular freq m_{NS}*omega_{03}
58  */
59 typedef struct tagTidalEOBParams
60 {
67 }
69 
70 /**
71  * Structure containing the coefficients for EOBNRv2 A potential function.
72  * The elements in the structure are labelled as follows:
73  * aN, where a is denotes whether the parameter is in the numerator (n)
74  * or denominator (d); and N is the power of r which will multiply this
75  * coefficient. For example, the coefficient of r^5 in the numerator
76  * will be called n5.
77  */
78 typedef struct tagEOBACoefficients
79 {
88 }
90 
91 /**
92  * Structure containing the coefficients for calculating the factorized
93  * waveform. The coefficients are precomputed in the function
94  * XLALCalcFacWaveformCoefficients()
95  */
96 typedef struct tagFacWaveformCoeffs
97 {
107 
125 
134 
155 
164 
171 
187 
194 
201 
217 
225 
239 
242 
248 
263 
268 
277 
280 
284 
295 
300 
309 
312 
316 
334 
335 
344 
353 
362 
371 
378 
383 
390 
395 
402 
407 
412 
414 
419 
421 
426 
428 
433 
442 
445 }
447 
448 /**
449  * Structure containing all the terms of the Newtonian multipole which
450  * are constant over the course of the evolution, and can therefore be
451  * pre-computed. They are stored in a two-dimensional array, which is
452  * indexed as values[l][m]. Since m has to be <= l, this structure
453  * is larger than it needs to be; but it makes the coding a bit neater...
454  */
455 typedef struct tagNewtonMultipolePrefixes
456 {
458 }
460 
461 /**
462  * The coefficients which are used in calculating the non-quasicircular
463  * correction to the EOBNRv2 model. The precise definitions of these
464  * coefficients and their use can be found in DCC document T1100433.
465  */
466 typedef struct tagEOBNonQCCoeffs
467 {
479 
480 /**
481  * Structure containing all the parameters needed for the EOB waveform.
482  * It contains eta, the pre-computed parameters for the A potential function,
483  * and the pre-computed parameters for the factorized waveform
484  */
485 
486 typedef struct tagEOBParams
487 {
500 }
501 EOBParams;
502 
503 /**
504  * Structure containing parameters used to determine
505  * r as a function of omega. Since this is determined within
506  * a root finding function, it is necessary to place all parameters
507  * with the exception of the current guess of the radius within
508  * a structure.
509  */
510 typedef struct tagrOfOmegaIn
511 {
512  REAL8 eta; /**<< Symmetric mass ratio */
513  REAL8 omega; /**<< Angular frequency (dimensionless combination M omega) */
514 } rOfOmegaIn;
515 
516 
517 /**
518  * Structure containing parameters used to determine the initial radial
519  * momentum. Since this is determined within a root finding function,
520  * it is necessary to place all parameters with the exception of the
521  * current guess of the radial momentum within a structure.
522  */
523 typedef struct tagPr3In
524 {
525  REAL8 eta; /**<< Symmetric mass ratio */
526  REAL8 omega; /**<< Angular frequency (dimensionless combination M omega) */
527  REAL8 vr; /**<< Radial velocity (dimensionless) */
528  REAL8 r; /**<< Orbital separation (units of total mass) */
529  REAL8 q; /**<< Momentum pphi */
530  EOBACoefficients *aCoeffs; /**<< Pre-computed coefficients of EOB A function */
531 
532 } pr3In;
533 
534 
535 #ifdef __GNUC__
536 #define UNUSED __attribute__ ((unused))
537 #else
538 #define UNUSED
539 #endif
540 
542  TidalEOBParams *tidal1, /**< Tidal parameters of body 1 */
543  TidalEOBParams *tidal2 /**< Tidal parameters of body 2 */
544 );
545 
546 /**
547  * Structure to represent a data piece (e.g. a mode hlm), either in frequency or time
548  * with complex amplitude (enveloppe) and phase.
549  * The mode values are camp * exp(I*phase)
550  */
551 typedef struct tagCAmpPhaseSequence {
552  REAL8Vector* xdata; /**< Sequence of times or frequencies on which data is given. */
553  REAL8Vector* camp_real; /**< Sequence for the real part of the complex amplitude (enveloppe). */
554  REAL8Vector* camp_imag; /**< Sequence for the imag part of the complex amplitude (enveloppe). */
555  REAL8Vector* phase; /**< Sequence for the phase. */
557 
558 /**
559  * Structure to represent linked list of modes
560  * with complex amplitude (enveloppe) and phase.
561  */
562 typedef struct tagSphHarmListCAmpPhaseSequence {
563  CAmpPhaseSequence* campphase; /**< Data for this mode. */
564  UINT4 l; /**< Mode number l. */
565  INT4 m; /**< Mode number m. */
566  struct tagSphHarmListCAmpPhaseSequence* next; /**< Pointer to next element in the list. */
568 
569 /**
570  * Structure to represent linked list of modes
571  * with complex amplitude (enveloppe) and phase.
572  */
573 typedef struct tagSphHarmListEOBNonQCCoeffs {
574  EOBNonQCCoeffs* nqcCoeffs; /**< NQC coefficients for this mode. */
575  UINT4 l; /**< Mode number l. */
576  INT4 m; /**< Mode number m. */
577  struct tagSphHarmListEOBNonQCCoeffs* next; /**< Pointer to next element in the list. */
579 
580 /**
581  * Structure the EOB dynamics for precessing waveforms.
582  */
583 typedef struct tagSEOBdynamics {
586 
588 
592 
596 
600 
604 
607 
611 
616 
618 
621 
623 
624 } SEOBdynamics;
625 
626 #if 0
627 { /* so that editors will match succeeding brace */
628 #elif defined(__cplusplus)
629 }
630 #endif
631 
632 #endif /* _LALSIMIMREOBNRv2_H */
UNUSED REAL8 XLALSimNSNSMergerFreq(TidalEOBParams *tidal1, TidalEOBParams *tidal2)
NR fit to the geometric GW frequency M_{total}omega_{22} of a BNS merger, defined by the time when th...
#define LALEOB_MAX_MULTIPOLE
File containing most of the structures and prototypes which are used in the generation of the EOBNRv2...
double complex COMPLEX16
double REAL8
uint32_t UINT4
int32_t INT4
Structure to represent a data piece (e.g.
REAL8Vector * xdata
Sequence of times or frequencies on which data is given.
REAL8Vector * phase
Sequence for the phase.
REAL8Vector * camp_imag
Sequence for the imag part of the complex amplitude (enveloppe).
REAL8Vector * camp_real
Sequence for the real part of the complex amplitude (enveloppe).
Structure containing the coefficients for EOBNRv2 A potential function.
The coefficients which are used in calculating the non-quasicircular correction to the EOBNRv2 model.
Structure containing all the parameters needed for the EOB waveform.
EOBNonQCCoeffs * nqcCoeffs
FacWaveformCoeffs * hCoeffs
NewtonMultipolePrefixes * prefixes
EOBACoefficients * aCoeffs
Structure containing the coefficients for calculating the factorized waveform.
TidalEOBParams * tidal2
TidalEOBParams * tidal1
Structure containing all the terms of the Newtonian multipole which are constant over the course of t...
Structure the EOB dynamics for precessing waveforms.
REAL8Array * array
REAL8 * polarpphiVec
Structure to represent linked list of modes with complex amplitude (enveloppe) and phase.
struct tagSphHarmListCAmpPhaseSequence * next
Pointer to next element in the list.
CAmpPhaseSequence * campphase
Data for this mode.
Structure to represent linked list of modes with complex amplitude (enveloppe) and phase.
EOBNonQCCoeffs * nqcCoeffs
NQC coefficients for this mode.
struct tagSphHarmListEOBNonQCCoeffs * next
Pointer to next element in the list.
Tidal parameters for EOB model of NS: mByM - dimensionless ratio m_{NS}/M lambda2Tidal - dimensionles...
Structure containing parameters used to determine the initial radial momentum.
REAL8 vr
< Radial velocity (dimensionless)
EOBACoefficients * aCoeffs
< Pre-computed coefficients of EOB A function
REAL8 eta
< Symmetric mass ratio
REAL8 r
< Orbital separation (units of total mass)
REAL8 omega
< Angular frequency (dimensionless combination M omega)
REAL8 q
< Momentum pphi
Structure containing parameters used to determine r as a function of omega.
REAL8 eta
< Symmetric mass ratio
REAL8 omega
< Angular frequency (dimensionless combination M omega)