31 #include <lal/LALSimIMR.h>
32 #include <lal/LALConstants.h>
34 #include <lal/Units.h>
37 #include <gsl/gsl_linalg.h>
38 #include <gsl/gsl_complex.h>
39 #include <gsl/gsl_complex_math.h>
40 #include <gsl/gsl_roots.h>
67 REAL8 m1, m2, chi1L, chi2L;
89 REAL8 q = ((m1 > m2) ? (m1 / m2) : (m2 / m1));
96 if(eta == 0.25)
q = 1.;
117 wf->
Shat = ((wf->
m1)*(wf->
m1)*chi1L + (wf->
m2)*(wf->
m2)*chi2L)/((wf->
m1)*(wf->
m1) + (wf->
m2)*(wf->
m2));
118 wf->
dchi = chi1L - chi2L;
131 if(fRef==0.0){wf->
fRef = fmin;}
233 pPhase->
omega1PN = 0.27641369047619047 + (11*eta)/32.;
237 pPhase->
omega2PN = (1855099 + 1714608*chi2L*chi2L*(-1 +
delta) - 1714608*chi1L*chi1L*(1 +
delta))/1.4450688e7 + ((56975 + 61236*chi1L*chi1L - 119448*chi1L*chi2L + 61236*chi2L*chi2L)*eta)/258048. + \
240 pPhase->
omega2halfPN = (-17*(chi1L + chi2L)*eta*eta)/128. + (-146597*(chi2L*(-1 +
delta) - chi1L*(1 +
delta)) - 46374*
LAL_PI)/129024. + (eta*(-2*(chi1L*(1213 - 63*
delta) + chi2L*(1213 + 63*
delta)) + \
243 pPhase->
omega3PN = -2.499258364444952 - (16928263*chi1L*chi1L)/1.376256e8 - (16928263*chi2L*chi2L)/1.376256e8 - (16928263*chi1L*chi1L*
delta)/1.376256e8 + (16928263*chi2L*chi2L*
delta)/1.376256e8 + \
244 ((-2318475 + 18767224*chi1L*chi1L - 54663952*chi1L*chi2L + 18767224*chi2L*chi2L)*eta*eta)/1.376256e8 + (235925*eta*eta*eta)/1.769472e6 + (107*
LAL_GAMMA)/280. - (6127*chi1L*
LAL_PI)/12800. - \
246 (eta*(632550449425 + 35200873512*chi1L*chi1L - 28527282000*chi1L*chi2L + 9605339856*chi1L*chi1L*
delta - 1512*chi2L*chi2L*(-23281001 + 6352738*
delta) + 34172264448*(chi1L + chi2L)*
LAL_PI - \
247 22912243200*
LAL_PI*
LAL_PI))/1.040449536e11 + (107*log(2))/280.;
249 pPhase->
omega3halfPN = (-12029*(chi1L + chi2L)*eta*eta*eta)/92160. + (eta*eta*(507654*chi1L*chi2L*chi2L - 838782*chi2L*chi2L*chi2L + chi2L*(-840149 + 507654*chi1L*chi1L - 870576*
delta) +
250 chi1L*(-840149 - 838782*chi1L*chi1L + 870576*
delta) + 1701228*
LAL_PI))/1.548288e7 +
251 (eta*(218532006*chi1L*chi2L*chi2L*(-1 +
delta) - 1134*chi2L*chi2L*chi2L*(-206917 + 71931*
delta) - chi2L*(1496368361 - 429508815*
delta + 218532006*chi1L*chi1L*(1 +
delta)) +
252 chi1L*(-1496368361 - 429508815*
delta + 1134*chi1L*chi1L*(206917 + 71931*
delta)) - 144*(488825 + 923076*chi1L*chi1L - 1782648*chi1L*chi2L + 923076*chi2L*chi2L)*
LAL_PI))/1.8579456e8 +
253 (-6579635551*chi2L*(-1 +
delta) + 535759434*chi2L*chi2L*chi2L*(-1 +
delta) - chi1L*(-6579635551 + 535759434*chi1L*chi1L)*(1 +
delta) +
254 (-565550067 - 465230304*chi2L*chi2L*(-1 +
delta) + 465230304*chi1L*chi1L*(1 +
delta))*
LAL_PI)/1.30056192e9;
281 REAL8 thetapoints[6] = {0.33,0.45,0.55,0.65,0.75,0.82};
283 REAL8 omegainsppoints[6];
288 REAL8 tEarly = -5.0/(eta*pow(thetapoints[0],8));
290 REAL8 thetaini = pow(eta*(tt0 - tEarly)/5,-1./8);
301 p = gsl_permutation_alloc(6);
302 b = gsl_vector_alloc(6);
303 x = gsl_vector_alloc(6);
304 A = gsl_matrix_alloc(6,6);
308 REAL8 theta, theta8, theta9, theta10, theta11, theta12, theta13, T3offset;
314 for (
UINT4 idx=0; idx<6; idx++)
317 theta = thetapoints[idx];
318 theta8 = pow(
theta,8);
319 theta9 =
theta*theta8;
320 theta10 =
theta*theta9;
321 theta11 =
theta*theta10;
322 theta12 =
theta*theta11;
323 theta13 =
theta*theta12;
327 gsl_vector_set(b,idx,(4/
theta/
theta/
theta)*(omegainsppoints[idx] - T3offset));
329 gsl_matrix_set(A,idx,0,theta8);
330 gsl_matrix_set(A,idx,1,theta9);
331 gsl_matrix_set(A,idx,2,theta10);
332 gsl_matrix_set(A,idx,3,theta11);
333 gsl_matrix_set(A,idx,4,theta12);
334 gsl_matrix_set(A,idx,5,theta13);
339 gsl_linalg_LU_decomp(A,
p,&
s);
340 gsl_linalg_LU_solve(A,
p,b,
x);
353 REAL8 tCut = -5.0/(eta*pow(0.81,8));
361 gsl_permutation_free(
p);
364 p = gsl_permutation_alloc(3);
365 b = gsl_vector_alloc(3);
366 x = gsl_vector_alloc(3);
367 A = gsl_matrix_alloc(3,3);
383 REAL8 tMerger22 = -5.0/(eta*pow(0.95,8));
393 REAL8 theta2 = pow(-eta*tCut/5.,-1./8);
394 REAL8 theta1 = pow(-eta*(tCut-0.0000001)/5,-1./8);
407 gsl_complex phi = gsl_complex_rect(pPhase->
alpha1RD*tCut,0);
408 gsl_complex arcsinhphi = gsl_complex_arcsinh(phi);
409 REAL8 ascut = GSL_REAL(arcsinhphi);
410 REAL8 ascut2 = ascut*ascut;
411 REAL8 ascut3 = ascut*ascut2;
412 REAL8 ascut4 = ascut*ascut3;
416 gsl_matrix_set(A,0,0,ascut2);
417 gsl_matrix_set(A,0,1,ascut3);
418 gsl_matrix_set(A,0,2,ascut4);
424 phi = gsl_complex_rect(pPhase->
alpha1RD*tMerger22,0);
425 arcsinhphi = gsl_complex_arcsinh(phi);
426 REAL8 as025cut = GSL_REAL(arcsinhphi);
427 REAL8 as025cut2 = as025cut*as025cut;
428 REAL8 as025cut3 = as025cut*as025cut2;
429 REAL8 as025cut4 = as025cut*as025cut3;
433 gsl_matrix_set(A,1,0,as025cut2);
434 gsl_matrix_set(A,1,1,as025cut3);
435 gsl_matrix_set(A,1,2,as025cut4);
443 gsl_matrix_set(A,2,0,2.0*pPhase->
alpha1RD*ascut/dencut);
444 gsl_matrix_set(A,2,1,3.0*pPhase->
alpha1RD*ascut2/dencut);
445 gsl_matrix_set(A,2,2,4.0*pPhase->
alpha1RD*ascut3/dencut);
447 gsl_vector_set(b,2,domegaCut - pPhase->
domegaPeak/dencut);
450 gsl_linalg_LU_decomp(A,
p,&
s);
451 gsl_linalg_LU_solve(A,
p,b,
x);
462 gsl_permutation_free(
p);
478 REAL8 thetabarini = pow(eta*(tt0 - tEarly),-1./8);
479 REAL8 thetabarini2 = pow(-eta*(tEarly),-1./8);
482 REAL8 thetabarCut = pow(-eta*tCut,-1./8);
502 const gsl_root_fsolver_type *solver_type;
503 gsl_root_fsolver *solver;
514 F.params = &frparams;
518 solver_type = gsl_root_fsolver_brent;
519 gsl_set_error_handler_off();
522 int status_solver = GSL_CONTINUE;
523 solver = gsl_root_fsolver_alloc(solver_type);
524 status = gsl_root_fsolver_set(solver, &F, -1000000000.0,
tEnd);
527 for (
UINT4 i = 1;
i <= 1000 && status_solver == GSL_CONTINUE; ++
i) {
529 status_solver = gsl_root_fsolver_iterate(solver);
530 if (status_solver != GSL_SUCCESS)
534 r = gsl_root_fsolver_root(solver);
535 double x_lo = gsl_root_fsolver_x_lower(solver);
536 double x_hi = gsl_root_fsolver_x_upper(solver);
539 status_solver = gsl_root_test_interval(x_lo, x_hi, 0, 0.0001);
544 gsl_root_fsolver_free(solver);
561 F.params = &frparams;
564 solver_type = gsl_root_fsolver_brent;
565 solver = gsl_root_fsolver_alloc(solver_type);
566 status = gsl_root_fsolver_set(solver, &F, -1000000000.0,
tEnd);
567 status_solver = GSL_CONTINUE;
569 for (
UINT4 i = 1;
i <= 1000 && status_solver == GSL_CONTINUE; ++
i) {
571 status_solver = gsl_root_fsolver_iterate(solver);
572 if (status_solver != GSL_SUCCESS)
576 r = gsl_root_fsolver_root(solver);
577 double x_lo = gsl_root_fsolver_x_lower(solver);
578 double x_hi = gsl_root_fsolver_x_upper(solver);
581 status_solver = gsl_root_test_interval(x_lo, x_hi, 0, 0.0001);
586 gsl_root_fsolver_free(solver);
601 else if(tCut<=pPhase->tmin)
649 REAL8 ampMergerCP1, ampPeak;
650 REAL8 ampRDC3, fDAMP, fDAMPn2, fDAMP_prec, fDAMPn2_prec, coshc3, tanhc3;
686 pAmp->
amp1PNreal = -2.5476190476190474 + (55*eta)/42.;
692 pAmp->
amp2PNreal = -1.437169312169312 + pow(chi1,2)/2. + pow(chi2,2)/2. + (pow(chi1,2)*
delta)/2. - (pow(chi2,2)*
delta)/2. - (1069*eta)/216. - pow(chi1,2)*eta + 2*chi1*chi2*eta - pow(chi2,2)*eta + (2047*pow(eta,2))/1512.;
698 pAmp->
amp3PNreal = 41.78634662956092 - (278185*eta)/33264. - (20261*pow(eta,2))/2772. + (114635*pow(eta,3))/99792. - (856*
LAL_GAMMA)/105. + (2*pow(
LAL_PI,2))/3. + (41*eta*pow(
LAL_PI,2))/96.;
707 else if (
l==2 &&
m==1)
752 else if (
l==3 &&
m==3)
783 pAmp->
amp2PNreal = -(-0.5822428156951114*chi1 + 0.5822428156951114*chi2 - 7.316679009572791*
delta - 0.5822428156951114*chi1*
delta - 0.5822428156951114*chi2*
delta + (1.3585665699552598*chi1)/((1 -
delta)/2. + (1 +
delta)/2.) - (1.3585665699552598*chi2)/((1 -
delta)/2. + (1 +
delta)/2.) + (1.3585665699552598*chi1*
delta)/((1 -
delta)/2. + (1 +
delta)/2.) + (1.3585665699552598*chi2*
delta)/((1 -
delta)/2. + (1 +
delta)/2.) + 1.7467284470853341*chi1*eta - 1.7467284470853341*chi2*eta + 1.7467284470853341*chi1*
delta*eta + 1.7467284470853341*chi2*
delta*eta - (5.434266279821039*chi1*eta)/((1 -
delta)/2. + (1 +
delta)/2.) + (5.434266279821039*chi2*eta)/((1 -
delta)/2. + (1 +
delta)/2.) - (2.7171331399105196*chi1*
delta*eta)/((1 -
delta)/2. + (1 +
delta)/2.) - (2.7171331399105196*chi2*
delta*eta)/((1 -
delta)/2. + (1 +
delta)/2.));
797 else if (
l==4 &&
m==4)
821 pAmp->
amp1PNreal = 0.751248226425348*(1 - 3*eta);
827 pAmp->
amp2PNreal = -4.049910893365739 + 14.489984730901032*eta - 5.9758381647470875*pow(eta,2);
831 pAmp->
amp2halfPNimag = 0.751248226425348*(-2.854822555520438 + 13.189467666561313*eta);
833 pAmp->
amp3PNreal = -(-8*pow(0.7142857142857143,0.5)*(5.338016983016983 - (1088119*eta)/28600. + (146879*pow(eta,2))/2340. - (226097*pow(eta,3))/17160.))/9.;
842 else if (
l==5 &&
m==5)
876 pAmp->
amp2halfPNreal = 0.8013768943966973*
delta*(-6.743589743589744 + (688*eta)/39. - (256*pow(eta,2))/39.);
889 XLAL_ERROR(
XLAL_EFUNC,
"Mode not implemented in PhenomTHM. Modes available: [2,2], [2,1], [3,3], [4,4], [5,5].");
912 phi = gsl_complex_rect(pAmp->
c3,0);
913 gsl_complex coshphi = gsl_complex_cosh(phi);
914 coshc3 = GSL_REAL(coshphi);
915 gsl_complex tanhphi = gsl_complex_tanh(phi);
916 tanhc3 = GSL_REAL(tanhphi);
919 if(fabs(pAmp->
c2) > fabs(0.5*pAmp->
alpha1RD/tanhc3))
929 pAmp->
c1 = ampPeak*pAmp->
alpha1RD*coshc3*coshc3/pAmp->
c2;
931 pAmp->
c4 = ampPeak - pAmp->
c1*tanhc3;
947 REAL8 tinsppoints[3] = {-2000., -250., -150.0};
950 p = gsl_permutation_alloc(3);
951 b = gsl_vector_alloc(3);
952 x = gsl_vector_alloc(3);
953 A = gsl_matrix_alloc(3,3);
961 for (
UINT4 idx=0; idx<3; idx++)
963 theta = pow(-eta*tinsppoints[idx]/5,-1./8);
965 xx = pow(0.5*omega,2./3);
967 x4half = x4*sqrt(xx);
971 bi = (1./pAmp->
fac0/xx)*(ampInspCP[idx] - ampoffset);
973 gsl_vector_set(b,idx,bi);
976 gsl_matrix_set(A,idx,0,x4);
977 gsl_matrix_set(A,idx,1,x4half);
978 gsl_matrix_set(A,idx,2,x5);
982 gsl_linalg_LU_decomp(A,
p,&
s);
983 gsl_linalg_LU_solve(A,
p,b,
x);
986 pAmp->
inspC1 = gsl_vector_get(
x,0);
987 pAmp->
inspC2 = gsl_vector_get(
x,1);
988 pAmp->
inspC3 = gsl_vector_get(
x,2);
994 gsl_permutation_free(
p);
1010 p = gsl_permutation_alloc(4);
1011 b = gsl_vector_alloc(4);
1012 x = gsl_vector_alloc(4);
1013 A = gsl_matrix_alloc(4,4);
1018 theta = pow(-eta*tCut/5,-1./8);
1021 gsl_vector_set(b,0,ampinsp);
1026 gsl_complex sechphi = gsl_complex_sech(phi);
1027 REAL8 sech1 = GSL_REAL(sechphi);
1029 sechphi = gsl_complex_sech(phi);
1030 REAL8 sech2 = GSL_REAL(sechphi);
1033 gsl_matrix_set(A,0,0,1.0);
1034 gsl_matrix_set(A,0,1,sech1);
1035 gsl_matrix_set(A,0,2,pow(sech2,1./7));
1036 gsl_matrix_set(A,0,3,(tCut-pAmp->
tshift)*(tCut-pAmp->
tshift));
1042 gsl_vector_set(b,1,ampMergerCP1);
1046 sechphi = gsl_complex_sech(phi);
1047 sech1 = GSL_REAL(sechphi);
1049 sechphi = gsl_complex_sech(phi);
1050 sech2 = GSL_REAL(sechphi);
1053 gsl_matrix_set(A,1,0,1.0);
1054 gsl_matrix_set(A,1,1,sech1);
1055 gsl_matrix_set(A,1,2,pow(sech2,1./7));
1061 gsl_vector_set(b,2,ampPeak);
1064 gsl_matrix_set(A,2,0,1.0);
1065 gsl_matrix_set(A,2,1,1.0);
1066 gsl_matrix_set(A,2,2,1.0);
1067 gsl_matrix_set(A,2,3,0.0);
1076 REAL8 theta2 = pow(-eta*tCut/5.,-1./8);
1077 REAL8 theta1 = pow(-eta*(tCut-0.000001)/5,-1./8);
1080 REAL8 x1 = pow(0.5*omega1,2./3);
1081 REAL8 x2 = pow(0.5*omega2,2./3);
1084 gsl_vector_set(b,3,dampMECO);
1088 sechphi = gsl_complex_sech(phi);
1089 sech1 = GSL_REAL(sechphi);
1090 gsl_complex phi2 = gsl_complex_rect(2*pAmp->
alpha1RD*(tCut-pAmp->
tshift),0);
1091 sechphi = gsl_complex_sech(phi2);
1092 sech2 = GSL_REAL(sechphi);
1093 tanhphi = gsl_complex_tanh(phi);
1094 REAL8 tanh = GSL_REAL(tanhphi);
1095 gsl_complex sinhphi = gsl_complex_sinh(phi2);
1096 REAL8 sinh = GSL_REAL(sinhphi);
1104 gsl_matrix_set(A,3,0,0.0);
1105 gsl_matrix_set(A,3,1,aux1);
1106 gsl_matrix_set(A,3,2,aux2);
1107 gsl_matrix_set(A,3,3,aux3);
1110 gsl_linalg_LU_decomp(A,
p,&
s);
1111 gsl_linalg_LU_solve(A,
p,b,
x);
1123 gsl_permutation_free(
p);
1164 REAL8 thetaCut = pow(-eta*tCut/5,-1./8);
1177 REAL8 fRING, fDAMP, fDAMPn2;
1178 REAL8 omegaCutBar, omegaMergerCP;
1181 REAL8 theta2 = pow(-eta*tCut/5.,-1./8);
1182 REAL8 theta1 = pow(-eta*(tCut-0.0000001)/5,-1./8);
1209 omegaCutBar = 1. - (omegaCut + omegaCutPNAMP)/pPhaseHM->
omegaRING;
1213 domegaCut = -domegaCut/pPhaseHM->
omegaRING;
1226 else if (
l==2 &&
m==1)
1241 omegaCut = 0.5*omegaCut;
1242 omegaCutBar = 1. - (omegaCut + omegaCutPNAMP)/pPhaseHM->
omegaRING;
1253 domegaCut = -0.5*domegaCut/pPhaseHM->
omegaRING;
1259 else if (
l==3 &&
m==3)
1274 omegaCut = 1.5*omegaCut;
1275 omegaCutBar = 1. - (omegaCut + omegaCutPNAMP)/pPhaseHM->
omegaRING;
1286 domegaCut = -1.5*domegaCut/pPhaseHM->
omegaRING;
1292 else if (
l==4 &&
m==4)
1307 omegaCut = 2*omegaCut;
1308 omegaCutBar = 1. - (omegaCut + omegaCutPNAMP)/pPhaseHM->
omegaRING;
1319 domegaCut = -2.0*domegaCut/pPhaseHM->
omegaRING;
1325 else if (
l==5 &&
m==5)
1340 omegaCut = 2.5*omegaCut;
1341 omegaCutBar = 1. - (omegaCut + omegaCutPNAMP)/pPhaseHM->
omegaRING;
1352 domegaCut = -2.5*domegaCut/pPhaseHM->
omegaRING;
1360 XLAL_ERROR(
XLAL_EFUNC,
"Mode not implemented in PhenomTHM. Modes available: [2,2], [2,1], [3,3], [4,4], [5,5].");
1372 p = gsl_permutation_alloc(3);
1373 b = gsl_vector_alloc(3);
1374 x = gsl_vector_alloc(3);
1375 A = gsl_matrix_alloc(3,3);
1383 gsl_complex phi = gsl_complex_rect(pPhaseHM->
alpha1RD*tCut,0);
1384 gsl_complex arcsinhphi = gsl_complex_arcsinh(phi);
1385 REAL8 ascut = GSL_REAL(arcsinhphi);
1386 REAL8 ascut2 = ascut*ascut;
1387 REAL8 ascut3 = ascut*ascut2;
1388 REAL8 ascut4 = ascut*ascut3;
1392 gsl_matrix_set(A,0,0,ascut2);
1393 gsl_matrix_set(A,0,1,ascut3);
1394 gsl_matrix_set(A,0,2,ascut4);
1399 arcsinhphi = gsl_complex_arcsinh(phi);
1400 REAL8 as025cut = GSL_REAL(arcsinhphi);
1401 REAL8 as025cut2 = as025cut*as025cut;
1402 REAL8 as025cut3 = as025cut*as025cut2;
1403 REAL8 as025cut4 = as025cut*as025cut3;
1407 gsl_matrix_set(A,1,0,as025cut2);
1408 gsl_matrix_set(A,1,1,as025cut3);
1409 gsl_matrix_set(A,1,2,as025cut4);
1415 gsl_matrix_set(A,2,0,2.0*pPhaseHM->
alpha1RD*ascut/dencut);
1416 gsl_matrix_set(A,2,1,3.0*pPhaseHM->
alpha1RD*ascut2/dencut);
1417 gsl_matrix_set(A,2,2,4.0*pPhaseHM->
alpha1RD*ascut3/dencut);
1419 gsl_vector_set(b,2,domegaCut - pPhaseHM->
domegaPeak/dencut);
1422 gsl_linalg_LU_decomp(A,
p,&
s);
1423 gsl_linalg_LU_solve(A,
p,b,
x);
1434 gsl_permutation_free(
p);
1441 REAL8 thetabarCut = pow(-eta*tCut,-1./8);
1445 pPhaseHM->
phOffMerger = phMECOinsp - phMECOmerger;
1469 REAL8 theta4 = theta2*theta2;
1470 REAL8 theta5 = theta3*theta2;
1471 REAL8 theta6 = theta3*theta3;
1472 REAL8 theta7 = theta4*theta3;
1474 REAL8 fac = theta3/8;
1497 return taylort3 + 2*fac*out;
1505 gsl_complex arcsinhphi = gsl_complex_arcsinh(phi);
1506 REAL8 x = GSL_REAL(arcsinhphi);
1526 REAL8 expC2 = expC*expC;
1531 REAL8 den = 1 + c4*expC2 + c3*expC;
1544 840*
pPhase->
omega3PN*pow(5,0.75)*pow(thetabar,6) + 321*log(thetabar*pow(5,0.125))*pow(5,0.75)*pow(thetabar,6) + 420*
pPhase->
omega3halfPN*pow(5,0.875)*pow(thetabar,7)))/84.;
1555 REAL8 aux = -(pow(5,-0.625)*pow(eta,-2)*pow(t,-1)*pow(thetabar,-7)*(3*(-107 + 280*
pPhase->
omega3PN)*pow(5,0.75) + 321*log(thetabar*pow(5,0.125))*pow(5,0.75) + 420*
pPhase->
omega3halfPN*thetabar*pow(5,0.875) +
1567 gsl_complex arcsinhphi = gsl_complex_arcsinh(phi);
1568 REAL8 x = GSL_REAL(arcsinhphi);
1579 REAL8 aux = omegaRING*t - omegaRING*(2*cc*t + 24*ee*t + 6*dd*t*
x + domegaPeak*t*
x*pow(alpha1RD,-1) + t*(1 - omegaPeak*pow(omegaRING,-1)) + cc*t*pow(
x,2) + 12*ee*t*pow(
x,2) + dd*t*pow(
x,3) +
1580 ee*t*pow(
x,4) - domegaPeak*pow(alpha1RD,-2)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 6*dd*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) -
1581 2*cc*
x*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 24*ee*
x*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) -
1582 3*dd*pow(alpha1RD,-1)*pow(
x,2)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 4*ee*pow(alpha1RD,-1)*pow(
x,3)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5));
1598 REAL8 expC2 = expC*expC;
1600 REAL8 num = 1 + c3*expC + c4*expC2;
1601 REAL8 den = 1 + c3 + c4;
1602 REAL8 aux = log(num/den);
1624 gsl_complex sinhphi = gsl_complex_arcsinh(phi);
1625 REAL8 x = GSL_REAL(sinhphi);
1644 REAL8 expC2 = expC*expC;
1649 REAL8 den = 1 + c4*expC2 + c3*expC;
1662 gsl_complex sinhphi = gsl_complex_arcsinh(phi);
1663 REAL8 x = GSL_REAL(sinhphi);
1674 REAL8 aux = omegaRING*t - omegaRING*(2*cc*t + 24*ee*t + 6*dd*t*
x + domegaPeak*t*
x*pow(alpha1RD,-1) + t*(1 - omegaPeak*pow(omegaRING,-1)) + cc*t*pow(
x,2) + 12*ee*t*pow(
x,2) + dd*t*pow(
x,3) +
1675 ee*t*pow(
x,4) - domegaPeak*pow(alpha1RD,-2)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 6*dd*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) -
1676 2*cc*
x*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 24*ee*
x*pow(alpha1RD,-1)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) -
1677 3*dd*pow(alpha1RD,-1)*pow(
x,2)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5) - 4*ee*pow(alpha1RD,-1)*pow(
x,3)*pow(1 + pow(alpha1RD,2)*pow(t,2),0.5));
1691 REAL8 expC2 = expC*expC;
1693 REAL8 num = 1 + c3*expC + c4*expC2;
1694 REAL8 den = 1 + c3 + c4;
1695 REAL8 aux = log(num/den);
1713 REAL8 x2half = x2*xhalf;
1715 REAL8 x3half = x3*xhalf;
1717 REAL8 x4half = x4*xhalf;
1731 REAL8 xhalf = sqrt(xref);
1732 REAL8 x1half = xref*xhalf;
1733 REAL8 x2 = xref*xref;
1734 REAL8 x2half = x2*xhalf;
1736 REAL8 x3half = x3*xhalf;
1738 REAL8 x4half = x4*xhalf;
1744 return atan2(ampimag,ampreal + pAmp->
inspC1*x4 + pAmp->
inspC2*x4half + pAmp->
inspC3*x5);
1751 double tpeak = pAmp->
tshift;
1753 gsl_complex phi = gsl_complex_rect(pAmp->
alpha1RD*(t-tpeak),0);
1754 gsl_complex phi2 = gsl_complex_rect(2*pAmp->
alpha1RD*(t-tpeak),0);
1755 gsl_complex secphi = gsl_complex_sech(phi);
1756 gsl_complex secphi2 = gsl_complex_sech(phi2);
1758 REAL8 sech1 = GSL_REAL(secphi);
1759 REAL8 sech2 = GSL_REAL(secphi2);
1769 double tpeak = pAmp->
tshift;
1775 gsl_complex phi = gsl_complex_rect(
c2*(t-tpeak) + c3,0);
1776 gsl_complex tanhphi = gsl_complex_tanh(phi);
1777 REAL8 tanh = GSL_REAL(tanhphi);
1781 return expAlpha*(
c1*tanh + c4);
1807 else if(t < pPhase->tCut22 -
pPhase->
dtM)
1837 else if(t < pPhase->tCut22 -
pPhase->
dtM)
1867 ph = (pPhaseHM->
emm/2.)*phiInsp;
1893 else if(t > pAmp->
tshift)
1919 theta = pow(
p->wf->eta*(
p->pPhase->tt0-t)/5,-1./8);
1923 theta = pow(
p->wf->eta*(-t)/5,-1./8);
1934 EulerRDslope = -EulerRDslope;
1937 return EulerRDslope;
static double IMRPhenomT_Inspiral_Amp_CP1_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Freq_CP4_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP2_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP3_33(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fdamp55(double finalDimlessSpin)
static double IMRPhenomT_Inspiral_Amp_CP2_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Amp_C3_33(double eta, double S)
static double IMRPhenomT_PeakFrequency_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_tshift_21(double eta, double S, double dchi)
static double IMRPhenomT_PeakFrequency_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakAmp_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP3_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Amp_C3_21(double eta, double S, double dchi)
static double IMRPhenomT_RD_Freq_D3_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakFrequency_21(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fdamp22n2(double finalDimlessSpin)
static double evaluate_QNMfit_fdamp22(double finalDimlessSpin)
static double IMRPhenomT_Inspiral_Amp_CP3_44(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fdamp21n2(double finalDimlessSpin)
static double evaluate_QNMfit_fdamp44n2(double finalDimlessSpin)
static double IMRPhenomT_Merger_Amp_CP1_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Merger_Amp_CP1_22(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fring33(double finalDimlessSpin)
static double IMRPhenomT_tshift_55(double eta, double S)
static double IMRPhenomT_Inspiral_Amp_CP1_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D2_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP2_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D2_33(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fdamp33(double finalDimlessSpin)
static double IMRPhenomT_Merger_Freq_CP1_55(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fdamp33n2(double finalDimlessSpin)
static double IMRPhenomT_RD_Amp_C3_44(double eta, double S)
static double evaluate_QNMfit_fdamp44(double finalDimlessSpin)
static double IMRPhenomT_Merger_Amp_CP1_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D3_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Merger_Freq_CP1_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakFrequency_33(double eta, double S, double dchi)
static double IMRPhenomT_Inspiral_Freq_CP3_22(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fring22(double finalDimlessSpin)
static double IMRPhenomT_Inspiral_Amp_CP2_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP3_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D2_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Merger_Freq_CP1_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Freq_CP2_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D3_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Amp_C3_55(double eta, double S, double dchi)
static double IMRPhenomT_Merger_Amp_CP1_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakAmp_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D3_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakAmp_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_tshift_44(double eta, double S)
static double evaluate_QNMfit_fdamp21(double finalDimlessSpin)
static double evaluate_QNMfit_fring55(double finalDimlessSpin)
static double IMRPhenomT_PeakAmp_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Freq_CP5_22(double eta, double S, double dchi, double delta)
static double evaluate_QNMfit_fring21(double finalDimlessSpin)
static double IMRPhenomT_Merger_Freq_CP1_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakAmp_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP1_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Merger_Freq_CP1_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D2_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Freq_D2_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_PeakFrequency_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_tshift_33(double eta, double S)
static double IMRPhenomT_RD_Freq_D3_44(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Freq_CP1_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP1_22(double eta, double S, double dchi, double delta)
static double IMRPhenomT_RD_Amp_C3_22(double eta, double S)
static double evaluate_QNMfit_fring44(double finalDimlessSpin)
static double evaluate_QNMfit_fdamp55n2(double finalDimlessSpin)
static double IMRPhenomT_Inspiral_Amp_CP2_33(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Merger_Amp_CP1_55(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_TaylorT3_t0(double eta, double S, double dchi, double delta)
Inspiral 22 frequency collocation points.
static double IMRPhenomT_Inspiral_Amp_CP3_21(double eta, double S, double dchi, double delta)
static double IMRPhenomT_Inspiral_Amp_CP1_55(double eta, double S, double dchi, double delta)
static double double delta
double IMRPhenomTRDPhaseAnsatz22(REAL8 t, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTMergerOmegaAnsatz22(REAL8 t, IMRPhenomTPhase22Struct *pPhase)
COMPLEX16 IMRPhenomTInspiralAmpAnsatzHM(REAL8 x, IMRPhenomTHMAmpStruct *pAmp)
double IMRPhenomTInspiralOmegaAnsatz22(REAL8 theta, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTomega22(REAL8 t, REAL8 theta, IMRPhenomTWaveformStruct *pWF, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTInspiralPhaseAnsatz22(REAL8 t, REAL8 thetabar, IMRPhenomTWaveformStruct *wf, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTRDOmegaAnsatzHM(REAL8 t, IMRPhenomTHMPhaseStruct *pPhase)
int IMRPhenomTSetHMAmplitudeCoefficients(int l, int m, IMRPhenomTHMAmpStruct *pAmp, IMRPhenomTPhase22Struct *pPhase, IMRPhenomTWaveformStruct *wf)
REAL8 GetEulerSlope(REAL8 af, REAL8 mf)
double GetTimeOfFreq(double t, void *params)
double IMRPhenomTMergerPhaseAnsatz22(REAL8 t, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTMergerAmpAnsatzHM(REAL8 t, IMRPhenomTHMAmpStruct *pAmp)
double IMRPhenomTRDOmegaAnsatz22(REAL8 t, IMRPhenomTPhase22Struct *pPhase)
double ComplexAmpOrientation(REAL8 xref, IMRPhenomTHMAmpStruct *pAmp)
COMPLEX16 IMRPhenomTHMAmp(REAL8 t, UNUSED REAL8 x, IMRPhenomTHMAmpStruct *pAmp)
double IMRPhenomTMergerOmegaAnsatzHM(REAL8 t, IMRPhenomTHMPhaseStruct *pPhase)
double IMRPhenomTRDAmpAnsatzHM(REAL8 t, IMRPhenomTHMAmpStruct *pAmp)
int IMRPhenomTSetPhase22Coefficients(IMRPhenomTPhase22Struct *pPhase, IMRPhenomTWaveformStruct *wf)
double IMRPhenomTHMPhase(REAL8 t, REAL8 phiInsp, IMRPhenomTHMPhaseStruct *pPhaseHM, UNUSED IMRPhenomTHMAmpStruct *pAmpHM)
double IMRPhenomTTaylorT3(REAL8 theta, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTMergerPhaseAnsatzHM(REAL8 t, IMRPhenomTHMPhaseStruct *pPhase)
int IMRPhenomTSetWaveformVariables(IMRPhenomTWaveformStruct *wf, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi1L_In, const REAL8 chi2L_In, const REAL8 distance, const REAL8 deltaT, const REAL8 fmin, const REAL8 fRef, const REAL8 phiRef, LALDict *lalParams)
int IMRPhenomTSetHMPhaseCoefficients(int l, int m, IMRPhenomTHMPhaseStruct *pPhaseHM, IMRPhenomTPhase22Struct *pPhase, IMRPhenomTHMAmpStruct *pAmplm, IMRPhenomTWaveformStruct *wf)
double IMRPhenomTPhase22(REAL8 t, REAL8 thetabar, IMRPhenomTWaveformStruct *pWF, IMRPhenomTPhase22Struct *pPhase)
double IMRPhenomTRDPhaseAnsatzHM(REAL8 t, IMRPhenomTHMPhaseStruct *pPhase)
double IMRPhenomTInspiralPhaseTaylorT3(REAL8 thetabar, IMRPhenomTWaveformStruct *wf, IMRPhenomTPhase22Struct *pPhase)
REAL8 XLALSimIMRPhenomXFinalMass2017(REAL8 eta, REAL8 chi1L, REAL8 chi2L)
Final Mass = 1 - Energy Radiated, X Jimenez-Forteza et al, PRD, 95, 064024, (2017),...
REAL8 XLALSimIMRPhenomXFinalSpin2017(REAL8 eta, REAL8 chi1L, REAL8 chi2L)
Final Dimensionless Spin, X Jimenez-Forteza et al, PRD, 95, 064024, (2017), arXiv:1611....
#define XLAL_CHECK(assertion,...)
#define XLAL_PRINT_WARNING(...)
IMRPhenomTPhase22Struct * pPhase
IMRPhenomTWaveformStruct * wf
size_t wflength_insp_early
size_t wflength_insp_late