40 #ifndef _LALSIMIMRSPINEOBFACTORIZEDWAVEFORM_C
41 #define _LALSIMIMRSPINEOBFACTORIZEDWAVEFORM_C
45 #include <gsl/gsl_vector.h>
46 #include <gsl/gsl_matrix.h>
47 #include <gsl/gsl_spline.h>
48 #include <gsl/gsl_linalg.h>
50 #include <lal/LALSimInspiral.h>
51 #include <lal/LALSimIMR.h>
92 const UINT4 SpinAlignedEOBversion);
105 const REAL8 timePeak,
108 const REAL8 UNUSED chiS,
109 const REAL8 UNUSED chiA,
125 return (-202. + 560.*X - 340.*X*X + 45.*X*X*X) / (42.*(3. - 2.*X));
139 return ((-1. + k2TidaleffHam)*omega02Tidal*omega02Tidal + 6.*k2TidaleffHam*XCompanion*Omega*Omega) / (1. + 2*XCompanion) / (3.*Omega*Omega);
159 REAL8 v10 = v2*v2*v2*v2*v2;
166 REAL8 k2Tidal1effHam = 0.;
167 REAL8 k2Tidal2effHam = 0.;
168 REAL8 k2Tidal1eff = 0.;
169 REAL8 k2Tidal2eff = 0.;
170 REAL8 u = 1./pow(Omega,-2./3);
171 if ( lambda1 != 0.) {
175 if ( lambda2 != 0.) {
184 hNewtonTidal = -8. * v2 * sqrt(
LAL_PI/5.);
185 hhatTidal = (3.*
q*lambda1*(X1/X2 + 3.)*(1. +
XLALTEOBbeta221(X1)*v2)*k2Tidal1eff
186 + 3./
q*lambda2*(X2/X1 + 3.)*(1. +
XLALTEOBbeta221(X2)*v2)*k2Tidal2eff) * v10;
189 hNewtonTidal = 8./3. * I * v*v2 * sqrt(
LAL_PI/5.);
190 hhatTidal = (-3*
q*lambda1*(4.5 - 6.*X1) - (-3./
q*lambda2*(4.5 - 6.*X2))) * v10;
198 hhatTidal = -18.*(X2*
q*lambda1 - X1/
q*lambda2) * v10;
201 hNewtonTidal = -3. * I * v*v2 * sqrt(6.*
LAL_PI/7.);
207 hNewtonTidal = 1./3. * I * v*v2 * sqrt(2.*
LAL_PI/35.);
221 return eta*hNewtonTidal*hhatTidal*( cos(-
m*phase) + I * sin(-
m*phase) );
231 REAL8 eta, vh3, Omega;
242 if (abs (modeM) > modeL)
251 eta =
params->eobParams->eta;
254 if (eta > 0.25 && eta < 0.25 +1
e-4) {
260 (
"XLAL Error - %s: Eta = %.16f seems to be > 0.25 - this isn't allowed!\n",
307 eulerlogxabs)))))))));
308 auxflm = v * hCoeffs->
f21v1;
339 auxflm = v * (v2 * (hCoeffs->
f33v3 + v * (hCoeffs->
f33v4 + v * (hCoeffs->
f33v5 + v * hCoeffs->
f33v6)))) + _Complex_I * vh3 * vh3 * hCoeffs->
f33vh6;
354 auxflm = v * v2 * hCoeffs->
f33v3;
359 1. + v * (hCoeffs->
rho32v +
369 eulerlogxabs) * v2))))));
382 eulerlogxabs) * v))))));
383 auxflm = v * v2 * hCoeffs->
f31v3;
396 rholm = 1. + v2 * (hCoeffs->
rho44v2
411 rholm = 1. + v2 * (hCoeffs->
rho44v2
428 1. + v * (hCoeffs->
rho43v +
435 auxflm = v * hCoeffs->
f43v;
438 rholm = 1. + v2 * (hCoeffs->
rho42v2
444 eulerlogxabs) * v))));
448 1. + v * (hCoeffs->
rho41v +
455 auxflm = v * hCoeffs->
f41v;
477 auxflm = v2 * v * (hCoeffs->
f55v3 + v * (hCoeffs->
f55v4));
494 rholm = 1. + v2 * (hCoeffs->
rho53v2
504 rholm = 1. + v2 * (hCoeffs->
rho51v2
550 rholm = 1. + hCoeffs->
rho76v2 * v2;
556 rholm = 1. + hCoeffs->
rho74v2 * v2;
562 rholm = 1. + hCoeffs->
rho72v2 * v2;
576 rholm = 1. + hCoeffs->
rho88v2 * v2;
579 rholm = 1. + hCoeffs->
rho87v2 * v2;
582 rholm = 1. + hCoeffs->
rho86v2 * v2;
585 rholm = 1. + hCoeffs->
rho85v2 * v2;
588 rholm = 1. + hCoeffs->
rho84v2 * v2;
591 rholm = 1. + hCoeffs->
rho83v2 * v2;
594 rholm = 1. + hCoeffs->
rho82v2 * v2;
597 rholm = 1. + hCoeffs->
rho81v2 * v2;
611 for(
i = 0 ;
i < modeL ;
i++) rholmPwrl *= rholm;
617 if (eta == 0.25 && modeM % 2)
625 *rholmpwrl = rholmPwrl;
646 const REAL8 timewavePeak,
649 const REAL8 UNUSED chiS,
650 const REAL8 UNUSED chiA,
656 REAL8 eta = m1*m2/((m1+m2)*(m1+m2));
660 REAL8 omegaAttachmentPoint, hLMdivrholmAttachmentPoint, rholmNRAttachmentPoint,rholmBeforeCalibAttachmentPoint;
663 REAL8Vector *values = NULL, *rholmpwrlVecReal = NULL;
667 if (!((modeL == 2 && modeM == 1) || (modeL == 5 && modeM == 5)))
669 XLALPrintError (
"Mode %d,%d is not supported by this function.\n", modeL,
684 if (!hLMVec || !rholmpwrlVec|| !values|| !timeVec|| !hLMdivrholmVec || !rholmpwrlVecReal){
698 gsl_spline *spline = NULL;
699 gsl_interp_accel *acc = NULL;
707 spline = gsl_spline_alloc (gsl_interp_cspline, phaseVec->length);
708 acc = gsl_interp_accel_alloc ();
710 gsl_spline_init (spline, timeVec->
data, phaseVec->data, phaseVec->length);
711 gsl_interp_accel_reset (acc);
712 omegaAttachmentPoint = gsl_spline_eval_deriv (spline, timewavePeak, acc);
715 for(
i=0;
i<phaseVec->length;
i++){
716 values->
data[0] = rVec->data[
i];
717 values->
data[1] = phaseVec->data[
i];
718 values->
data[2] = prVec->data[
i];
719 values->
data[3] = pPhiVec->data[
i];
720 v = cbrt (orbOmegaVec->data[
i]);
731 gsl_spline_free (spline);
732 gsl_interp_accel_free (acc);
744 gsl_spline_free (spline);
745 gsl_interp_accel_free (acc);
748 rholmpwrlVecReal->data[
i] = (
REAL8)creal(rholmpwrlVec->data[
i]);
749 hLMdivrholmVec->data[
i] = ((
REAL8)cabs(hLMVec->
data[
i]))/fabs(rholmpwrlVecReal->data[
i]);
752 gsl_spline_init (spline, timeVec->
data, hLMdivrholmVec->data, hLMdivrholmVec->length);
753 gsl_interp_accel_reset (acc);
754 hLMdivrholmAttachmentPoint = gsl_spline_eval (spline, timewavePeak, acc);
757 if((fabs(nra/eta)< 3
e-2) && ((modeL == 2) && (modeM == 1))){
759 nra = GSL_SIGN(nra)*eta*3
e-2;
761 if((fabs(nra/eta)< 1
e-4) && ((modeL == 5) && (modeM == 5))){
763 nra = GSL_SIGN(nra)*eta*1
e-4;
765 rholmNRAttachmentPoint = nra/hLMdivrholmAttachmentPoint;
766 gsl_spline_init (spline, timeVec->
data, rholmpwrlVecReal->data, rholmpwrlVecReal->length);
767 gsl_interp_accel_reset (acc);
769 rholmBeforeCalibAttachmentPoint = gsl_spline_eval (spline, timewavePeak, acc);
770 if ((modeL == 2) && (modeM == 1))
773 coeffs->
f21v7c = (rholmNRAttachmentPoint - rholmBeforeCalibAttachmentPoint)/(pow(omegaAttachmentPoint,7./3.));
775 if ((modeL == 5) && (modeM == 5)){
777 coeffs->
f55v5c = (rholmNRAttachmentPoint - rholmBeforeCalibAttachmentPoint)/(pow(omegaAttachmentPoint,5./3.));
782 gsl_spline_free (spline);
783 gsl_interp_accel_free (acc);
818 INT4 use_optimized_v2,
829 REAL8 r,
pp, Omega, v2, k, hathatk, eulerlogxabs;
830 REAL8 Slm, rholm, rholmPwrl;
832 REAL8 hathatksq4, hathatk4pi, Tlmprefac, Tlmprodfac;
852 eta =
params->eobParams->eta;
856 if (eta > 0.25 && eta < 0.25 +1
e-4) {
862 (
"XLAL Error - %s: Eta = %.16f seems to be > 0.25 - this isn't allowed!\n",
875 pp = values->data[3];
886 if (!use_optimized_v2)
903 vPhi =
r * cbrt (vPhi);
926 if (((
l +
m) % 2) == 0)
941 hathatksq4 = 4. * hathatk * hathatk;
942 hathatk4pi = 4. *
LAL_PI * hathatk;
953 if (
status != GSL_SUCCESS)
956 __func__, gsl_strerror (
status));
966 Tlmprefac = sqrt (hathatk4pi / (1. - exp (-hathatk4pi))) /
z2.val;
969 for (Tlmprodfac = 1.,
i = 1;
i <=
l;
i++)
971 Tlmprodfac *= (hathatksq4 + (
REAL8)
i *
i);
974 Tlm = Tlmprefac * sqrt (Tlmprodfac);
1017 rholm = 1. + v * (hCoeffs->
rho21v1
1039 auxflm = v * hCoeffs->
f21v1 + v2 * v * hCoeffs->
f21v3;
1061 eulerlogxabs) * v))))));
1062 auxflm = v * v2 * hCoeffs->
f33v3;
1065 rholm = 1. + v * (hCoeffs->
rho32v
1089 eulerlogxabs) * v))))));
1090 auxflm = v * v2 * hCoeffs->
f31v3;
1102 rholm = 1. + v2 * (hCoeffs->
rho44v2
1116 rholm = 1. + v * (hCoeffs->
rho43v
1122 eulerlogxabs) * v))));
1123 auxflm = v * hCoeffs->
f43v;
1126 rholm = 1. + v2 * (hCoeffs->
rho42v2
1132 eulerlogxabs) * v))));
1135 rholm = 1. + v * (hCoeffs->
rho41v
1141 eulerlogxabs) * v))));
1142 auxflm = v * hCoeffs->
f41v;
1153 rholm = 1. + v2 * (hCoeffs->
rho55v2
1167 rholm = 1. + v2 * (hCoeffs->
rho53v2
1177 rholm = 1. + v2 * (hCoeffs->
rho51v2
1223 rholm = 1. + hCoeffs->
rho76v2 * v2;
1229 rholm = 1. + hCoeffs->
rho74v2 * v2;
1235 rholm = 1. + hCoeffs->
rho72v2 * v2;
1249 rholm = 1. + hCoeffs->
rho88v2 * v2;
1252 rholm = 1. + hCoeffs->
rho87v2 * v2;
1255 rholm = 1. + hCoeffs->
rho86v2 * v2;
1258 rholm = 1. + hCoeffs->
rho85v2 * v2;
1261 rholm = 1. + hCoeffs->
rho84v2 * v2;
1264 rholm = 1. + hCoeffs->
rho83v2 * v2;
1267 rholm = 1. + hCoeffs->
rho82v2 * v2;
1270 rholm = 1. + hCoeffs->
rho81v2 * v2;
1294 if (eta == 0.25 &&
m % 2)
1300 rholmPwrl += auxflm;
1308 *hlm = Tlm * Slm * rholmPwrl;
1346 const UINT4 SpinAlignedEOBversion
1350 if ( SpinAlignedEOBversion != 1 && SpinAlignedEOBversion != 2 && SpinAlignedEOBversion != 4)
1353 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1354 __func__, SpinAlignedEOBversion);
1361 REAL8 eta2 = eta * eta;
1362 REAL8 eta3 = eta2 * eta;
1364 REAL8 dM, dM2, chiA2, chiS2;
1368 REAL8 m1Plus3eta, m1Plus3eta2, m1Plus3eta3;
1370 dM2 = 1. - 4. * eta;
1371 chiA2 = chiA * chiA;
1372 chiS2 = chiS * chiS;
1373 REAL8 chiA3 = chiA2 * chiA;
1374 REAL8 chiS3 = chiS2 * chiS;
1377 REAL8 kappaS, kappaA;
1382 if (dM2 < 0. && dM2 > -1
e-4 ) {
1388 (
"XLAL Error - %s: dM2 = %.16f < -1e-4 this isn't allowed!\n",
1404 m1Plus3eta = -1. + 3. * eta;
1405 m1Plus3eta2 = m1Plus3eta * m1Plus3eta;
1406 m1Plus3eta3 = m1Plus3eta * m1Plus3eta2;
1419 if (SpinAlignedEOBversion == 4)
1422 -4. / 3. * (dM * chiA + chiS * (1 - 2 * eta)) +
1425 coeffs->
delta22v8 = (20. * aDelta) / 63.;
1429 if (SpinAlignedEOBversion == 2 && chiS + chiA * dM / (1. - 2. * eta) > 0.)
1431 coeffs->
delta22v6 = -540. * eta * (chiS + chiA * dM / (1. - 2. * eta));
1434 coeffs->
rho22v2 = -43. / 42. + (55. * eta) / 84.;
1435 coeffs->
rho22v3 = (-2. * (chiS + chiA * dM - chiS * eta)) / 3.;
1436 switch (SpinAlignedEOBversion)
1439 coeffs->
rho22v4 = -20555. / 10584. + 0.5 *
a2
1440 - (33025. * eta) / 21168. + (19583. * eta2) / 42336.;
1445 -20555. / 10584. + 0.5 * (chiS + chiA * dM) * (chiS + chiA * dM) -
1446 (33025. * eta) / 21168. + (19583. * eta2) / 42336.;
1449 if((
params->seobCoeffs->tidal1->quadparam - 1.) != 0. || (
params->seobCoeffs->tidal2->quadparam - 1.) != 0.) {
1450 kappaS = 0.5 * (
params->seobCoeffs->tidal1->quadparam +
params->seobCoeffs->tidal2->quadparam);
1451 kappaA = 0.5 * (
params->seobCoeffs->tidal1->quadparam -
params->seobCoeffs->tidal2->quadparam);
1452 coeffs->
rho22v4 += chiA*chiA*(0.5*dM*kappaA - kappaS*eta + 0.5*kappaS + eta - 0.5) + chiA*chiS*(dM*kappaS - dM - 2*kappaA*eta + kappaA) + chiS*chiS*(0.5*dM*kappaA - kappaS*eta + 0.5*kappaS + eta - 0.5);
1457 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1458 __func__,SpinAlignedEOBversion);
1462 coeffs->
rho22v5 = (-34. *
a) / 21.;
1464 if (SpinAlignedEOBversion == 4)
1467 (-34. / 21. + 49. * eta / 18. + 209. * eta2 / 126.) * chiS +
1468 (-34. / 21. - 19. * eta / 42.) * dM * chiA;
1471 1556919113. / 122245200. + (89. *
a2) / 252. -
1472 (48993925. * eta) / 9779616. - (6292061. * eta2) / 3259872. +
1473 (10620745. * eta3) / 39118464. + (41. * eta *
LAL_PI *
LAL_PI) / 192.;
1475 coeffs->
rho22v7 = (18733. *
a) / 15876. +
a *
a2 / 3.;
1477 if (SpinAlignedEOBversion == 4)
1480 a3 / 3. + chiA * dM * (18733. / 15876. + (50140. * eta) / 3969. +
1481 (97865. * eta2) / 63504.) +
1482 chiS * (18733. / 15876. + (74749. * eta) / 5292. -
1483 (245717. * eta2) / 63504. + (50803. * eta3) / 63504.);
1485 switch (SpinAlignedEOBversion)
1489 eta * (-5.6 - 117.6 * eta) - 387216563023. / 160190110080. +
1490 (18353. *
a2) / 21168. -
a2 *
a2 / 8.;
1495 -387216563023. / 160190110080. + (18353. *
a2) / 21168. -
1500 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1501 __func__,SpinAlignedEOBversion);
1506 coeffs->
rho22v10 = -16094530514677. / 533967033600.;
1529 coeffs->
delta21vh7 = (3. * aDelta * aDelta) / 140.;
1538 switch (SpinAlignedEOBversion)
1541 coeffs->
rho21v2 = -59. / 56 + (23. * eta) / 84. - 9. / 32. *
a2;
1542 coeffs->
rho21v3 = 1177. / 672. *
a - 27. / 128. * a3;
1546 coeffs->
rho21v2 = -59. / 56 + (23. * eta) / 84.;
1551 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1552 __func__,SpinAlignedEOBversion);
1561 -47009. / 56448. - (865. *
a2) / 1792. - (405. *
a2 *
a2) / 2048. -
1562 (10993. * eta) / 14112. + (617. * eta2) / 4704.;
1564 (-98635. *
a) / 75264. + (2031. *
a *
a2) / 7168. -
1565 (1701. *
a2 * a3) / 8192.;
1567 7613184941. / 2607897600. + (9032393. *
a2) / 1806336. +
1568 (3897. *
a2 *
a2) / 16384. - (15309. * a3 * a3) / 65536.;
1571 (-3859374457. *
a) / 1159065600. - (55169. * a3) / 16384. +
1572 (18603. *
a2 * a3) / 65536. - (72171. *
a2 *
a2 * a3) / 262144.;
1574 coeffs->
rho21v8 = -1168617463883. / 911303737344.;
1576 coeffs->
rho21v10 = -63735873771463. / 16569158860800.;
1577 coeffs->
rho21v10l = 5029963. / 5927040.;
1579 coeffs->
f21v1 = (-3. * (chiS + chiA / dM)) / (2.);
1580 switch (SpinAlignedEOBversion)
1583 coeffs->
f21v3 = 0.0;
1588 (chiS * dM * (427. + 79. * eta) +
1589 chiA * (147. + 280. * dM * dM + 1251. * eta)) / 84. / dM;
1591 coeffs->
f21v4 = 0.0;
1592 coeffs->
f21v5 = 0.0;
1593 coeffs->
f21v6 = 0.0;
1597 coeffs->
f21v4 = (-3.-2.*eta)*chiA2 + (-3.+ eta/2.)*chiS2 + (-6.+21.*eta/2.)*chiS*chiA/dM;
1598 coeffs->
f21v5 = (3./4.-3.*eta)*chiA3/dM + (-81./16. +1709.*eta/1008. + 613.*eta2/1008.+(9./4.-3*eta)*chiA2)*chiS + 3./4.*chiS3
1599 + (-81./16. - 703.*eta2/112. + 8797.*eta/1008.+(9./4. - 6.*eta)*chiS2)*chiA/dM;
1600 coeffs->
f21v6 = (4163./252.-9287.*eta/1008. - 85.*eta2/112.)*chiA2 + (4163./252. - 2633.*eta/1008. + 461.*eta2/1008.)*chiS2 + (4163./126.-1636.*eta/21. + 1088.*eta2/63.)*chiS*chiA/dM;
1607 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1608 __func__,SpinAlignedEOBversion);
1615 coeffs->
f21v1 = -3. * chiA / 2.;
1616 switch (SpinAlignedEOBversion)
1619 coeffs->
f21v3 = 0.0;
1624 (chiS * dM * (427. + 79. * eta) +
1625 chiA * (147. + 280. * dM * dM + 1251. * eta)) / 84.;
1627 coeffs->
f21v4 = 0.0;
1628 coeffs->
f21v5 = 0.0;
1629 coeffs->
f21v6 = 0.0;
1632 coeffs->
f21v4 = (-6+21*eta/2.)*chiS*chiA;
1633 coeffs->
f21v5 = (3./4.-3.*eta)*chiA3 + (-81./16. - 703.*eta2/112. + 8797.*eta/1008. + (9./4. - 6.*eta)*chiS2)*chiA;
1634 coeffs->
f21v6 = (4163./126.-1636.*eta/21. + 1088.*eta2/63.)*chiS*chiA;
1640 (
"XLAL Error - %s: SpinAlignedEOBversion = %u is wrong, must be 1 or 2 or 4!\n",
1641 __func__,SpinAlignedEOBversion);
1653 coeffs->
delta33v5 = -80897. * eta / 2430.;
1656 coeffs->
rho33v2 = -7. / 6. + (2. * eta) / 3.;
1660 -6719. / 3960. +
a2 / 2. - (1861. * eta) / 990. +
1661 (149. * eta2) / 330.;
1663 coeffs->
rho33v6 = 3203101567. / 227026800. + (5. *
a2) / 36.;
1665 coeffs->
rho33v7 = (5297. *
a) / 2970. +
a *
a2 / 3.;
1666 coeffs->
rho33v8 = -57566572157. / 8562153600.;
1672 coeffs->
rho33v6 = 3203101567. / 227026800. + (5. *
a2) / 36. + (-129509./25740. + 41./192. *
LAL_PI*
LAL_PI)*eta - 274621./154440.*eta2+ 12011./46332.*eta3;
1673 coeffs->
rho33v10 = -903823148417327./30566888352000.;
1681 (chiS * dM * (-4. + 5. * eta) + chiA * (-4. + 19. * eta)) / (2. * dM);
1688 coeffs->
f33v4 = (3./2. * chiS2 * dM + (3. - 12 * eta) * chiA * chiS + dM * (3./2. -6. * eta) * chiA2)/(dM);
1689 coeffs->
f33v5 = (dM * (241./30. * eta2 + 11./20. * eta + 2./3.) * chiS + (407./30. * eta2 - 593./60. * eta + 2./3.)* chiA)/(dM);
1690 coeffs->
f33v6 = (dM * (6. * eta2 -27. / 2. * eta - 7./ 4.) * chiS2 + (44. * eta2 - 1. * eta - 7./2.) * chiA * chiS + dM * (-12 * eta2 + 11./2. * eta - 7./4.) * chiA2)/dM;
1691 coeffs->
f33vh6 = (dM * (593. / 108. * eta - 81./20.) * chiS + (7339./540. * eta - 81./20.) * chiA)/(dM);
1696 coeffs->
f33v3 = chiA * 3. / 8.;
1703 coeffs->
f33v4 = ((3. - 12 * eta) * chiA * chiS);
1704 coeffs->
f33v5 = ((407./30. * eta2 - 593./60. * eta + 2./3.)* chiA);
1705 coeffs->
f33v6 = ((44. * eta2 - 1. * eta - 7./2.) * chiA * chiS);
1706 coeffs->
f33vh6 = ((7339./540. * eta - 81./20.) * chiA);
1710 coeffs->
delta32vh3 = (10. + 33. * eta) / (-15. * m1Plus3eta);
1715 coeffs->
rho32v = (4. * chiS * eta) / (-3. * m1Plus3eta);
1716 coeffs->
rho32v2 = (-4. *
a2 * eta2) / (9. * m1Plus3eta2) + (328. - 1115. * eta +
1717 320. * eta2) / (270. *
1719 if (SpinAlignedEOBversion == 4) {
1720 coeffs->
rho32v2 = (328. - 1115. * eta +
1721 320. * eta2) / (270. *
1726 (45. *
a * m1Plus3eta3 -
1727 a * eta * (328. - 2099. * eta + 5. * (733. + 20. *
a2) * eta2 -
1728 960. * eta3))) / (405. * m1Plus3eta3);
1731 + 8050045. * eta - 4725605. * eta2 -
1733 3085640. * eta2 * eta2) / (1603800. *
1735 coeffs->
rho32v5 = (-2788. *
a) / 1215.;
1736 coeffs->
rho32v6 = 5849948554. / 940355325. + (488. *
a2) / 405.;
1738 coeffs->
rho32v8 = -10607269449358. / 3072140846775.;
1743 coeffs->
delta31vh7 = (-24. * aDelta * aDelta) / 5.;
1749 coeffs->
rho31v2 = -13. / 18. - (2. * eta) / 9.;
1752 coeffs->
rho31v4 = 101. / 7128.
1753 - (5. *
a2) / 6. - (1685. * eta) / 1782. - (829. * eta2) / 1782.;
1755 coeffs->
rho31v6 = 11706720301. / 6129723600. - (49. *
a2) / 108.;
1757 coeffs->
rho31v7 = (-2579. *
a) / 5346. +
a *
a2 / 9.;
1758 coeffs->
rho31v8 = 2606097992581. / 4854741091200.;
1762 (chiA * (-4. + 11. * eta) +
1763 chiS * dM * (-4. + 13. * eta)) / (2. * dM);
1767 coeffs->
f31v3 = -chiA * 5. / 8.;
1773 coeffs->
delta44vh3 = (112. + 219. * eta) / (-120. * m1Plus3eta);
1782 (1614. - 5870. * eta + 2625. * eta2) / (1320. * m1Plus3eta);
1784 (chiA * (10. - 39. * eta) * dM +
1785 chiS * (10. - 41. * eta + 42. * eta2)) / (15. * m1Plus3eta);
1787 a2 / 2. + (-511573572. + 2338945704. * eta - 313857376. * eta2 -
1788 6733146000. * eta3 +
1789 1252563795. * eta2 * eta2) / (317116800. * m1Plus3eta2);
1790 coeffs->
rho44v5 = (-69. *
a) / 55.;
1798 (-511573572. + 2338945704. * eta - 313857376. * eta2 -
1799 6733146000. * eta3 +
1800 1252563795. * eta2 * eta2) / (317116800. * m1Plus3eta2)
1801 + chiS2/2. + dM*chiS*chiA + dM2*chiA2/2.;
1802 coeffs->
rho44v5 = chiA*dM*(-8280. + 42716.*eta - 57990.*eta2 + 8955*eta3)/(6600.*m1Plus3eta2)
1803 + chiS*(-8280. + 66284.*eta-176418.*eta2+128085.*eta3 + 88650*eta2*eta2)/(6600.*m1Plus3eta2);
1804 coeffs->
rho44v8 = -172066910136202271./19426955708160000.;
1805 coeffs->
rho44v8l = 845198./190575.;
1806 coeffs->
rho44v10 = - 17154485653213713419357./568432724020761600000.;
1807 coeffs->
rho44v10l = 22324502267./3815311500;
1809 coeffs->
rho44v6 = 16600939332793. / 1098809712000. + (217. *
a2) / 3960.;
1810 coeffs->
rho44v6l = -12568. / 3465.;
1812 coeffs->
delta43vh3 = (486. + 4961. * eta) / (810. * (1. - 2. * eta));
1821 (222. - 547. * eta + 160. * eta2) / (176. * (-1. + 2. * eta));
1822 coeffs->
rho43v4 = -6894273. / 7047040. + (3. *
a2) / 8.;
1823 coeffs->
rho43v5 = (-12113. *
a) / 6160.;
1824 coeffs->
rho43v6 = 1664224207351. / 195343948800.;
1828 (5. * (chiA - chiS * dM) * eta) / (2. * dM * (-1. + 2. * eta));
1832 coeffs->
f43v = -5. * chiA / 4.;
1835 coeffs->
delta42vh3 = (7. * (1. + 6. * eta)) / (-15. * m1Plus3eta);
1839 (1146. - 3530. * eta + 285. * eta2) / (1320. * m1Plus3eta);
1841 (chiA * (10. - 21. * eta) * dM +
1842 chiS * (10. - 59. * eta + 78. * eta2)) / (15. * m1Plus3eta);
1844 a2 / 2. + (-114859044. + 295834536. * eta + 1204388696. * eta2 -
1845 3047981160. * eta3 -
1846 379526805. * eta2 * eta2) / (317116800. * m1Plus3eta2);
1847 coeffs->
rho42v5 = (-7. *
a) / 110.;
1848 coeffs->
rho42v6 = 848238724511. / 219761942400. + (2323. *
a2) / 3960.;
1851 coeffs->
delta41vh3 = (2. + 507. * eta) / (10. * (1. - 2. * eta));
1861 (602. - 1385. * eta + 288. * eta2) / (528. * (-1. + 2. * eta));
1862 coeffs->
rho41v4 = -7775491. / 21141120. + (3. *
a2) / 8.;
1863 coeffs->
rho41v5 = (-20033. *
a) / 55440. - (5 *
a *
a2) / 6.;
1864 coeffs->
rho41v6 = 1227423222031. / 1758095539200.;
1868 (5. * (chiA - chiS * dM) * eta) / (2. * dM * (-1. + 2. * eta));
1872 coeffs->
f41v = -5. * chiA / 4.;
1878 (96875. + 857528. * eta) / (131250. * (1 - 2 * eta));
1890 (487. - 1298. * eta + 512. * eta2) / (390. * (-1. + 2. * eta));
1892 coeffs->
rho55v4 = -3353747. / 2129400. +
a2 / 2.;
1893 coeffs->
rho55v5 = -241. *
a / 195.;
1905 coeffs->
rho55v6 = 190606537999247./11957879934000.;
1907 coeffs->
rho55v8 = - 1213641959949291437./118143853747920000.;
1909 coeffs->
rho55v10 = -150082616449726042201261./4837990810977324000000.;
1910 coeffs->
rho55v10l = 2592446431./456756300.;
1912 coeffs->
f55v3 = chiA/dM *(10./(3.*(-1.+2.*eta)) - 70.*eta/(3.*(-1.+2.*eta)) + 110.*eta2/(3.*(-1.+2.*eta)) ) +
1913 chiS*(10./(3.*(-1.+2.*eta)) -10.*eta/(-1.+2.*eta) + 10*eta2/(-1.+2.*eta));
1914 coeffs->
f55v4 = chiS2*(-5./(2.*(-1.+2.*eta)) + 5.*eta/(-1.+2.*eta)) +
1915 chiA*chiS/dM *(-5./(-1.+2.*eta) + 30.*eta/(-1.+2.*eta) - 40.*eta2/(-1.+2.*eta)) +
1916 chiA2*(-5./(2.*(-1.+2.*eta)) + 15.*eta/(-1.+2.*eta) - 20.*eta2/(-1.+2.*eta));
1927 coeffs->
f55v3 = chiA *(10./(3.*(-1.+2.*eta)) - 70.*eta/(3.*(-1.+2.*eta)) + 110.*eta2/(3.*(-1.+2.*eta)) );
1928 coeffs->
f55v4 = chiA*chiS *(-5./(-1.+2.*eta) + 30.*eta/(-1.+2.*eta) - 40.*eta2/(-1.+2.*eta));
1938 coeffs->
rho54v2 = (-17448. + 96019. * eta - 127610. * eta2
1939 + 33320. * eta3) / (13650. * (1. - 5. * eta +
1942 coeffs->
rho54v4 = -16213384. / 15526875. + (2. *
a2) / 5.;
1949 (375. - 850. * eta + 176. * eta2) / (390. * (-1. + 2. * eta));
1951 coeffs->
rho53v4 = -410833. / 709800. +
a2 / 2.;
1952 coeffs->
rho53v5 = -103. *
a / 325.;
1958 coeffs->
rho52v2 = (-15828. + 84679. * eta - 104930. * eta2
1959 + 21980. * eta3) / (13650. * (1. - 5. * eta +
1962 coeffs->
rho52v4 = -7187914. / 15526875. + (2. *
a2) / 5.;
1969 (319. - 626. * eta + 8. * eta2) / (390. * (-1. + 2. * eta));
1971 coeffs->
rho51v4 = -31877. / 304200. +
a2 / 2.;
1979 coeffs->
rho66v2 = (-106. + 602. * eta - 861. * eta2
1980 + 273. * eta3) / (84. * (1. - 5. * eta + 5. * eta2));
1982 coeffs->
rho66v4 = -1025435. / 659736. +
a2 / 2.;
1988 coeffs->
rho65v2 = (-185. + 838. * eta - 910. * eta2
1989 + 220. * eta3) / (144. * (dM2 + 3. * eta2));
1995 coeffs->
rho64v2 = (-86. + 462. * eta - 581. * eta2
1996 + 133. * eta3) / (84. * (1. - 5. * eta + 5. * eta2));
1998 coeffs->
rho64v4 = -476887. / 659736. +
a2 / 2.;
2004 coeffs->
rho63v2 = (-169. + 742. * eta - 750. * eta2
2005 + 156. * eta3) / (144. * (dM2 + 3. * eta2));
2011 coeffs->
rho62v2 = (-74. + 378. * eta - 413. * eta2
2012 + 49. * eta3) / (84. * (1. - 5. * eta + 5. * eta2));
2014 coeffs->
rho62v4 = -817991. / 3298680. +
a2 / 2.;
2020 coeffs->
rho61v2 = (-161. + 694. * eta - 670. * eta2
2021 + 124. * eta3) / (144. * (dM2 + 3. * eta2));
2030 coeffs->
rho77v2 = (-906. + 4246. * eta - 4963. * eta2
2031 + 1380. * eta3) / (714. * (dM2 + 3. * eta2));
2035 coeffs->
rho76v2 = (2144. - 16185. * eta + 37828. * eta2 - 29351. * eta3
2036 + 6104. * eta2 * eta2) / (1666. * (-1 + 7 * eta -
2044 coeffs->
rho75v2 = (-762. + 3382. * eta - 3523. * eta2
2045 + 804. * eta3) / (714. * (dM2 + 3. * eta2));
2049 coeffs->
rho74v2 = (17756. - 131805. * eta + 298872. * eta2 - 217959. * eta3
2050 + 41076. * eta2 * eta2) / (14994. * (-1. + 7. * eta -
2058 coeffs->
rho73v2 = (-666. + 2806. * eta - 2563. * eta2
2059 + 420. * eta3) / (714. * (dM2 + 3. * eta2));
2063 coeffs->
rho72v2 = (16832. - 123489. * eta + 273924. * eta2 - 190239. * eta3
2064 + 32760. * eta2 * eta2) / (14994. * (-1. + 7. * eta -
2072 coeffs->
rho71v2 = (-618. + 2518. * eta - 2083. * eta2
2073 + 228. * eta3) / (714. * (dM2 + 3. * eta2));
2079 coeffs->
rho88v2 = (3482. - 26778. * eta + 64659. * eta2 - 53445. * eta3
2080 + 12243. * eta2 * eta2) / (2736. * (-1. + 7. * eta -
2087 (23478. - 154099. * eta + 309498. * eta2 - 207550. * eta3 +
2088 38920 * eta2 * eta2) / (18240. * (-1 + 6 * eta - 10 * eta2 +
2092 coeffs->
rho86v2 = (1002. - 7498. * eta + 17269. * eta2 - 13055. * eta3
2093 + 2653. * eta2 * eta2) / (912. * (-1. + 7. * eta -
2099 coeffs->
rho85v2 = (4350. - 28055. * eta + 54642. * eta2 - 34598. * eta3
2100 + 6056. * eta2 * eta2) / (3648. * (-1. + 6. * eta -
2105 coeffs->
rho84v2 = (2666. - 19434. * eta + 42627. * eta2 - 28965. * eta3
2106 + 4899. * eta2 * eta2) / (2736. * (-1. + 7. * eta -
2113 (20598. - 131059. * eta + 249018. * eta2 - 149950. * eta3 +
2114 24520. * eta2 * eta2) / (18240. * (-1. + 6. * eta - 10. * eta2 +
2118 coeffs->
rho82v2 = (2462. - 17598. * eta + 37119. * eta2 - 22845. * eta3
2119 + 3063. * eta2 * eta2) / (2736. * (-1. + 7. * eta -
2126 (20022. - 126451. * eta + 236922. * eta2 - 138430. * eta3 +
2127 21640. * eta2 * eta2) / (18240. * (-1. + 6. * eta - 10. * eta2 +
2158 INT4 use_optimized_v2
2168 REAL8 r,
pp, Omega, v2, vh, vh3, k, hathatk, eulerlogxabs;
2169 REAL8 Slm, deltalm, rholm;
2173 gsl_sf_result lnr1, arg1,
z2;
2190 eta =
params->eobParams->eta;
2193 if (eta > 0.25 && eta < 0.25 +1
e-4) {
2199 (
"XLAL Error - %s: Eta = %.16f seems to be > 0.25 - this isn't allowed!\n",
2210 r = values->data[0];
2212 pp = values->data[3];
2216 vh3 =
Hreal * Omega;
2221 if (
params->alignedSpins)
2224 if (use_optimized_v2)
2247 vPhi =
r * cbrt (vPhi);
2249 vPhi2 = vPhi * vPhi;
2275 if (((
l +
m) % 2) == 0)
2277 Slm = (
Hreal *
Hreal - 1.) / (2. * eta) + 1.;
2287 hathatk =
Hreal * k;
2289 gsl_sf_lngamma_complex_e (
l + 1.0, -2.0 * hathatk, &lnr1,
2291 if (
status != GSL_SUCCESS)
2294 __func__, gsl_strerror (
status));
2298 if (
status != GSL_SUCCESS)
2301 __func__, gsl_strerror (
status));
2305 cexp ((lnr1.val +
LAL_PI * hathatk) +
2306 I * (arg1.val + 2.0 * hathatk * log (4.0 * k / sqrt (
LAL_E))));
2383 auxflm = v * hCoeffs->
f21v1;
2415 auxflm = v * (v2 * (hCoeffs->
f33v3 + v * (hCoeffs->
f33v4 + v * (hCoeffs->
f33v5 + v * hCoeffs->
f33v6)))) + _Complex_I * vh3 * vh3 * hCoeffs->
f33vh6;
2429 eulerlogxabs)))))));
2430 auxflm = v * v2 * hCoeffs->
f33v3;
2440 1. + v * (hCoeffs->
rho32v +
2450 eulerlogxabs) * v2))))));
2470 eulerlogxabs) * v))))));
2471 auxflm = v * v2 * hCoeffs->
f31v3;
2487 rholm = 1. + v2 * (hCoeffs->
rho44v2
2505 rholm = 1. + v2 * (hCoeffs->
rho44v2
2526 1. + v * (hCoeffs->
rho43v +
2531 hCoeffs->
rho43v6l * eulerlogxabs) *
2533 auxflm = v * hCoeffs->
f43v;
2537 rholm = 1. + v2 * (hCoeffs->
rho42v2
2543 eulerlogxabs) * v))));
2551 1. + v * (hCoeffs->
rho41v +
2556 hCoeffs->
rho41v6l * eulerlogxabs) *
2558 auxflm = v * hCoeffs->
f41v;
2584 auxflm = v2 * v * (hCoeffs->
f55v3 + v * (hCoeffs->
f55v4 + v * (hCoeffs->
f55v5c) ));
2605 rholm = 1. + v2 * (hCoeffs->
rho53v2
2617 rholm = 1. + v2 * (hCoeffs->
rho51v2
2671 rholm = 1. + hCoeffs->
rho76v2 * v2;
2679 rholm = 1. + hCoeffs->
rho74v2 * v2;
2687 rholm = 1. + hCoeffs->
rho72v2 * v2;
2703 rholm = 1. + hCoeffs->
rho88v2 * v2;
2707 rholm = 1. + hCoeffs->
rho87v2 * v2;
2711 rholm = 1. + hCoeffs->
rho86v2 * v2;
2715 rholm = 1. + hCoeffs->
rho85v2 * v2;
2719 rholm = 1. + hCoeffs->
rho84v2 * v2;
2723 rholm = 1. + hCoeffs->
rho83v2 * v2;
2727 rholm = 1. + hCoeffs->
rho82v2 * v2;
2731 rholm = 1. + hCoeffs->
rho81v2 * v2;
2745 for(
i = 0 ;
i <
l ;
i++) rholmPwrl *= rholm;
2751 if (eta == 0.25 &&
m % 2)
2757 rholmPwrl += auxflm;
2760 *hlm = Tlm * cexp (I * deltalm) * Slm * rholmPwrl;
2798 eta =
params->eobParams->eta;
2801 if (eta > 0.25 && eta < 0.25 +1
e-4) {
2807 (
"XLAL Error - %s: Eta = %.16f seems to be > 0.25 - this isn't allowed!\n",
static UNUSED REAL8 XLALSimIMREOBGetNRSpinPeakAmplitudeV4(INT4 modeL, INT4 modeM, REAL8 m1, REAL8 m2, REAL8 chiS, REAL8 chiA)
Peak amplitude predicted by fitting NR results The coefficients for the mode (2,2) are in Eq.
static UNUSED int XLALSimIMRSpinEOBCalculateNewtonianMultipole(COMPLEX16 *multipole, REAL8 x, UNUSED REAL8 r, REAL8 phi, UINT4 l, INT4 m, EOBParams *params)
This function calculates the Newtonian multipole part of the factorized waveform for the SEOBNRv1 mod...
static UNUSED int XLALSimIMRSpinEOBFluxCalculateNewtonianMultipole(COMPLEX16 *multipole, REAL8 x, UNUSED REAL8 r, UNUSED REAL8 phi, UINT4 l, INT4 m, EOBParams *params)
This function calculates the Newtonian multipole part of the factorized waveform for the SEOBNRv1 mod...
static REAL8 UNUSED XLALSimIMRSpinEOBNonKeplerCoeff(const REAL8 values[], SpinEOBParams *funcParams)
Function to calculate the non-Keplerian coefficient for the spin-aligned EOB model.
static REAL8 XLALSimIMRTEOBkleff(INT4 l, REAL8 u, REAL8 eta, TidalEOBParams *tidal)
Function to compute the enhancement of kltidal due to the presence of f-mode resonance Implements (11...
static REAL8 XLALSimIMRSpinAlignedEOBNonKeplerCoeff(const REAL8 values[], SpinEOBParams *funcParams)
Function to calculate the non-Keplerian coefficient for the spin-aligned EOB model.
static REAL8 XLALSimIMRSpinAlignedEOBNonKeplerCoeffOptimized(const REAL8 values[], SpinEOBParams *funcParams)
Function to calculate the non-Keplerian coefficient for the spin-aligned EOB model.
static REAL8 UNUSED z2(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
#define XLAL_CALLGSL(statement)
COMPLEX16Vector * XLALCreateCOMPLEX16Vector(UINT4 length)
REAL8Vector * XLALCreateREAL8Vector(UINT4 length)
void XLALDestroyREAL8Vector(REAL8Vector *vector)
void XLALDestroyCOMPLEX16Vector(COMPLEX16Vector *vector)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_IS_REAL8_FAIL_NAN(val)
Parameters for the spinning EOB model.
Tidal parameters for EOB model of NS: mByM - dimensionless ratio m_{NS}/M lambda2Tidal - dimensionles...