LALSimulation  5.4.0.1-fe68b98
LALSimBlackHoleRingdown.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2011 J. Creighton
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 #ifndef _LALSIMBLACKHOLERINGDOWN_H
21 #define _LALSIMBLACKHOLERINGDOWN_H
22 
23 #include <lal/LALDatatypes.h>
24 #include <lal/LALSimInspiral.h>
25 #include <gsl/gsl_linalg.h>
26 #include <gsl/gsl_interp.h>
27 #include <gsl/gsl_spline.h>
28 
29 #if defined(__cplusplus)
30 extern "C" {
31 #elif 0
32 } /* so that editors will match preceding brace */
33 #endif
34 
35 
36 /**
37  * @author Jolien Creighton
38  * @addtogroup LALSimBlackHoleRingdown_h Header LALSimBlackHoleRingdown.h
39  * @ingroup lalsimulation_inspiral
40  * @brief Routines to generate black hole ringdown waveforms.
41  * @details
42  * These routines generate black hole quasinormal modes, spin-weighted
43  * spheroidal harmonics, and ringdown gravitational waveforms.
44  */
45 
46 /* LOW-LEVEL ROUTINES (USE LEAVER'S CONVENSIONS G = c = 2M = 1) */
47 
48 int XLALSimBlackHoleRingdownModeEigenvaluesLeaver(COMPLEX16 *A, COMPLEX16 *omega, double a, int l, int m, int s
49 );
50 COMPLEX16 XLALSimBlackHoleRingdownSpheroidalWaveFunctionLeaver(double mu, double a, int l, int m, int s, COMPLEX16 A, COMPLEX16 omega);
51 
52 
53 /* HIGH-LEVEL ROUTINES */
54 
55 int XLALSimBlackHoleRingdownMode(double *frequency, double *quality, double mass, double dimensionless_spin, int l, int m, int s);
56 COMPLEX16 XLALSimBlackHoleRingdownSpheroidalWaveFunction(double theta, double dimensionless_spin, int l, int m, int s);
57 int XLALSimBlackHoleRingdown(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const LIGOTimeGPS *t0, double phi0, double deltaT, double mass, double dimensionless_spin, double fractional_mass_loss, double distance, double inclination, int l, int m);
58 INT4 XLALSimIMREOBFinalMassSpin(REAL8 *finalMass, REAL8 *finalSpin, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], Approximant approximant);
59 INT4 XLALSimIMREOBGenerateQNMFreqV2(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant);
60 INT4 XLALSimIMREOBGenerateQNMFreqV2fromFinal(COMPLEX16Vector *modefreqs, const REAL8 finalMass, const REAL8 finalSpin, UINT4 l, INT4 m, UINT4 nmodes);
61 INT4 XLALSimIMREOBGenerateQNMFreqV5(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant);
62 INT4 XLALSimIMREOBGenerateQNMFreqV5fromFinal(COMPLEX16Vector *modefreqs, const REAL8 finalMass, const REAL8 finalSpin, UINT4 l, INT4 m, UINT4 nmodes);
63 
67 
68 /* Constants entering the final mass formulas of SEOBNRv2,4 */
69 /* See http://arxiv.org/pdf/1206.3803.pdf */
70 static const REAL8 p0coeff = 0.04826;
71 static const REAL8 p1coeff = 0.01559;
72 static const REAL8 p2coeff = 0.00485;
73 /* See http://arxiv.org/pdf/0904.2577.pdf */
74 static const REAL8 t0coeff = -2.8904;
75 static const REAL8 t2coeff = -3.5171;
76 static const REAL8 t3coeff = 2.5763;
77 static const REAL8 s4coeff = -0.1229;
78 static const REAL8 s5coeff = 0.4537;
79 /* See https://dcc.ligo.org/T1400476 */
80 static const REAL8 s9coeff = 2.763032781169752;
81 static const REAL8 s8coeff = -2.6081232221537394;
82 static const REAL8 s7coeff = 1.2657111864932808;
83 static const REAL8 s6coeff = -0.7835007857591175;
84 static const REAL8 s5v2coeff = -0.3264724801557159;
85 static const REAL8 s4v2coeff = -0.27506210736300474;
86 static const REAL8 t0v2coeff = -2.649826989941522;
87 static const REAL8 t3v2coeff = 3.910637513328723;
88 static const REAL8 t2v2coeff = -3.850983155206041;
89 
90 /* Constants entering the final spin formulas of SEOBNRv4 */
91 /* Table I of https://arxiv.org/pdf/1605.01938v2.pdf */
92 static const REAL8 k00 = -5.977230835551017; // Solving Eq.(11) of https://arxiv.org/pdf/1605.01938v2.pdf
93 static const REAL8 k01 = 3.39221;
94 static const REAL8 k02 = 4.48865;
95 static const REAL8 k03 = -5.77101;
96 static const REAL8 k04 = -13.0459;
97 static const REAL8 k10 = 35.1278;
98 static const REAL8 k11 = -72.9336;
99 static const REAL8 k12 = -86.0036;
100 static const REAL8 k13 = 93.7371;
101 static const REAL8 k14 = 200.975;
102 static const REAL8 k20 = - 146.822;
103 static const REAL8 k21 = 387.184;
104 static const REAL8 k22 = 447.009;
105 static const REAL8 k23 = -467.383;
106 static const REAL8 k24 = -884.339;
107 static const REAL8 k30 = 223.911;
108 static const REAL8 k31 = -648.502;
109 static const REAL8 k32 = -697.177;
110 static const REAL8 k33 = 753.738;
111 static const REAL8 k34 = 1166.89;
112 
113 #if 0
114 { /* so that editors will match succeeding brace */
115 #elif defined(__cplusplus)
116 }
117 #endif
118 
119 #endif /* _LALSIMBLACKHOLERINGDOWN_H */
static const REAL8 k11
static const REAL8 s5coeff
static const REAL8 s4v2coeff
static const REAL8 t2v2coeff
INT4 XLALSimIMREOBGenerateQNMFreqV5(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant)
These functions generate the quasinormal mode frequencies for a black hole ringdown,...
static const REAL8 k12
static const REAL8 k04
static const REAL8 k01
static const REAL8 s7coeff
static const REAL8 t3v2coeff
static const REAL8 p1coeff
static const REAL8 k24
static const REAL8 k30
static const REAL8 t3coeff
static const REAL8 s5v2coeff
static const REAL8 k02
static const REAL8 t0coeff
static const REAL8 k31
static const REAL8 k32
static const REAL8 k13
static const REAL8 k14
static const REAL8 k34
static const REAL8 k33
static const REAL8 t2coeff
static const REAL8 k23
static const REAL8 k20
static const REAL8 s6coeff
static const REAL8 s8coeff
static const REAL8 k00
static const REAL8 k22
static const REAL8 s9coeff
static const REAL8 k21
static const REAL8 k03
static const REAL8 t0v2coeff
static const REAL8 p0coeff
static const REAL8 k10
INT4 XLALSimIMREOBGenerateQNMFreqV5fromFinal(COMPLEX16Vector *modefreqs, const REAL8 finalMass, const REAL8 finalSpin, UINT4 l, INT4 m, UINT4 nmodes)
static const REAL8 p2coeff
static const REAL8 s4coeff
int s
Definition: bh_qnmode.c:137
int l
Definition: bh_qnmode.c:135
double theta
Definition: bh_sphwf.c:118
double complex COMPLEX16
double REAL8
uint32_t UINT4
int32_t INT4
int XLALSimBlackHoleRingdownMode(double *frequency, double *quality, double mass, double dimensionless_spin, int l, int m, int s)
Computes the frequency and quality factor of a specified quasinormal mode (l,m) of spin weight s pert...
INT4 XLALSimIMREOBGenerateQNMFreqV2fromFinal(COMPLEX16Vector *modefreqs, const REAL8 finalMass, const REAL8 finalSpin, UINT4 l, INT4 m, UINT4 nmodes)
INT4 XLALSimIMREOBFinalMassSpin(REAL8 *finalMass, REAL8 *finalSpin, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], Approximant approximant)
Computes the final mass and spin of the black hole resulting from merger.
REAL8 XLALSimEnergyKerrISCO(REAL8 rISCO)
REAL8 XLALSimAngMomKerrISCO(REAL8 rISCO)
REAL8 XLALSimRadiusKerrISCO(REAL8 a)
int XLALSimBlackHoleRingdownModeEigenvaluesLeaver(COMPLEX16 *A, COMPLEX16 *omega, double a, int l, int m, int s)
Low-level routine that computes the black hole quasinormal mode eigenefrequency, omega,...
INT4 XLALSimIMREOBGenerateQNMFreqV2(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant)
These functions generate the quasinormal mode frequencies for a black hole ringdown.
COMPLEX16 XLALSimBlackHoleRingdownSpheroidalWaveFunctionLeaver(double mu, double a, int l, int m, int s, COMPLEX16 A, COMPLEX16 omega)
Low-level routine that evaluates the spheroidal wave function at a specified value of mu = cos(theta)...
COMPLEX16 XLALSimBlackHoleRingdownSpheroidalWaveFunction(double theta, double dimensionless_spin, int l, int m, int s)
Evaluates the value of spheroidal wave function at a given polar angle theta for a specified mode (l,...
int XLALSimBlackHoleRingdown(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const LIGOTimeGPS *t0, double phi0, double deltaT, double mass, double dimensionless_spin, double fractional_mass_loss, double distance, double inclination, int l, int m)
Computes the waveform for the ringdown of a black hole quasinormal mode (l,m).
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
static const INT4 m
static const INT4 a
double deltaT
Definition: unicorn.c:24