51 const REAL8 eta = m1 * m2 / (
M *
M);
53 const REAL8 eta2 = eta*eta;
54 const REAL8 chisum = chi + chi;
55 const REAL8 chiprod = chi * chi;
56 const REAL8 chi2 = chi * chi;
63 p->pfaN = 3.0/(128.0 * eta);
65 p->pfa2 = (3715./756.) + (55.*eta/9.0);
66 p->pfa3 = -16.0*
LAL_PI + (113./3.)*chi - 38.*eta*chisum/3.;
67 p->pfa4 = (152.93365/5.08032) - 50.*chi2 + eta*(271.45/5.04 + 1.25*chiprod) +
69 p->pfa5 =
LAL_PI*(386.45/7.56 - 65.*eta/9.) -
70 chi*(735.505/2.268 + 130.*eta/9.) + chisum*(1285.0*eta/8.1 + 170.*eta2/9.) -
71 10.*chi2*chi/3. + 10.*eta*chi*chiprod;
72 p->pfa6 = 11583.231236531/4.694215680 - 640.0*
LAL_PI*
LAL_PI/3. -
73 6848.0*
LAL_GAMMA/21. - 684.8*log(64.)/6.3 +
75 76.055*eta2/1.728 - (127.825*eta2*eta/1.296) +
76 2920.*
LAL_PI*chi/3. - (175. - 1490.*eta)*chi2/3. -
77 (1120.*
LAL_PI/3. - 1085.*chi/3.)*eta*chisum +
78 (269.45*eta/3.36 - 2365.*eta2/6.)*chiprod;
80 p->pfa6log = -6848./63.;
82 p->pfa7 =
LAL_PI*(770.96675/2.54016 + 378.515*eta/1.512 - 740.45*eta2/7.56) -
83 chi*(20373.952415/3.048192 + 1509.35*eta/2.24 - 5786.95*eta2/4.32) +
84 chisum*(4862.041225*eta/1.524096 + 1189.775*eta2/1.008 - 717.05*eta2*eta/2.16 - 830.*eta*chi2/3. + 35.*eta2*chiprod/3.) -
86 chi2*chi*(945.55/1.68 - 85.*eta) + chi*chiprod*(396.65*eta/1.68 + 255.*eta2);
99 p->xdotaN = 64.*eta/5.;
100 p->xdota2 = -7.43/3.36 - 11.*eta/4.;
101 p->xdota3 = 4.*
LAL_PI - 11.3*chi/1.2 + 19.*eta*chisum/6.;
102 p->xdota4 = 3.4103/1.8144 + 5*chi2 + eta*(13.661/2.016 - chiprod/8.) + 5.9*eta2/1.8;
103 p->xdota5 = -
LAL_PI*(41.59/6.72 + 189.*eta/8.) - chi*(31.571/1.008 - 116.5*eta/2.4) +
104 chisum*(21.863*eta/1.008 - 79.*eta2/6.) - 3*chi*chi2/4. +
105 9.*eta*chi*chiprod/4.;
106 p->xdota6 = 164.47322263/1.39708800 - 17.12*
LAL_GAMMA/1.05 +
109 5.41*eta2/8.96 - 5.605*eta*eta2/2.592 - 80.*
LAL_PI*chi/3. +
110 eta*chisum*(20.*
LAL_PI/3. - 113.5*chi/3.6) +
111 chi2*(64.153/1.008 - 45.7*eta/3.6) -
112 chiprod*(7.87*eta/1.44 - 30.37*eta2/1.44);
114 p->xdota6log = -856./105.;
116 p->xdota7 = -
LAL_PI*(4.415/4.032 - 358.675*eta/6.048 - 91.495*eta2/1.512) -
117 chi*(252.9407/2.7216 - 845.827*eta/6.048 + 415.51*eta2/8.64) +
118 chisum*(158.0239*eta/5.4432 - 451.597*eta2/6.048 + 20.45*eta2*eta/4.32 + 107.*eta*chi2/6. - 5.*eta2*chiprod/24.) +
119 12.*
LAL_PI*chi2 - chi2*chi*(150.5/2.4 + eta/8.) +
120 chi*chiprod*(10.1*eta/2.4 + 3.*eta2/8.);
124 p->AN = 8.*eta*sqrt(
LAL_PI/5.);
125 p->A2 = (-107. + 55.*eta)/42.;
126 p->A3 = 2.*
LAL_PI - 4.*chi/3. + 2.*eta*chisum/3.;
127 p->A4 = -2.173/1.512 - eta*(10.69/2.16 - 2.*chiprod) + 2.047*eta2/1.512;
130 p->A5imag = -24.*eta;
132 p->A6 = 270.27409/6.46800 - 8.56*
LAL_GAMMA/1.05 +
135 20.261*eta2/2.772 + 11.4635*eta*eta2/9.9792 -
138 p->A6log = -428./105.;
156 LALDict *extraParams)
164 const REAL8 eta = m1 * m2 / (
M *
M);
166 const REAL8 z101 = -2.417e-03;
167 const REAL8 z102 = -1.093e-03;
168 const REAL8 z111 = -1.917e-02;
169 const REAL8 z110 = 7.267e-02;
170 const REAL8 z120 = -2.504e-01;
172 const REAL8 z201 = 5.962e-01;
173 const REAL8 z202 = -5.600e-02;
174 const REAL8 z211 = 1.520e-01;
175 const REAL8 z210 = -2.970e+00;
176 const REAL8 z220 = 1.312e+01;
178 const REAL8 z301 = -3.283e+01;
179 const REAL8 z302 = 8.859e+00;
180 const REAL8 z311 = 2.931e+01;
181 const REAL8 z310 = 7.954e+01;
182 const REAL8 z320 = -4.349e+02;
184 const REAL8 z401 = 1.619e+02;
185 const REAL8 z402 = -4.702e+01;
186 const REAL8 z411 = -1.751e+02;
187 const REAL8 z410 = -3.225e+02;
188 const REAL8 z420 = 1.587e+03;
190 const REAL8 z501 = -6.320e+02;
191 const REAL8 z502 = 2.463e+02;
192 const REAL8 z511 = 1.048e+03;
193 const REAL8 z510 = 3.355e+02;
194 const REAL8 z520 = -5.115e+03;
196 const REAL8 z601 = -4.809e+01;
197 const REAL8 z602 = -3.643e+02;
198 const REAL8 z611 = -5.215e+02;
199 const REAL8 z610 = 1.870e+03;
200 const REAL8 z620 = 7.354e+02;
202 const REAL8 z701 = 4.149e+00;
203 const REAL8 z702 = -4.070e+00;
204 const REAL8 z711 = -8.752e+01;
205 const REAL8 z710 = -4.897e+01;
206 const REAL8 z720 = 6.665e+02;
208 const REAL8 z801 = -5.472e-02;
209 const REAL8 z802 = 2.094e-02;
210 const REAL8 z811 = 3.554e-01;
211 const REAL8 z810 = 1.151e-01;
212 const REAL8 z820 = 9.640e-01;
214 const REAL8 z901 = -1.235e+00;
215 const REAL8 z902 = 3.423e-01;
216 const REAL8 z911 = 6.062e+00;
217 const REAL8 z910 = 5.949e+00;
218 const REAL8 z920 = -1.069e+01;
221 REAL8 eta2 = eta*eta;
222 REAL8 chi2 = chi*chi;
223 REAL8 etachi = eta * chi;
225 p->a1 = z101 * chi + z102 * chi2 + z111 * eta * chi + z110 * eta + z120 * eta2;
226 p->a2 = z201 * chi + z202 * chi2 + z211 * eta * chi + z210 * eta + z220 * eta2;
227 p->a3 = z301 * chi + z302 * chi2 + z311 * eta * chi + z310 * eta + z320 * eta2;
228 p->a4 = z401 * chi + z402 * chi2 + z411 * eta * chi + z410 * eta + z420 * eta2;
229 p->a5 = z501 * chi + z502 * chi2 + z511 * eta * chi + z510 * eta + z520 * eta2;
230 p->a6 = z601 * chi + z602 * chi2 + z611 * eta * chi + z610 * eta + z620 * eta2;
232 p->g1 = z701 * chi + z702 * chi2 + z711 * eta * chi + z710 * eta + z720 * eta2;
234 p->del1 = z801 * chi + z802 * chi2 + z811 * eta * chi + z810 * eta + z820 * eta2;
235 p->del2 = z901 * chi + z902 * chi2 + z911 * eta * chi + z910 * eta + z920 * eta2;
237 if (extraParams!=NULL)
253 REAL8 finspin = chi + s4*chi*etachi + s5*etachi*eta + t0*etachi + 2.*sqrt(3.)*eta +
254 t2*eta2 + t3*eta2*eta;
256 if( fabs(finspin) > 1.0 )
268 p->fRingDown = (prefac * (
k1 +
k2 * pow(1. - fabs(finspin),
k3)));
269 p->MfRingDown =
p->m_sec *
p->fRingDown;
272 p->Qual = (0.7000 + (1.4187 * pow(1.0 - fabs(finspin), -0.4990)) );;
276 p->f1 = 0.1 *
p->fRingDown;
277 p->f2 =
p->fRingDown;
278 p->f0 = 0.98 *
p->fRingDown;
284 REAL8 Mfrd =
p->MfRingDown;
286 p->b2 = ((-5./3.)*
p->a1 * pow(Mfrd,(-8./3.)) -
p->a2/(Mfrd*Mfrd) -
287 (
p->a3/3.)*pow(Mfrd,(-4./3.)) + (2./3.)*
p->a5 * pow(Mfrd,(-1./3.)) +
p->a6)/eta;
291 p->b1 = psiPMrd - (
p->b2 * Mfrd);
295 p->fCut = 0.15 /
p->m_sec;
311 return ( 0.5 * (1. + tanh(4.*(Mf - Mf0)/
d) ) );
325 return ( 0.5 * (1. - tanh(4.*(Mf - Mf0)/
d) ) );
333 return 1 << (size_t) ceil(log2(n));
354 REAL8 w = pow( Mf, (1./3.) );
403 phSPA *= (
params->pfaN / v5);
426 *phasing = phSPA * wMinusf1 + phPM * wPlusf1 * wMinusf2 + phRD * wPlusf2;
432 xdot *= (
params->xdotaN * v10);
434 if( xdot < 0.0 && f < params->f1 )
436 XLALPrintError(
"omegaDot < 0, while frequency is below SPA-PM matching freq.");
444 REAL8 omgdot = 1.5*v*xdot;
454 aPM = sqrt( AmpPMre * AmpPMre + AmpPMim * AmpPMim );
456 aPM += (
params->g1 * pow(Mf,(5./6.)));
463 REAL8 sig2 = sig*sig;
464 REAL8 L = sig2 / ((Mf - Mfrd)*(Mf - Mfrd) + sig2/4.);
471 *amplitude = - (aPM * wMinusf0 + aRD * wPlusf0);
550 xdot *= (
params->xdotaN * v10);
552 if( xdot < 0.0 && f < params->fRingDown )
554 XLALPrintError(
"omegaDot < 0, while frequency is below RingDown freq.");
558 REAL8 amplitude = 0.0;
561 REAL8 omgdot = 1.5*v*xdot;
562 REAL8 ampfac = sqrt(LAL_PI/omgdot);
571 amplitude = sqrt( AmpPMre * AmpPMre + AmpPMim * AmpPMim );
574 amplitude += (
params->g1 * pow(Mf,(5./6.)));
586 REAL8 sig2 = sig*sig;
587 REAL8 L = sig2 / ((Mf - Mfrd)*(Mf - Mfrd) + sig2/4.);
589 REAL8 amplitude =
params->del1 * L * pow(Mf, (-7./6.));
static size_t NextPow2_PC(const size_t n)
static int IMRPhenomCGenerateAmpPhase(REAL8 *amplitude, REAL8 *phasing, REAL8 f, REAL8 eta, const BBHPhenomCParams *params)
static REAL8 IMRPhenomCGeneratePhasePM(REAL8 f, REAL8 eta, const BBHPhenomCParams *params)
main functions
static REAL8 wPlus(const REAL8 f, const REAL8 f0, const REAL8 d, const BBHPhenomCParams *params)
static BBHPhenomCParams * ComputeIMRPhenomCParamsSPA(const REAL8 m1, const REAL8 m2, const REAL8 chi, LALDict *extraParams)
Internal functions.
static REAL8 wMinus(const REAL8 f, const REAL8 f0, const REAL8 d, const BBHPhenomCParams *params)
static BBHPhenomCParams * ComputeIMRPhenomCParams(const REAL8 m1, const REAL8 m2, const REAL8 chi, LALDict *extraParams)
static vector d(const double L_norm, const double J_norm, const vector roots)
Internal function that returns the coefficients "d_0", "d_2" and "d_4" from 1703.03967 corresponding ...
void * XLALMalloc(size_t n)
#define XLAL_ERROR_NULL(...)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1