Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
merger.cc
Go to the documentation of this file.
1 #include "numpy.hh"
2 
3 static const double pi = 3.14159265358979312;
4 
5 
6 // Quasinormal ringdown of spin a BH (assuming M=1)
7 Complex ringdown(double a, double t)
8 { double fQNR = (1.0-0.63*pow(1.0-a,0.3))/(2.0*pi);
9  double Q = 2.0/pow(1.0-a,0.45);
10  return exp(-pi*fQNR*t/Q)*Exp(2*pi*fQNR*t);
11 }
12 
13 // IRS merger-ringdown, see http://arxiv.org/abs/0805.1428 and http://arxiv.org/abs/1107.1181
14 void irs_merger(double dt, double tmerge, double* tsig, Complex* hsig,
15 int lentsig, double a, double tstart=-1)
16 { if (tstart<0)tstart = tmerge;
17  double hmerge = fabs(hsig[int(tmerge/dt)]);
18  Complex& aux = hsig[int(tstart/dt)];
19  double phiIRS = 0.5*atan2(aux.Im(), aux.Re());
20  double omQNM = 1-0.63*pow(1-a, 0.3);
21  double Q = 2.0/pow(1.0-a, 0.45);
22  double b = 2.0*Q/omQNM;
23  //#kappa = 0.426
24  double kappa = 0.644;
25  //#c = 0.252
26  double c = 0.26;
27  //#c = 2.0*(1.0-2.0/omQNM/omega0)/((1.0+1.0/kappa)**(1+kappa)-(1.0+1.0/kappa))
28  double alpha = 72.3/(Q*Q);
29  double fhat = c/2.*( pow(1 + 1./kappa, 1+kappa) - (1+1./kappa) );
30 
31  double OmIRS = omQNM/2.0*(1.0-fhat);
32  double fdot = -c/b;
33  double Amppeak = sqrt(fabs(fdot)/(1+alpha*(fhat*fhat- pow(fhat,4))))/(2.0*OmIRS);
34 
35  for(int i=tstart/dt; i<lentsig; ++i){
36  double t = tsig[i]-tmerge;
37  fhat = c/2*pow(1+1./kappa,1+kappa)*( 1 - pow(1+exp(-2*t/b)/kappa, -kappa) );
38  OmIRS = omQNM/2*(1-fhat);
39  fdot = -c/b*pow(1+1./kappa,1+kappa)*pow(1+exp(-2*t/b)/kappa,-1.0-kappa)*exp(-2*t/b);
40  double Amp = hmerge*sqrt(fabs(fdot)/(1+alpha*(fhat*fhat-pow(fhat, 4))))/(2*OmIRS*Amppeak);
41  phiIRS += OmIRS*dt;
42  hsig[i] = Amp*Exp(2*phiIRS);
43  }
44 }
wavearray< double > t(hp.size())
double aux
Definition: testWDM_5.C:14
Complex ringdown(double a, double t)
Definition: merger.cc:7
wavearray< double > a(hp.size())
double Im() const
Definition: numpy.hh:15
Complex Exp(double phase)
Definition: numpy.cc:33
i drho i
double tstart
i() int(T_cor *100))
double dt
double fabs(const Complex &x)
Definition: numpy.cc:37
double Q
void irs_merger(double dt, double tmerge, double *tsig, Complex *hsig, int lentsig, double a, double tstart=-1)
Definition: merger.cc:14
static const double pi
Definition: merger.cc:3
Definition: numpy.hh:11
double Re() const
Definition: numpy.hh:14