1 #include <lal/LALStdlib.h>
2 #include <lal/LALSimInspiral.h>
3 #include <lal/LALDict.h>
5 #include <lal/LALSimIMR.h>
12 #include <lal/FrequencySeries.h>
13 #include <lal/AVFactories.h>
16 #define UNUSED __attribute__ ((unused))
138 LALSimInspiralGenerator *myself
141 REAL8 m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef, distance, inclination;
147 XLALSimInspiralParseDictionaryToChooseFDModes(&m1, &m2, &S1x, &S1y, &S1z, &S2x, &S2y, &S2z, &deltaF, &
f_min, &
f_max, &f_ref, &phiRef, &distance, &inclination,
params);
149 *hlm =
XLALSimInspiralChooseFDModes_legacy(m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef, distance, inclination,
params,
approximant);
159 LALSimInspiralGenerator *myself
162 REAL8 m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno, deltaF,
f_min,
f_max, f_ref;
168 XLALSimInspiralParseDictionaryToChooseFDWaveform(&m1, &m2, &S1x, &S1y, &S1z, &S2x, &S2y, &S2z, &distance, &inclination, &phiRef, &longAscNodes, &eccentricity, &meanPerAno, &deltaF, &
f_min, &
f_max, &f_ref,
params);
170 return XLALSimInspiralChooseFDWaveform_legacy(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno, deltaF,
f_min,
f_max, f_ref,
params,
approximant);
177 LALSimInspiralGenerator *myself
180 REAL8 phiRef,
deltaT, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
f_min, f_ref, distance;
187 XLALSimInspiralParseDictionaryToChooseTDModes(&phiRef, &
deltaT, &m1, &m2, &S1x, &S1y, &S1z, &S2x, &S2y, &S2z, &
f_min, &f_ref, &distance, &lmax,
params);
189 *hlm =
XLALSimInspiralChooseTDModes_legacy(phiRef,
deltaT, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
f_min, f_ref, distance,
params, lmax,
approximant);
199 LALSimInspiralGenerator *myself
202 REAL8 m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref;
209 XLALSimInspiralParseDictionaryToChooseTDWaveform(&m1, &m2, &S1x, &S1y, &S1z, &S2x, &S2y, &S2z, &distance, &inclination, &phiRef, &longAscNodes, &eccentricity, &meanPerAno, &
deltaT, &
f_min, &f_ref,
params);
211 return XLALSimInspiralChooseTDWaveform_legacy(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
218 #define DEFINE_GENERATOR_TEMPLATE(approx, fd_modes, fd_waveform, td_modes, td_waveform) \
219 static Approximant _lal ## approx ## GeneratorInternalData = approx; \
220 const LALSimInspiralGenerator lal ## approx ## GeneratorTemplate = { \
222 .initialize = initialize, \
224 .generate_fd_modes = fd_modes, \
225 .generate_fd_waveform = fd_waveform, \
226 .generate_td_modes = td_modes, \
227 .generate_td_waveform = td_waveform, \
228 .internal_data = &_lal ## approx ## GeneratorInternalData \
362 REAL8 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z;
381 REAL8 lambda3A_UR = 0.;
382 REAL8 omega2TidalA_UR = 0.;
383 REAL8 omega3TidalA_UR = 0.;
384 REAL8 lambda3B_UR = 0.;
385 REAL8 omega2TidalB_UR = 0.;
386 REAL8 omega3TidalB_UR = 0.;
387 REAL8 quadparam1_UR = 0.;
388 REAL8 quadparam2_UR = 0.;
396 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
404 UINT4 SpinAlignedEOBversion;
405 REAL8 spin1x, spin1y, spin1z;
406 REAL8 spin2x, spin2y, spin2z;
407 REAL8 polariz = longAscNodes;
410 UINT4 PrecEOBversion;
411 REAL8 spin1[3], spin2[3];
421 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
423 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
425 XLALPrintWarning(
"XLAL Warning - %s: Small value of m1 = %e (kg) = %e (Msun) requested.\nPerhaps you have a unit conversion error?\n", __func__, m1, m1 /
LAL_MSUN_SI);
427 XLALPrintWarning(
"XLAL Warning - %s: Small value of m2 = %e (kg) = %e (Msun) requested.\nPerhaps you have a unit conversion error?\n", __func__, m2, m2 /
LAL_MSUN_SI);
429 XLALPrintWarning(
"XLAL Warning - %s: Large value of total mass m1+m2 = %e (kg) = %e (Msun) requested.\nSignal not likely to be in band of ground-based detectors.\n", __func__, m1 + m2, (m1 + m2) /
LAL_MSUN_SI);
430 if (S1x * S1x + S1y * S1y + S1z * S1z > 1.000001)
431 XLALPrintWarning(
"XLAL Warning - %s: S1 = (%e,%e,%e) with norm > 1 requested.\nAre you sure you want to violate the Kerr bound?\n", __func__, S1x, S1y, S1z);
432 if (S2x * S2x + S2y * S2y + S2z * S2z > 1.000001)
433 XLALPrintWarning(
"XLAL Warning - %s: S2 = (%e,%e,%e) with norm > 1 requested.\nAre you sure you want to violate the Kerr bound?\n", __func__, S2x, S2y, S2z);
435 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
436 if (
f_min > 40.000001)
437 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
449 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
453 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
455 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
457 ret =
XLALSimInspiralTaylorEtPNGenerator(hplus, hcross, phiRef, v0,
deltaT, m1, m2,
f_min, distance, inclination, amplitudeO, phaseO);
463 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
465 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
467 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
471 ret =
XLALSimInspiralTaylorT1PNGenerator(hplus, hcross, phiRef, v0,
deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(
params), amplitudeO, phaseO);
477 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
479 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
481 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
485 ret =
XLALSimInspiralTaylorT2PNGenerator(hplus, hcross, phiRef, v0,
deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(
params), amplitudeO, phaseO);
491 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
493 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
495 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
499 ret =
XLALSimInspiralTaylorT3PNGenerator(hplus, hcross, phiRef, v0,
deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(
params), amplitudeO, phaseO);
505 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
507 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
509 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
513 ret =
XLALSimInspiralTaylorT4PNGenerator(hplus, hcross, phiRef, v0,
deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(
params), amplitudeO, phaseO);
519 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
521 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
523 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
527 ret =
XLALSimInspiralTEOBResumROM(hplus, hcross, phiRef,
deltaT,
f_min, f_ref, distance, inclination, m1, m2, lambda1, lambda2);
533 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
535 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
537 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
539 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
548 ret =
XLALSimIMRTEOBResumS(hplus, hcross, phiRef,
deltaT, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, lambda1, lambda2, distance, inclination, longAscNodes,
params, eccentricity, meanPerAno,
f_min, f_ref);
555 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
557 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
559 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
563 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
565 ret =
XLALSimInspiralEccentricTDPNGenerator(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, inclination, eccentricity, amplitudeO, phaseO);
574 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
578 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
580 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
589 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
593 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
595 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
604 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
608 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
610 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
620 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclination, S1x, S1y, S1z, S2x, S2y, S2z, m1, m2, f_ref, phiRef,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
629 ret =
XLALSimInspiralSpinTaylorT5(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z,
params);
642 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclination, S1x, S1y, S1z, S2x, S2y, S2z, m1, m2, f_ref, phiRef,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
651 ret =
XLALSimInspiralSpinTaylorT4(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z,
params);
659 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclination, S1x, S1y, S1z, S2x, S2y, S2z, m1, m2, f_ref, phiRef,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
668 ret =
XLALSimInspiralSpinTaylorT1(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z,
params);
673 if (S2x != 0. || S2y != 0. || S2z != 0.) {
674 XLALPrintError(
"XLAL Error : The spindominatedwf approximant is only for 1 spin case.\n");
678 if (amplitudeO > 3) {
679 XLALPrintError(
"XLAL Error : Foe the spindominatedwf approximant maximal amplitude correction is 1.5 PN\n");
683 XLALPrintError(
"XLAL Error : For the spindominatedwf approximant maximal phase correction is 2 PN\n");
691 ret =
XLALSimInspiralSpinDominatedWaveformInterfaceTD(hplus, hcross,
deltaT, m1, m2,
f_min, f_ref, distance, S1x, S1y, S1z, LNhatx, LNhaty, LNhatz, incl, phaseO, amplitudeO, phiRef);
698 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
700 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
702 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
704 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
707 ret =
XLALSimIMRPhenomBGenerateTD(hplus, hcross, phiRef,
deltaT, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z),
f_min, 0., distance, inclination);
714 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclination, S1x, S1y, S1z, S2x, S2y, S2z, m1, m2, f_ref, phiRef,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
717 ret =
XLALSimSpinInspiralGenerator(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2,
params);
723 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
725 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
727 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
729 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
732 ret =
XLALSimIMRPhenomCGenerateTD(hplus, hcross, phiRef,
deltaT, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z),
f_min, 0., distance, inclination,
params);
737 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
739 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
741 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
745 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, 0., phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
750 const REAL8 cfac = cos(inclination);
751 const REAL8 pfac = 0.5 * (1. + cfac * cfac);
752 for (loopi = hp->
data->
length - 1; loopi > -1; loopi--) {
754 if (ampsqr > maxamp) {
767 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
769 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
771 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
773 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
780 maxind = (*hplus)->data->length - 1;
781 for (loopi = (*hplus)->data->length - 1; loopi > -1; loopi--) {
782 REAL8 ampsqr = ((*hplus)->data->data[loopi]) * ((*hplus)->data->data[loopi]) + ((*hcross)->data->data[loopi]) * ((*hcross)->data->data[loopi]);
783 if (ampsqr > maxamp) {
793 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
797 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
801 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
805 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
809 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
813 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
817 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
821 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
825 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
829 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
835 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
837 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at the start.\n", __func__);
839 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl, &spin1x, &spin1y, &spin1z, &spin2x, &spin2y, &spin2z, inclination, S1x, S1y, S1z, S2x, S2y, S2z, m1, m2, f_ref, phiRef,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
841 ret =
XLALSimIMRPhenSpinInspiralRDGenerator(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2,
params);
852 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
854 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
856 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
858 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
863 SpinAlignedEOBversion = 1;
865 SpinAlignedEOBversion = 2;
867 SpinAlignedEOBversion = 200;
869 SpinAlignedEOBversion = 4;
871 SpinAlignedEOBversion = 400;
873 SpinAlignedEOBversion = 41;
874 ret =
XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion,
params);
880 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
882 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
884 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant does not have tidal corrections.");
886 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
898 distance, inclination,
900 SpinAlignedEOBversion,
params
910 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
912 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
914 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
926 const double m1pert = m1 * (1.0 + 1
e-15);
928 deltaT, m1pert, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion);
932 PrecEOBversion = 300;
934 PrecEOBversion = 304;
936 deltaT, m1, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion);
943 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
945 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
947 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
956 PrecEOBversion = 401;
957 ret =
XLALSimIMRSpinPrecEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion,
params);
962 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
964 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
966 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
975 PrecEOBversion = 402;
976 ret =
XLALSimIMRSpinPrecEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion,
params);
983 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
985 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
987 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
1023 SpinAlignedEOBversion = 201;
1025 SpinAlignedEOBversion = 401;
1026 ret =
XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion,
params);
1032 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1034 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
1043 phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1x, S1y, S1z,
1050 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1052 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1054 ret =
XLALSimInspiralPrecessingNRSurPolarizations(hplus, hcross, phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1x, S1y, S1z, S2x, S2y, S2z,
params,
approximant);
1060 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1062 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1064 ret =
XLALSimInspiralPrecessingNRSurPolarizations(hplus, hcross, phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1x, S1y, S1z, S2x, S2y, S2z,
params,
approximant);
1070 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1072 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1074 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1077 ret =
XLALSimIMRNRHybSur3dq8Polarizations(hplus, hcross, phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1z, S2z,
params);
1082 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1084 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1086 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1092 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1100 maxind = (*hplus)->data->length - 1;
1101 for (loopi = (*hplus)->data->length - 1; loopi > -1; loopi--) {
1102 REAL8 ampsqr = ((*hplus)->data->data[loopi]) * ((*hplus)->data->data[loopi]) + ((*hcross)->data->data[loopi]) * ((*hcross)->data->data[loopi]);
1103 if (ampsqr > maxamp) {
1115 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1117 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1124 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef,
1133 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1135 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1137 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1140 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1148 maxind = (*hplus)->data->length - 1;
1149 for (loopi = (*hplus)->data->length - 1; loopi > -1; loopi--) {
1150 REAL8 ampsqr = ((*hplus)->data->data[loopi]) * ((*hplus)->data->data[loopi]) + ((*hcross)->data->data[loopi]) * ((*hcross)->data->data[loopi]);
1151 if (ampsqr > maxamp) {
1163 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1167 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1172 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1178 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1180 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1182 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1184 ret =
XLALSimIMRPhenomT(hplus, hcross, m1, m2, S1z, S2z, distance, inclination,
deltaT,
f_min, f_ref, phiRef,
params);
1191 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1193 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1195 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1197 ret =
XLALSimIMRPhenomTHM(hplus, hcross, m1, m2, S1z, S2z, distance, inclination,
deltaT,
f_min, f_ref, phiRef,
params);
1204 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1206 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1208 ret =
XLALSimIMRPhenomTP(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination,
deltaT,
f_min, f_ref, phiRef,
params);
1215 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1217 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1219 ret =
XLALSimIMRPhenomTPHM(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination,
deltaT,
f_min, f_ref, phiRef,
params);
1224 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref,
params,
approximant);
1228 XLALPrintError(
"TD version of approximant not implemented in lalsimulation\n");
1232 if (polariz && (*hplus) && (*hcross)) {
1234 REAL8 cp = cos(2. * polariz);
1235 REAL8 sp = sin(2. * polariz);
1236 for (
UINT4 idx = 0; idx < (*hplus)->data->length; idx++) {
1237 tmpP = (*hplus)->data->data[idx];
1238 tmpC = (*hcross)->data->data[idx];
1239 (*hplus)->data->data[idx] = cp * tmpP + sp * tmpC;
1240 (*hcross)->data->data[idx] = cp * tmpC - sp * tmpP;
1270 REAL8 UNUSED meanPerAno,
1280 REAL8 LNhatx, LNhaty, LNhatz;
1282 REAL8 E1x, E1y, E1z;
1298 REAL8 spin1x, spin1y, spin1z;
1299 REAL8 spin2x, spin2y, spin2z;
1302 REAL8 chi1_l, chi2_l, chip, thetaJN, alpha0, phi_aligned, zeta_polariz;
1311 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
1317 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaF = %e requested...This corresponds to a very short TD signal (with padding). Consider a smaller value.\n", __func__, deltaF);
1318 if (deltaF < 1. / 4096.)
1319 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaF = %e requested...This corresponds to a very long TD signal. Consider a larger value.\n", __func__, deltaF);
1321 XLALPrintWarning(
"XLAL Warning - %s: Small value of m1 = %e (kg) = %e (Msun) requested...Perhaps you have a unit conversion error?\n", __func__, m1, m1 /
LAL_MSUN_SI);
1323 XLALPrintWarning(
"XLAL Warning - %s: Small value of m2 = %e (kg) = %e (Msun) requested...Perhaps you have a unit conversion error?\n", __func__, m2, m2 /
LAL_MSUN_SI);
1325 XLALPrintWarning(
"XLAL Warning - %s: Large value of total mass m1+m2 = %e (kg) = %e (Msun) requested...Signal not likely to be in band of ground-based detectors.\n", __func__, m1 + m2, (m1 + m2) /
LAL_MSUN_SI);
1326 if (S1x * S1x + S1y * S1y + S1z * S1z > 1.000001)
1327 XLALPrintWarning(
"XLAL Warning - %s: S1 = (%e,%e,%e) with norm > 1 requested...Are you sure you want to violate the Kerr bound?\n", __func__, S1x, S1y, S1z);
1328 if (S2x * S2x + S2y * S2y + S2z * S2z > 1.000001)
1329 XLALPrintWarning(
"XLAL Warning - %s: S2 = (%e,%e,%e) with norm > 1 requested...Are you sure you want to violate the Kerr bound?\n", __func__, S2x, S2y, S2z);
1331 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
1332 if (
f_min > 40.000001)
1333 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
1346 cfac = cos(inclination);
1347 pfac = 0.5 * (1. + cfac * cfac);
1354 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1356 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1358 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1367 ret =
XLALSimInspiralEFD(hptilde, hctilde, phiRef, deltaF, m1, m2,
f_min,
f_max, inclination, distance, longAscNodes, eccentricity, phaseO);
1375 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1377 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1379 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1382 ret =
XLALSimInspiralTaylorF2(hptilde, phiRef, deltaF, m1, m2, S1z, S2z,
f_min,
f_max, f_ref, distance,
params);
1386 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1387 for (j = 0; j < (*hptilde)->data->length; j++) {
1388 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1389 (*hptilde)->data->data[j] *=
pfac;
1396 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1398 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1400 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1402 if (eccentricity > 0.0 && eccentricity < 1.0 && f_ecc < 0.0) {
1408 XLAL_PRINT_WARNING(
"Warning... The reference frequency for eccentricity was set as default value(%f). This might be not optimal case for you.\n", f_ecc);
1412 ret =
XLALSimInspiralTaylorF2Ecc(hptilde, phiRef, deltaF, m1, m2, S1z, S2z,
f_min,
f_max, f_ref, distance, eccentricity,
params);
1416 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1417 for (j = 0; j < (*hptilde)->data->length; j++) {
1418 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1419 (*hptilde)->data->data[j] *=
pfac;
1426 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1428 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1430 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1435 ret =
XLALSimInspiralTaylorF2NLTides(hptilde, phiRef, deltaF, m1, m2, S1z, S2z,
f_min,
f_max, f_ref, distance,
params);
1439 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1440 for (j = 0; j < (*hptilde)->data->length; j++) {
1441 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1442 (*hptilde)->data->data[j] *=
pfac;
1450 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1454 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1460 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1461 for (j = 0; j < (*hptilde)->data->length; j++) {
1462 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1463 (*hptilde)->data->data[j] *=
pfac;
1472 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1474 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1476 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
1480 ROTATEY(inclination, spin1x, spin1y, spin1z);
1481 LNhatx = sin(inclination);
1483 LNhatz = cos(inclination);
1489 ret =
XLALSimInspiralSpinTaylorF2(hptilde, hctilde, phiRef, deltaF, m1, m2, spin1x, spin1y, spin1z, LNhatx, LNhaty, LNhatz,
f_min,
f_max, f_ref, distance,
params, phaseO, amplitudeO);
1509 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1511 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1513 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1515 ret =
XLALSimInspiralTaylorF2ReducedSpin(hptilde, phiRef, deltaF, m1, m2,
XLALSimInspiralTaylorF2ReducedSpinComputeChi(m1, m2, S1z, S2z),
f_min,
f_max, distance, phaseO, amplitudeO);
1519 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1520 for (j = 0; j < (*hptilde)->data->length; j++) {
1521 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1522 (*hptilde)->data->data[j] *=
pfac;
1529 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1531 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1533 ret =
XLALSimInspiralTaylorF2ReducedSpinTidal(hptilde, phiRef, deltaF, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z), lambda1, lambda2,
f_min,
f_max, distance, phaseO, amplitudeO);
1537 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1538 for (j = 0; j < (*hptilde)->data->length; j++) {
1539 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1540 (*hptilde)->data->data[j] *=
pfac;
1548 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1550 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1552 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1554 ret =
XLALSimIMRPhenomBGenerateFD(hptilde, phiRef, deltaF, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z),
f_min,
f_max, distance);
1558 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1559 for (j = 0; j < (*hptilde)->data->length; j++) {
1560 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1561 (*hptilde)->data->data[j] *=
pfac;
1568 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1570 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1572 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1574 ret =
XLALSimIMRPhenomCGenerateFD(hptilde, phiRef, deltaF, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z),
f_min,
f_max, distance,
params);
1578 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1579 for (j = 0; j < (*hptilde)->data->length; j++) {
1580 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1581 (*hptilde)->data->data[j] *=
pfac;
1588 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1590 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1592 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1595 ret =
XLALSimIMRPhenomDGenerateFD(hptilde, phiRef, f_ref, deltaF, m1, m2, S1z, S2z,
f_min,
f_max, distance,
params,
NoNRT_V);
1599 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1600 for (j = 0; j < (*hptilde)->data->length; j++) {
1601 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1602 (*hptilde)->data->data[j] *=
pfac;
1609 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1611 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1612 if (lambda1 < 0 || lambda2 < 0)
1613 XLAL_ERROR(
XLAL_EFUNC,
"lambda1 = %f, lambda2 = %f. Both should be greater than zero for IMRPhenomD_NRTidal", lambda1, lambda2);
1615 ret =
XLALSimIMRPhenomDNRTidal(hptilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z, lambda1, lambda2,
params,
NRTidal_V);
1619 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1620 for (j = 0; j < (*hptilde)->data->length; j++) {
1621 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1622 (*hptilde)->data->data[j] *=
pfac;
1629 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1631 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1632 if (lambda1 < 0 || lambda2 < 0)
1633 XLAL_ERROR(
XLAL_EFUNC,
"lambda1 = %f, lambda2 = %f. Both should be greater than zero for IMRPhenomD_NRTidalv2", lambda1, lambda2);
1637 ret =
XLALSimIMRPhenomDNRTidal(hptilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z, lambda1, lambda2,
params,
NRTidalv2_V);
1641 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1642 for (j = 0; j < (*hptilde)->data->length; j++) {
1643 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1644 (*hptilde)->data->data[j] *=
pfac;
1651 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1652 if (lambda1 != 0 || lambda2 < 0)
1653 XLAL_ERROR(
XLAL_EDOM,
"lambda1 = %f, lambda2 = %f. lambda1 should be equal to zero and lambda2 should be greater than or equal to zero for IMRPhenomNSBH", lambda1, lambda2);
1655 ret =
XLALSimIMRPhenomNSBH(hptilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z,
params);
1659 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
1660 for (j = 0; j < (*hptilde)->data->length; j++) {
1661 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j];
1662 (*hptilde)->data->data[j] *=
pfac;
1671 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1673 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1679 ret =
XLALSimIMRPhenomHM(hptilde, hctilde, freqs, m1, m2, S1z, S2z, distance, inclination, phiRef, deltaF, f_ref,
params);
1688 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1692 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1694 ret =
XLALSimIMREOBNRv2HMROM(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 0);
1700 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1704 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1706 ret =
XLALSimIMREOBNRv2HMROM(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 1);
1712 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1714 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1716 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1718 XLALPrintError(
"XLAL Error - %s: SEOBNRv1ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__, S1z, S2z);
1722 ret =
XLALSimIMRSEOBNRv1ROMEffectiveSpin(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
1728 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1730 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1732 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1734 ret =
XLALSimIMRSEOBNRv1ROMDoubleSpin(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
1740 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1742 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1744 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1746 XLALPrintError(
"XLAL Error - %s: SEOBNRv2ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__, S1z, S2z);
1750 ret =
XLALSimIMRSEOBNRv2ROMEffectiveSpin(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
1756 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1758 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1760 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1762 ret =
XLALSimIMRSEOBNRv2ROMDoubleSpin(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
1768 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1770 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1772 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1774 ret =
XLALSimIMRSEOBNRv2ROMDoubleSpinHI(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1);
1780 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1782 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1784 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1786 ret =
XLALSimIMRSEOBNRv4ROM(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1,
params,
NoNRT_V);
1792 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1794 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1796 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1798 ret =
XLALSimIMRSEOBNRv4HMROM(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1, 5, 1,
params);
1804 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1806 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1808 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1811 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1, 1,
true,
params);
1817 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1819 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1821 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1823 LALValue *mode_arr = NULL;
1827 UINT2 eobmodesv5hm = 7;
1837 if(mode_arr != NULL)
1840 nmodes = modeseq->
length/2;
1843 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
1844 modeseq->
data[2] == 3 && abs(modeseq->
data[3]) == 3)
1850 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
1851 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
1852 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1)
1858 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
1859 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
1860 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
1861 modeseq->
data[6] == 4 && abs(modeseq->
data[7]) == 4)
1867 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
1868 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
1869 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
1870 modeseq->
data[6] == 4 && abs(modeseq->
data[7]) == 4 &&
1871 modeseq->
data[8] == 5 && abs(modeseq->
data[9]) == 5)
1877 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
1878 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
1879 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
1880 modeseq->
data[8] == 4 && abs(modeseq->
data[9]) == 4 &&
1881 modeseq->
data[10] == 5 && abs(modeseq->
data[11]) == 5 &&
1882 modeseq->
data[6] == 3 && abs(modeseq->
data[7]) == 2)
1888 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1, eobmodesv5hm,
true,
params);
1898 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1900 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1901 if (lambda1 < 0 || lambda2 < 0)
1902 XLAL_ERROR(
XLAL_EFUNC,
"lambda1 = %f, lambda2 = %f. Both should be greater than zero for SEOBNRv4_ROM_NRTidal", lambda1, lambda2);
1905 ret =
XLALSimIMRSEOBNRv4ROMNRTidal(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2,
params,
NRTidal_V);
1911 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1913 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1914 if (lambda1 < 0 || lambda2 < 0)
1915 XLAL_ERROR(
XLAL_EFUNC,
"lambda1 = %f, lambda2 = %f. Both should be greater than zero for SEOBNRv4_ROM_NRTidal", lambda1, lambda2);
1918 ret =
XLALSimIMRSEOBNRv4ROMNRTidal(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2,
params,
NRTidalv2_V);
1924 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1926 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1928 XLAL_ERROR(
XLAL_EDOM,
"m1 = %e, m2=%e. m1 should be greater than or equal to m2 for SEOBNRv4_ROM_NRTidalv2_NSBH", m1, m2);
1930 XLAL_ERROR(
XLAL_EDOM,
"lambda1 = %f. lambda1 should be zero for SEOBNRv4_ROM_NRTidalv2_NSBH", lambda1);
1932 XLAL_ERROR(
XLAL_EDOM,
"lambda2 = %f. lambda2 should be nonnegative for SEOBNRv4_ROM_NRTidalv2_NSBH", lambda2);
1936 XLAL_PRINT_WARNING(
"WARNING: S2z = %f. SEOBNRv4_ROM_NRTidalv2_NSBH is calibrated to NR data for which the NS spin is zero.", S2z);
1938 XLAL_PRINT_WARNING(
"WARNING: m2=%e MSun. SEOBNRv4_ROM_NRTidalv2_NSBH is calibrated to NR data for which the NS mass is >=1 solar mass.", m2 /
LAL_MSUN_SI);
1944 ret =
XLALSimIMRSEOBNRv4ROMNRTidal(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2,
params,
NRTidalv2NSBH_V);
1950 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1952 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1954 ret =
XLALSimIMRSEOBNRv4TSurrogate(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2,
SEOBNRv4TSurrogate_CUBIC);
1960 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
1962 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
1963 ret =
XLALSimIMRLackeyTidal2013(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, lambda2);
1969 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1971 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1973 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
1977 XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame(&chi1_l, &chi2_l, &chip, &thetaJN, &alpha0, &phi_aligned, &zeta_polariz, m1, m2, f_ref, phiRef, inclination, S1x, S1y, S1z, S2x, S2y, S2z,
IMRPhenomPv1_V);
1979 ret =
XLALSimIMRPhenomP(hptilde, hctilde, chi1_l, chi2_l, chip, thetaJN, m1, m2, distance, alpha0, phi_aligned, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv1_V,
NoNRT_V,
params);
1982 for (
UINT4 idx = 0; idx < (*hptilde)->data->length; idx++) {
1983 PhPpolp = (*hptilde)->data->data[idx];
1984 PhPpolc = (*hctilde)->data->data[idx];
1985 (*hptilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolp + sin(2. * zeta_polariz) * PhPpolc;
1986 (*hctilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolc - sin(2. * zeta_polariz) * PhPpolp;
1993 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
1995 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1997 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2001 XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame(&chi1_l, &chi2_l, &chip, &thetaJN, &alpha0, &phi_aligned, &zeta_polariz, m1, m2, f_ref, phiRef, inclination, S1x, S1y, S1z, S2x, S2y, S2z,
IMRPhenomPv2_V);
2003 ret =
XLALSimIMRPhenomP(hptilde, hctilde, chi1_l, chi2_l, chip, thetaJN, m1, m2, distance, alpha0, phi_aligned, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv2_V,
NoNRT_V,
params);
2006 for (
UINT4 idx = 0; idx < (*hptilde)->data->length; idx++) {
2007 PhPpolp = (*hptilde)->data->data[idx];
2008 PhPpolc = (*hctilde)->data->data[idx];
2009 (*hptilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolp + sin(2. * zeta_polariz) * PhPpolc;
2010 (*hctilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolc - sin(2. * zeta_polariz) * PhPpolp;
2017 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2019 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2023 XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame(&chi1_l, &chi2_l, &chip, &thetaJN, &alpha0, &phi_aligned, &zeta_polariz, m1, m2, f_ref, phiRef, inclination, S1x, S1y, S1z, S2x, S2y, S2z,
IMRPhenomPv2NRTidal_V);
2025 ret =
XLALSimIMRPhenomP(hptilde, hctilde, chi1_l, chi2_l, chip, thetaJN, m1, m2, distance, alpha0, phi_aligned, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv2NRTidal_V,
NRTidal_V,
params);
2028 for (
UINT4 idx = 0; idx < (*hptilde)->data->length; idx++) {
2029 PhPpolp = (*hptilde)->data->data[idx];
2030 PhPpolc = (*hctilde)->data->data[idx];
2031 (*hptilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolp + sin(2. * zeta_polariz) * PhPpolc;
2032 (*hctilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolc - sin(2. * zeta_polariz) * PhPpolp;
2038 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2040 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2044 XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame(&chi1_l, &chi2_l, &chip, &thetaJN, &alpha0, &phi_aligned, &zeta_polariz, m1, m2, f_ref, phiRef, inclination, S1x, S1y, S1z, S2x, S2y, S2z,
IMRPhenomPv2NRTidal_V);
2046 ret =
XLALSimIMRPhenomP(hptilde, hctilde, chi1_l, chi2_l, chip, thetaJN, m1, m2, distance, alpha0, phi_aligned, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv2NRTidal_V,
NRTidalv2_V,
params);
2049 for (
UINT4 idx = 0; idx < (*hptilde)->data->length; idx++) {
2050 PhPpolp = (*hptilde)->data->data[idx];
2051 PhPpolc = (*hctilde)->data->data[idx];
2052 (*hptilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolp + sin(2. * zeta_polariz) * PhPpolc;
2053 (*hctilde)->data->data[idx] = cos(2. * zeta_polariz) * PhPpolc - sin(2. * zeta_polariz) * PhPpolp;
2060 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2062 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2064 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2071 ret =
XLALSimIMRPhenomPv3(hptilde, hctilde, freqspv3, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, deltaF, f_ref,
params);
2080 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2082 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2084 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2092 ret =
XLALSimIMRPhenomPv3HMGetHplusHcross(hptilde, hctilde, freqspv3hm, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, deltaF, f_ref,
params);
2103 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2105 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2112 ROTATEY(inclination, spin1x, spin1y, spin1z);
2113 ROTATEY(inclination, spin2x, spin2y, spin2z);
2114 LNhatx = sin(inclination);
2116 LNhatz = cos(inclination);
2125 fStart = 0.9 *
f_min;
2135 f_min,
f_max, deltaF, kMax, phiRef, v0, m1, m2, fStart, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2, quadparam1, quadparam2,
2136 params, phaseO, amplitudeO, phiRefAtEnd);
2144 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2146 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2153 ROTATEY(inclination, spin1x, spin1y, spin1z);
2154 ROTATEY(inclination, spin2x, spin2y, spin2z);
2155 LNhatx = sin(inclination);
2157 LNhatz = cos(inclination);
2166 fStart = 0.9 *
f_min;
2176 f_min,
f_max, deltaF, kMax, phiRef, v0, m1, m2, fStart, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2, quadparam1, quadparam2,
2177 params, phaseO, amplitudeO, phiRefAtEnd);
2185 ret =
XLALSimNRSur4d2s(hptilde, hctilde, phiRef, deltaF,
f_min,
f_max, distance, inclination, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z);
2194 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
2196 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
2198 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2210 ret =
XLALSimIMRPhenomXASGenerateFD(hptilde, m1, m2, S1z, S2z, distance,
f_min,
f_max, deltaF, phiRef, f_ref,
params);
2215 *hctilde =
XLALCreateCOMPLEX16FrequencySeries(
"FD hcross", &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF, &((*hptilde)->sampleUnits), (*hptilde)->data->length);
2216 for (j = 0; j < (*hptilde)->data->length; j++) {
2217 (*hctilde)->data->data[j] = -I * cfac * (*hptilde)->data->data[j] * Ylmfactor;
2218 (*hptilde)->data->data[j] *=
pfac * Ylmfactor;
2227 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
2229 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
2231 LALDict *LALparams_aux;
2246 ret =
XLALSimIMRPhenomXHM(hptilde, hctilde, m1, m2, S1z, S2z,
f_min,
f_max, deltaF, distance, inclination, phiRef, f_ref, LALparams_aux);
2260 XLAL_ERROR(
XLAL_EINVAL,
"Non-default flags given, but this approximant does not support this case.");
2262 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
2264 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2267 #ifndef PHENOMXHMDEBUG
2281 if (resTest != 0 && Mtot > 500) {
2285 if (resTest == 0.) {
2286 ret =
XLALSimIMRPhenomXHM2(hptilde, hctilde, m1, m2, S1z, S2z,
f_min,
f_max, deltaF, distance, inclination, phiRef, f_ref,
params);
2288 ret =
XLALSimIMRPhenomXHM(hptilde, hctilde, m1, m2, S1z, S2z,
f_min,
f_max, deltaF, distance, inclination, phiRef, f_ref,
params);
2295 printf(
"\n\n**********Leaving ChooseFDWaveform *********************\n\n");
2304 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2308 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2311 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2322 ret =
XLALSimIMRPhenomXPGenerateFD(hptilde, hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef,
f_min,
f_max, deltaF, f_ref,
params);
2338 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2343 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2346 LALDict *LALparams_aux;
2361 XLAL_CHECK(
XLAL_SUCCESS == ret, ret,
"Failed to set quadrupole parameters from lambdas for IMRPhenomXP_NRTidalv2");
2369 ret =
XLALSimIMRPhenomXPHM(hptilde, hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination,phiRef,
f_min,
f_max, deltaF, f_ref, LALparams_aux);
2384 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2388 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2391 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2404 if (usemodes == 0) {
2405 ret =
XLALSimIMRPhenomXPHM(hptilde, hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef,
f_min,
f_max, deltaF, f_ref,
params);
2407 ret =
XLALSimIMRPhenomXPHMFromModes(hptilde, hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef,
f_min,
f_max, deltaF, f_ref,
params);
2418 LALDict *params_aux;
2433 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
2438 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2442 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2477 XLAL_ERROR(
XLAL_EFUNC,
"Error: Antisymmetric waveform generation not supported without PNR angles, please turn on PNR angles to produce waveform with asymmetries in the (2,2) and (2,-2) modes \n");
2494 distance, inclination,
2495 phiRef,
f_min,
f_max, deltaF, f_ref, params_aux
2504 distance, inclination,
2505 phiRef,
f_min,
f_max, deltaF, f_ref, params_aux
2520 XLALPrintError(
"FD version of approximant not implemented in lalsimulation\n");
2524 REAL8 polariz = longAscNodes;
2527 for (
UINT4 idx = 0; idx < (*hptilde)->data->length; idx++) {
2528 tmpP = (*hptilde)->data->data[idx];
2529 tmpC = (*hctilde)->data->data[idx];
2530 (*hptilde)->data->data[idx] = cos(2. * polariz) * tmpP + sin(2. * polariz) * tmpC;
2531 (*hctilde)->data->data[idx] = cos(2. * polariz) * tmpC - sin(2. * polariz) * tmpP;
2568 XLALPrintWarning(
"WARNING: The phiRef argument in XLALSimInspiralChooseTDModes will be removed in the future and is currently not used. \n");
2574 UINT4 PrecEOBversion;
2575 REAL8 spin1[3], spin2[3];
2583 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
2589 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
2590 if (
deltaT < 1. / 16385.)
2591 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
2593 XLALPrintWarning(
"XLAL Warning - %s: Small value of m1 = %e (kg) = %e (Msun) requested.\nPerhaps you have a unit conversion error?\n", __func__, m1, m1 /
LAL_MSUN_SI);
2595 XLALPrintWarning(
"XLAL Warning - %s: Small value of m2 = %e (kg) = %e (Msun) requested.\nPerhaps you have a unit conversion error?\n", __func__, m2, m2 /
LAL_MSUN_SI);
2597 XLALPrintWarning(
"XLAL Warning - %s: Large value of total mass m1+m2 = %e (kg) = %e (Msun) requested.\nSignal not likely to be in band of ground-based detectors.\n", __func__, m1 + m2, (m1 + m2) /
LAL_MSUN_SI);
2598 if (S1x * S1x + S1y * S1y + S1z * S1z > 1.000001)
2599 XLALPrintWarning(
"XLAL Warning - %s: S1 = (%e,%e,%e) with norm > 1 requested.\nAre you sure you want to violate the Kerr bound?\n", __func__, S1x, S1y, S1z);
2600 if (S2x * S2x + S2y * S2y + S2z * S2z > 1.000001)
2601 XLALPrintWarning(
"XLAL Warning - %s: S2 = (%e,%e,%e) with norm > 1 requested.\nAre you sure you want to violate the Kerr bound?\n", __func__, S2x, S2y, S2z);
2603 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
2604 if (
f_min > 40.000001)
2605 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
2621 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2623 hlm =
XLALSimInspiralTaylorT1PNModes(v0,
deltaT, m1, m2,
f_min, f_ref,
r, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(LALpars), amplitudeO, phaseO, lmax);
2632 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2634 hlm =
XLALSimInspiralTaylorT2PNModes(v0,
deltaT, m1, m2,
f_min, f_ref,
r, lambda1, lambda2,
XLALSimInspiralWaveformParamsLookupPNTidalOrder(LALpars), amplitudeO, phaseO, lmax);
2643 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2645 hlm =
XLALSimInspiralTaylorT3PNModes(v0,
deltaT, m1, m2,
f_min, f_ref,
r, lambda1, lambda2, 0, amplitudeO, phaseO, lmax);
2654 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2656 hlm =
XLALSimInspiralTaylorT4PNModes(v0,
deltaT, m1, m2,
f_min, f_ref,
r, lambda1, lambda2, 0, amplitudeO, phaseO, lmax);
2666 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
2673 for (
m = -
l;
m < 0;
m++) {
2678 for (j = 0; j < tmpmode->
data->
length; j++) {
2693 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2695 hlm =
XLALSimInspiralPrecessingNRSurModes(
deltaT, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
f_min, f_ref,
r, LALpars,
approximant);
2703 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2705 hlm =
XLALSimInspiralPrecessingNRSurModes(
deltaT, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
f_min, f_ref,
r, LALpars,
approximant);
2715 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2728 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2741 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2743 hlm =
XLALSimIMRPhenomTPHM_ChooseTDModes(m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
r,
deltaT,
f_min, f_ref, LALpars);
2752 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2754 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
2756 UINT4 SpinAlignedEOBversion;
2763 REAL8 lambda2Tidal1 = 0.0;
2764 REAL8 lambda2Tidal2 = 0.0;
2765 REAL8 omega02Tidal1 = 0.0;
2766 REAL8 omega02Tidal2 = 0.0;
2767 REAL8 lambda3Tidal1 = 0.0;
2768 REAL8 lambda3Tidal2 = 0.0;
2769 REAL8 omega03Tidal1 = 0.0;
2770 REAL8 omega03Tidal2 = 0.0;
2771 REAL8 quadparam1 = 1.0;
2772 REAL8 quadparam2 = 1.0;
2784 REAL8 domega220 = 0.0;
2785 REAL8 dtau220 = 0.0;
2786 REAL8 domega210 = 0.0;
2787 REAL8 dtau210 = 0.0;
2788 REAL8 domega330 = 0.0;
2789 REAL8 dtau330 = 0.0;
2790 REAL8 domega440 = 0.0;
2791 REAL8 dtau440 = 0.0;
2792 REAL8 domega550 = 0.0;
2793 REAL8 dtau550 = 0.0;
2824 &dynamics, &dynamicsHi,
2830 SpinAlignedEOBversion,
2831 lambda2Tidal1, lambda2Tidal2,
2832 omega02Tidal1, omega02Tidal2,
2833 lambda3Tidal1, lambda3Tidal2,
2834 omega03Tidal1, omega03Tidal2,
2835 quadparam1, quadparam2,
2836 nqcCoeffsInput, nqcFlag,
2849 UINT4 modeArrayCreated = 0;
2855 if (modeArray == NULL) {
2857 modeArrayCreated = 1;
2872 modeArray, modes->
l, -modes->
m
2874 sprintf(modeName,
"h%dm%d", modes->
l, modes->
m);
2893 modeArray, modes->
l, modes->
m
2900 modes = modes->
next;
2903 if (modeArrayCreated) {
2916 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2918 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
2926 PrecEOBversion = 401;
2935 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
2937 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
2945 PrecEOBversion = 402;
2953 XLALPrintError(
"XLAL ERROR - %s: maximum l implemented for SpinTaylors is 4, = %d requested.\n", __func__, lmax);
2981 XLALSimInspiralSpinTaylorDriver(NULL, NULL, &
V, &Phi, &Spin1x, &Spin1y, &Spin1z, &Spin2x, &Spin2y, &Spin2z, &LNhx, &LNhy, &LNhz, &E1x, &E1y, &E1z, 0.,
deltaT, m1, m2,
f_min, f_ref,
r, S1x, S1y, S1z, S2x, S2y, S2z, lnhx, lnhy, lnhz, e1x, e1y,
2983 INT4 ma_needs_destroy = 0;
2985 if (modearray == NULL) {
2987 ma_needs_destroy = 1;
2988 for (
l = 2;
l <= (
UINT4) lmax;
l++)
2991 errCode +=
XLALSimInspiralSpinTaylorHlmModesFromOrbit(&hlm,
V, Phi, LNhx, LNhy, LNhz, E1x, E1y, E1z, Spin1x, Spin1y, Spin1z, Spin2x, Spin2y, Spin2z, m1, m2,
r,
XLALSimInspiralWaveformParamsLookupPNAmplitudeOrder(LALpars), modearray);
3007 if (ma_needs_destroy)
3015 if (errCode || !(hlm))
3055 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
3061 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaF = %e requested...This corresponds to a very short TD signal (with padding). Consider a smaller value.\n", __func__, deltaF);
3062 if (deltaF < 1. / 4096.)
3063 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaF = %e requested...This corresponds to a very long TD signal. Consider a larger value.\n", __func__, deltaF);
3065 XLALPrintWarning(
"XLAL Warning - %s: Small value of m1 = %e (kg) = %e (Msun) requested...Perhaps you have a unit conversion error?\n", __func__, m1, m1 /
LAL_MSUN_SI);
3067 XLALPrintWarning(
"XLAL Warning - %s: Small value of m2 = %e (kg) = %e (Msun) requested...Perhaps you have a unit conversion error?\n", __func__, m2, m2 /
LAL_MSUN_SI);
3069 XLALPrintWarning(
"XLAL Warning - %s: Large value of total mass m1+m2 = %e (kg) = %e (Msun) requested...Signal not likely to be in band of ground-based detectors.\n", __func__, m1 + m2, (m1 + m2) /
LAL_MSUN_SI);
3070 if (S1x * S1x + S1y * S1y + S1z * S1z > 1.000001)
3071 XLALPrintWarning(
"XLAL Warning - %s: S1 = (%e,%e,%e) with norm > 1 requested...Are you sure you want to violate the Kerr bound?\n", __func__, S1x, S1y, S1z);
3072 if (S2x * S2x + S2y * S2y + S2z * S2z > 1.000001)
3073 XLALPrintWarning(
"XLAL Warning - %s: S2 = (%e,%e,%e) with norm > 1 requested...Are you sure you want to violate the Kerr bound?\n", __func__, S2x, S2y, S2z);
3075 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
3076 if (
f_min > 40.000001)
3077 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
3095 LALValue *ModeArray = NULL;
3096 LALDict *params_aux;
3119 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3122 XLALSimIMRPhenomXHMModes(&hlms, m1, m2, S1z, S2z, deltaF,
f_min,
f_max, f_ref, phiRef, distance,
params);
3130 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3133 XLALSimIMRPhenomXPHMModes(&hlms, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef, distance, inclination,
params);
3151 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3180 XLAL_ERROR_NULL(
XLAL_EFUNC,
"Error: Antisymmetric waveform generation not supported without PNR angles, please turn on PNR angles to produce waveform with asymmetries in the (2,2) and (2,-2) modes \n");
3190 XLALSimIMRPhenomXPHMModes(&hlms, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef, distance, inclination, params_aux);
3204 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3217 if (ModeArray == NULL) {
3234 nmodes = modeseq->
length / 2;
3239 nmodes = modeseq->
length / 2;
3254 for (
UINT4 i = 0;
i < nmodes;
i++) {
3256 l = modeseq->
data[2 *
i];
3257 m = modeseq->
data[2 *
i + 1];
3270 if (nmodes == 1 && modeseq->
data[0] == 2 && abs(modeseq->
data[0]) == 2) {
3275 retcode =
XLALSimIMRSEOBNRv4HMROM_Modes(hlms_tmp, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z, -1, eobmodes, 1);
3284 length = (*hlms_tmp)->mode->data->length - 1;
3288 for (
UINT4 i = 0;
i < nmodes;
i++) {
3290 l = modeseq->
data[2 *
i];
3291 m = modeseq->
data[2 *
i + 1];
3306 for (
INT4 j = 0; j < length; j++) {
3319 for (
INT4 i = -length;
i <= length;
i++) {
3320 freqsSphH->
data[
i + length] =
i * deltaF;
3332 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3341 if(ModeArray == NULL)
3351 nmodes = modeseq->
length/2;
3357 nmodes = modeseq->
length/2;
3368 m = modeseq->
data[2*
i+1];
3380 UINT2 eobmodesv5 = 1;
3383 retcode =
XLALSimIMRSEOBNRv5HMROM_Modes(hlms_tmp, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z, -1, eobmodesv5,
true);
3392 length = (*hlms_tmp)->mode->data->length -1;
3400 m = modeseq->
data[2*
i+1];
3416 for(
INT4 j=0; j<length; j++)
3430 for (
INT4 i = -length;
i<=length;
i++)
3432 freqsSphH->
data[
i+length] =
i*deltaF;
3444 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3453 if(ModeArray == NULL)
3476 nmodes = modeseq->
length/2;
3482 nmodes = modeseq->
length/2;
3505 m = modeseq->
data[2*
i+1];
3517 UINT2 eobmodesv5hm = 7;
3518 if(nmodes == 1 && modeseq->
data[0]==2 && abs(modeseq->
data[1])==2)
3526 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
3527 modeseq->
data[2] == 3 && abs(modeseq->
data[3]) == 3)
3533 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
3534 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
3535 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1)
3541 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
3542 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
3543 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
3544 modeseq->
data[6] == 4 && abs(modeseq->
data[7]) == 4)
3550 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
3551 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
3552 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
3553 modeseq->
data[6] == 4 && abs(modeseq->
data[7]) == 4 &&
3554 modeseq->
data[8] == 5 && abs(modeseq->
data[9]) == 5)
3560 modeseq->
data[0] == 2 && abs(modeseq->
data[1]) == 2 &&
3561 modeseq->
data[4] == 3 && abs(modeseq->
data[5]) == 3 &&
3562 modeseq->
data[2] == 2 && abs(modeseq->
data[3]) == 1 &&
3563 modeseq->
data[8] == 4 && abs(modeseq->
data[9]) == 4 &&
3564 modeseq->
data[10] == 5 && abs(modeseq->
data[11]) == 5 &&
3565 modeseq->
data[6] == 3 && abs(modeseq->
data[7]) == 2)
3570 retcode =
XLALSimIMRSEOBNRv5HMROM_Modes(hlms_tmp, phiRef, deltaF,
f_min,
f_max, f_ref, distance, m1, m2, S1z, S2z, -1, eobmodesv5hm,
true);
3579 length = (*hlms_tmp)->mode->data->length -1;
3587 m = modeseq->
data[2*
i+1];
3603 for(
INT4 j=0; j<length; j++)
3617 for (
INT4 i = -length;
i<=length;
i++)
3619 freqsSphH->
data[
i+length] =
i*deltaF;
3631 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
3643 if (ModeArray == NULL) {
3663 nmodes = modeseq->
length / 2;
3667 nmodes = modeseq->
length / 2;
3685 for (
UINT4 i = 0;
i < nmodes;
i++) {
3687 l = modeseq->
data[2 *
i];
3688 m = modeseq->
data[2 *
i + 1];
3714 retcode =
XLALSimIMRPhenomHMGethlmModes(hlms_tmp, freqs, m1, m2, 0., 0., S1z, 0., 0., S2z, phiRef, deltaF, f_ref, params_aux);
3724 length = (*hlms_tmp)->mode->data->length - 1;
3737 for (
UINT4 i = 0;
i < nmodes;
i++) {
3739 l = modeseq->
data[2 *
i];
3740 m = modeseq->
data[2 *
i + 1];
3751 COMPLEX16 extra_factor_lm = minus1l * amp0 * cpow(extra_phase,
m);
3760 extra_factor_lm = minus1l;
3762 extra_factor_lm = minus1l * extra_factor_lm;
3765 for (
INT4 j = 0; j < length; j++) {
3783 for (
INT4 i = -length;
i <= length;
i++) {
3784 freqsSphH->
data[
i + length] =
i * deltaF;
int XLALDictContains(const LALDict *dict, const char *key)
void XLALDestroyDict(LALDict *dict)
LALDict * XLALDictDuplicate(LALDict *old)
LALDict * XLALCreateDict(void)
int XLALDictInsertUINT4Value(LALDict *dict, const char *key, UINT4 value)
int XLALDictInsertUINT2Value(LALDict *dict, const char *key, UINT2 value)
INT4 XLALDictLookupINT4Value(LALDict *dict, const char *key)
int XLALDictInsertREAL8Value(LALDict *dict, const char *key, REAL8 value)
int XLALSimIMRPhenomHM(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1z, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 deltaF, REAL8 f_ref, LALDict *extraParams)
int XLALSimIMRPhenomXPHMModes(SphHarmFrequencySeries **hlms, REAL8 m1_SI, REAL8 m2_SI, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, REAL8 phiRef, REAL8 distance, REAL8 inclination, LALDict *LALparams)
Function to obtain a SphHarmFrequencySeries with the individual modes h_lm.
int XLALSimIMRPhenSpinInspiralRDGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phi0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 f_ref, REAL8 r, REAL8 iota, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, int phaseO, int ampO, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams)
int XLALSimIMRPhenomPv3(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 deltaF, const REAL8 f_ref, LALDict *extraParams)
Driver routine to compute the precessing inspiral-merger-ringdown phenomenological waveform IMRPhenom...
int XLALSimIMRSEOBNRv4HMROM_Modes(SphHarmFrequencySeries **hlm, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max, UINT4 nModes, bool use_hybridization)
int XLALSimIMRPhenomPv3HMGetHplusHcross(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 deltaF, REAL8 f_ref, LALDict *extraParams)
int XLALSimIMRTEOBResumS(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiRef, const REAL8 deltaT, const REAL8 m1, const REAL8 m2, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, const REAL8 lambda1, const REAL8 lambda2, const REAL8 distance, const REAL8 inclination, const REAL8 longAscNodes, LALDict *LALparams, const REAL8 eccentricity, const REAL8 meanPerAno, const REAL8 f_min, const REAL8 f_ref)
int XLALSimIMRSEOBNRv5HMROM_Modes(SphHarmFrequencySeries **hlm, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max, UINT4 nModes, bool use_hybridization)
int XLALSimIMRPhenomHMGethlmModes(SphHarmFrequencySeries **hlms, REAL8Sequence *freqs, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 phiRef, const REAL8 deltaF, REAL8 f_ref, LALDict *extraParams)
int XLALSimInspiralNRWaveformGetHplusHcross(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 inclination, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 r, REAL8 fStart, REAL8 fRef, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, const char *NRDataFile, LALValue *ModeArray)
int XLALSimIMREOBNRv2HMROM(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, const int higherModesFlag)
int XLALSimSpinInspiralGenerator(REAL8TimeSeries **hPlus, REAL8TimeSeries **hCross, REAL8 phi_start, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 f_ref, REAL8 r, REAL8 iota, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, int phaseO, int ampO, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams)
int XLALSimIMRSpinEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1[], const REAL8 spin2[], const UINT4 PrecEOBversion)
Standard interface for SEOBNRv3 waveform generator: calls XLALSimIMRSpinEOBWaveformAll.
int XLALSimIMRSEOBNRv4HMROM(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max, UINT4 nModes, bool use_hybridization, LALDict *LALParams)
int XLALSimIMRSEOBNRv5HMROM(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max, UINT4 nModes, bool use_hybridization, LALDict *LALParams)
int XLALSimIMRSpinPrecEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 INspin1[], const REAL8 INspin2[], const UINT4 PrecEOBversion, LALDict *LALParams)
SphHarmTimeSeries * XLALSimIMRSpinPrecEOBModes(const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 INspin1[], const REAL8 INspin2[], const UINT4 PrecEOBversion, LALDict *LALParams)
INT4 XLALSimIMRNRHybSur3dq8Polarizations(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 inclination, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 distance, REAL8 fMin, REAL8 fRef, REAL8 chi1z, REAL8 chi2z, LALDict *LALparams)
Reference: arxiv:1812.07865.
SphHarmTimeSeries * XLALSimIMRNRHybSur3dq8Modes(REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 chi1z, REAL8 chi2z, REAL8 fMin, REAL8 fRef, REAL8 distance, LALDict *LALparams)
Reference: arxiv:1812.07865.
int XLALSimNRSur4d2s(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z)
Compute waveform in LAL format for the NRSur4d2s_FDROM NR surrogate model.
#define ROTATEY(angle, vx, vy, vz)
int XLALSimInspiralApproximantAcceptTestGRParams(Approximant approx)
const char * XLALSimInspiralGetStringFromApproximant(Approximant approximant)
Returns a string associated with an Approximant enum value.
int XLALSimInspiralSetQuadMonParamsFromLambdas(LALDict *LALparams)
if you do NOT provide a quadparam[1,2] term and you DO provide lamdba[1,2] then we calculate quad-mon...
int XLALSimLorentzInvarianceViolationTerm(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1, REAL8 m2, REAL8 r, LALDict *LALparams)
SphHarmTimeSeries * XLALSimInspiralTaylorT2PNModes(REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int lmax)
int XLALSimInspiralEFD(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8 phiRef, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 i, const REAL8 r, const REAL8 inclination_azimuth, const REAL8 e_min, int phaseO)
int XLALSimInspiralSpinTaylorDriver(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries **Vout, REAL8TimeSeries **Phiout, REAL8TimeSeries **S1xout, REAL8TimeSeries **S1yout, REAL8TimeSeries **S1zout, REAL8TimeSeries **S2xout, REAL8TimeSeries **S2yout, REAL8TimeSeries **S2zout, REAL8TimeSeries **LNhxout, REAL8TimeSeries **LNhyout, REAL8TimeSeries **LNhzout, REAL8TimeSeries **E1xout, REAL8TimeSeries **E1yout, REAL8TimeSeries **E1zout, REAL8 phiRef, REAL8 deltaT, REAL8 m1_SI, REAL8 m2_SI, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALparams, Approximant approx)
Driver function to generate any of SpinTaylorT1/T5/T4 If the output entries are not null the relative...
SphHarmTimeSeries * XLALSimInspiralTaylorT4PNModes(REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int lmax)
SphHarmTimeSeries * XLALSimInspiralTaylorT3PNModes(REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int lmax)
int XLALSimInspiralGeneratorAddConditioningForApproximant(LALSimInspiralGenerator *generator, int approximant)
int XLALSimInspiralTaylorT2PNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO)
int XLALSimInspiralTEOBResumROM(REAL8TimeSeries **hPlus, REAL8TimeSeries **hCross, REAL8 phiRef, REAL8 deltaT, REAL8 fLow, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 lambda1, REAL8 lambda2)
INT4 XLALSimInspiralSpinTaylorHlmModesFromOrbit(SphHarmTimeSeries **hlm, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *LNhx, REAL8TimeSeries *LNhy, REAL8TimeSeries *LNhz, REAL8TimeSeries *e1x, REAL8TimeSeries *e1y, REAL8TimeSeries *e1z, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8 m1_SI, REAL8 m2_SI, REAL8 distance, int ampO, LALValue *modearray)
SphHarmTimeSeries * XLALSimInspiralTaylorT1PNModes(REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO, int lmax)
int XLALSimInspiralTaylorT4PNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO)
int XLALSimInspiralSpinDominatedWaveformInterfaceTD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 D, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 incl, int phaseO, int amplitudeO, REAL8 phiRef)
Interface routine, calculating the prefered variables for the Spin-dominated waveforms.
static int generate_fd_waveform(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, LALDict *params, LALSimInspiralGenerator *myself)
Fourier domain polarizations.
static int generate_fd_modes(SphHarmFrequencySeries **hlm, LALDict *params, LALSimInspiralGenerator *myself)
Define waveform generator methods to generate polarizations or modes in time or Fourier domain for le...
static int generate_td_waveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, LALDict *params, LALSimInspiralGenerator *myself)
Time domain polarizations.
static int XLALSimInspiralChooseTDWaveform_legacy(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaT, REAL8 f_min, REAL8 f_ref, LALDict *params, Approximant approximant)
Copy of the old code of XLALSimInspiralChooseTDWaveform().
static int generate_td_modes(SphHarmTimeSeries **hlm, LALDict *params, LALSimInspiralGenerator *myself)
Time domain modes.
#define DEFINE_GENERATOR_TEMPLATE(approx, fd_modes, fd_waveform, td_modes, td_waveform)
Define which methods are supported by every legacy approximant.
static int initialize(LALSimInspiralGenerator *myself, LALDict *params)
Method to initialize generator.
static SphHarmFrequencySeries * XLALSimInspiralChooseFDModes_legacy(REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, REAL8 phiRef, REAL8 distance, REAL8 inclination, LALDict *params, Approximant approximant)
Copy of the old code of XLALSimInspiralChooseFDModes().
static SphHarmTimeSeries * XLALSimInspiralChooseTDModes_legacy(REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 f_min, REAL8 f_ref, REAL8 r, LALDict *LALpars, int lmax, Approximant approximant)
Copy of the old code of XLALSimInspiralChooseTDModes().
static int XLALSimInspiralChooseFDWaveform_legacy(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, LALDict *params, Approximant approximant)
REAL8 XLALSimUniversalRelationlambda3TidalVSlambda2Tidal(REAL8 lambda2bar)
Eq.
REAL8 XLALSimUniversalRelationomega03TidalVSlambda3Tidal(REAL8 lambda3bar)
Eq.
REAL8 XLALSimUniversalRelationQuadMonVSlambda2Tidal(REAL8 lambda2bar)
REAL8 XLALSimUniversalRelationomega02TidalVSlambda2Tidal(REAL8 lambda2bar)
Eq.
void XLALDestroyValue(LALValue *value)
#define FIX_REFERENCE_FREQUENCY(f_ref, f_min, approximant)
COMPLEX16FrequencySeries * XLALResizeCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series, int first, size_t length)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void * XLALMalloc(size_t n)
@ IMRPhenomPv1_V
version 1: based on IMRPhenomC
@ IMRPhenomPv2_V
version 2: based on IMRPhenomD
@ IMRPhenomPv2NRTidal_V
version Pv2_NRTidal: based on IMRPhenomPv2; NRTides added before precession; can be used with both NR...
@ SEOBNRv4TSurrogate_CUBIC
use cubic splines in frequency
@ NRTidal_V
version NRTidal: based on https://arxiv.org/pdf/1706.02969.pdf
@ NoNRT_V
special case for PhenomPv2 BBH baseline
@ NRTidalv2NSBH_V
version NRTidalv2: https://arxiv.org/abs/1905.06011 with amplitude corrections for NSBH (used for SEO...
@ NRTidalv2_V
version NRTidalv2: https://arxiv.org/abs/1905.06011
int XLALSimIMREOBNRv2AllModes(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fLower, const REAL8 distance, const REAL8 inclination)
This function generates the plus and cross polarizations for the EOBNRv2 approximant with all availab...
SphHarmTimeSeries * XLALSimIMREOBNRv2Modes(const REAL8 deltaT, const REAL8 m1, const REAL8 m2, const REAL8 fLower, const REAL8 distance)
Wrapper function to generate the -2 spin-weighted spherical harmonic modes (as opposed to generating ...
int XLALSimIMREOBNRv2DominantMode(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fLower, const REAL8 distance, const REAL8 inclination)
This function generates the plus and cross polarizations for the dominant (2,2) mode of the EOBNRv2 a...
int XLALSimIMRPhenomBGenerateFD(COMPLEX16FrequencySeries **htilde, const REAL8 phiPeak, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 f_min, const REAL8 f_max, const REAL8 distance)
Driver routine to compute the spin-aligned, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomP(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8 chi1_l, const REAL8 chi2_l, const REAL8 chip, const REAL8 thetaJ, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 distance, const REAL8 alpha0, const REAL8 phic, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, const REAL8 f_ref, IMRPhenomP_version_type IMRPhenomP_version, NRTidal_version_type NRTidal_version, LALDict *extraParams)
Driver routine to compute the precessing inspiral-merger-ringdown phenomenological waveform IMRPhenom...
int XLALSimIMRPhenomDGenerateFD(COMPLEX16FrequencySeries **htilde, const REAL8 phi0, const REAL8 fRef, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi1, const REAL8 chi2, const REAL8 f_min, const REAL8 f_max, const REAL8 distance, LALDict *extraParams, NRTidal_version_type NRTidal_version)
Driver routine to compute the spin-aligned, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomPCalculateModelParametersFromSourceFrame(REAL8 *chi1_l, REAL8 *chi2_l, REAL8 *chip, REAL8 *thetaJN, REAL8 *alpha0, REAL8 *phi_aligned, REAL8 *zeta_polariz, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_ref, const REAL8 phiRef, const REAL8 incl, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, IMRPhenomP_version_type IMRPhenomP_version)
Function to map LAL parameters (masses, 6 spin components, phiRef and inclination at f_ref) (assumed ...
double XLALSimIMRPhenomBComputeChi(const REAL8 m1, const REAL8 m2, const REAL8 s1z, const REAL8 s2z)
Compute the dimensionless, spin-aligned parameter chi as used in the IMRPhenomB waveform.
int XLALSimIMRPhenomAGenerateFD(COMPLEX16FrequencySeries **htilde, const REAL8 phiPeak, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_min, const REAL8 f_max, const REAL8 distance)
Driver routine to compute the non-spinning, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomAGenerateTD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiPeak, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_min, const REAL8 f_max, const REAL8 distance, const REAL8 inclination)
Driver routine to compute the non-spinning, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomCGenerateTD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiPeak, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 f_min, const REAL8 f_max, const REAL8 distance, const REAL8 inclination, LALDict *extraParams)
Driver routine to compute the spin-aligned, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomCGenerateFD(COMPLEX16FrequencySeries **htilde, const REAL8 phiPeak, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 f_min, const REAL8 f_max, const REAL8 distance, LALDict *extraParams)
Driver routine to compute the spin-aligned, inspiral-merger-ringdown phenomenological waveform IMRPhe...
int XLALSimIMRPhenomNSBH(COMPLEX16FrequencySeries **htilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 mBH_SI, REAL8 mNS_SI, REAL8 chi_BH, REAL8 chi_NS, LALDict *extraParams)
Driver routine to compute the single-spin, non-precessing, neutron-star-black-hole,...
int XLALSimIMRPhenomBGenerateTD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiPeak, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 f_min, const REAL8 f_max, const REAL8 distance, const REAL8 inclination)
Driver routine to compute the spin-aligned, inspiral-merger-ringdown phenomenological waveform IMRPhe...
SphHarmTimeSeries * XLALSimIMRPhenomTPHM_ChooseTDModes(REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 deltaT, REAL8 fmin, REAL8 fRef, LALDict *lalParams)
Routine to be used by ChooseTDModes, it returns a list of the time-domain modes of the IMRPhenomTPHM ...
int XLALSimIMRPhenomTHM(REAL8TimeSeries **hp, REAL8TimeSeries **hc, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1L, REAL8 chi2L, REAL8 distance, REAL8 inclination, REAL8 deltaT, REAL8 fmin, REAL8 fRef, REAL8 phiRef, LALDict *lalparams)
Routine to compute time domain polarisations for IMRPhenomTHM model.
SphHarmTimeSeries * XLALSimIMRPhenomTHM_Modes(REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1L, REAL8 chi2L, REAL8 distance, REAL8 deltaT, REAL8 fmin, REAL8 fRef, REAL8 phiRef, LALDict *lalParams)
Routine to compute time domain Spin-Weighted Spherical Harmonic modes for IMRPhenomTHM model.
int XLALSimIMRPhenomT(REAL8TimeSeries **hp, REAL8TimeSeries **hc, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1L, REAL8 chi2L, REAL8 distance, REAL8 inclination, REAL8 deltaT, REAL8 fmin, REAL8 fRef, REAL8 phiRef, LALDict *lalParams)
Routine to compute time domain polarisations for IMRPhenomT model.
int XLALSimIMRPhenomTPHM(REAL8TimeSeries **hp, REAL8TimeSeries **hc, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 deltaT, REAL8 fmin, REAL8 fRef, REAL8 phiRef, LALDict *lalParams)
Routine to compute time-domain polarizations for the IMRPhenomTPHM model.
int XLALSimIMRPhenomTP(REAL8TimeSeries **hp, REAL8TimeSeries **hc, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 deltaT, REAL8 fmin, REAL8 fRef, REAL8 phiRef, LALDict *lalParams)
Routine to compute time-domain polarizations for the IMRPhenomTP model.
int XLALSimIMRPhenomXPHMFromModes(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, REAL8 f_min, REAL8 f_max, const REAL8 deltaF, REAL8 fRef_In, LALDict *lalParams)
Returns hptilde and hctilde of the multimode precessing waveform for positive frequencies in an equal...
int XLALSimIMRPhenomXASGenerateFD(COMPLEX16FrequencySeries **htilde22, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1L, REAL8 chi2L, REAL8 distance, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 phiRef, REAL8 fRef_In, LALDict *lalParams)
Driver routine to calculate an IMRPhenomX aligned-spin, inspiral-merger-ringdown phenomenological wav...
int XLALSimIMRPhenomXHMModes(SphHarmFrequencySeries **hlms, REAL8 m1_SI, REAL8 m2_SI, REAL8 S1z, REAL8 S2z, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, REAL8 phiRef, REAL8 distance, LALDict *LALparams)
Function to obtain a SphHarmFrequencySeries with the individual modes h_lm.
int XLALSimIMRPhenomXHM(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1z, REAL8 chi2z, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 fRef_In, LALDict *lalParams)
Returns the hptilde and hctilde of the multimode waveform for positive frequencies.
int XLALSimIMRPhenomXPGenerateFD(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, REAL8 f_min, REAL8 f_max, const REAL8 deltaF, REAL8 fRef_In, LALDict *lalParams)
int XLALSimIMRPhenomXPHM(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1x, REAL8 chi1y, REAL8 chi1z, REAL8 chi2x, REAL8 chi2y, REAL8 chi2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 fRef_In, LALDict *lalParams)
Returns hptilde and hctilde of the multimode precessing waveform for positive frequencies in an equal...
int XLALSimIMRPhenomXHM2(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1L, REAL8 chi2L, REAL8 distance, REAL8 f_min, REAL8 f_max, REAL8 deltaF, REAL8 inclination, REAL8 phiRef, REAL8 fRef_In, LALDict *lalParams)
Returns the hptilde and hctilde of the multimode waveform for positive frequencies.
int XLALSimIMRSEOBNRv4ROM(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max, LALDict *LALparams, NRTidal_version_type NRTidal_version)
Compute waveform in LAL format for the SEOBNRv4_ROM model.
int XLALSimIMRSEOBNRv2ROMDoubleSpin(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2)
Compute waveform in LAL format for the SEOBNRv2_ROM_DoubleSpin model.
int XLALSimIMRSEOBNRv2ROMDoubleSpinHI(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max)
Compute waveform in LAL format for the SEOBNRv2_ROM_DoubleSpin_HI model.
int XLALSimIMRSEOBNRv1ROMEffectiveSpin(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi)
Compute waveform in LAL format for the SEOBNRv1_ROM_EffectiveSpin model.
int XLALSimIMRSEOBNRv2ROMEffectiveSpin(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi)
Compute waveform in LAL format for the SEOBNRv2_ROM_EffectiveSpin model.
int XLALSimIMRSEOBNRv1ROMDoubleSpin(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2)
Compute waveform in LAL format for the SEOBNRv1_ROM_DoubleSpin model.
int XLALSimIMRSEOBNRv4TSurrogate(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, REAL8 lambda1, REAL8 lambda2, SEOBNRv4TSurrogate_spline_order spline_order)
Compute waveform in LAL format for the SEOBNRv4T_surrogate model.
int XLALSimIMRSpinAlignedEOBModes(SphHarmTimeSeries **hlmmode, REAL8Vector **dynamics_out, REAL8Vector **dynamicsHi_out, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion, const REAL8 lambda2Tidal1, const REAL8 lambda2Tidal2, const REAL8 omega02Tidal1, const REAL8 omega02Tidal2, const REAL8 lambda3Tidal1, const REAL8 lambda3Tidal2, const REAL8 omega03Tidal1, const REAL8 omega03Tidal2, const REAL8 quadparam1, const REAL8 quadparam2, REAL8Vector *nqcCoeffsInput, const INT4 nqcFlag, LALDict *PAParams, LALDict *TGRParams)
This function generates spin-aligned SEOBNRv1,2,2opt,4,4opt,2T,4T,4HM complex modes hlm.
int XLALSimIMRSpinAlignedEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion, LALDict *LALparams)
int XLALSimIMRPhenomDNRTidal(COMPLEX16FrequencySeries **htilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1, REAL8 chi2, REAL8 lambda1, REAL8 lambda2, LALDict *extraParams, NRTidal_version_type NRTidal_version)
Compute waveform in LAL format for the IMRPhenomD_NRTidal tidal model based on IMRPhenomD.
int XLALSimIMRSEOBNRv4ROMNRTidal(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1, REAL8 chi2, REAL8 Lambda1, REAL8 Lambda2, LALDict *LALparams, NRTidal_version_type NRTidal_version)
Compute waveform in LAL format for the SEOBNRv4_ROM_NRTidal tidal model based on SEOBNRv4_ROM.
int XLALSimIMRLackeyTidal2013(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 mBH_SI, REAL8 mNS_SI, REAL8 chi_BH, REAL8 Lambda)
Compute waveform in LAL format for the Lackey et al (2013) tidal model based on SEOBNRv2_ROM_DoubleSp...
void XLALSimInspiralParseDictionaryToChooseTDWaveform(REAL8 *m1, REAL8 *m2, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 *distance, REAL8 *inclination, REAL8 *phiRef, REAL8 *longAscNodes, REAL8 *eccentricity, REAL8 *meanPerAno, REAL8 *deltaT, REAL8 *f_min, REAL8 *f_ref, LALDict *params)
Insert all the input arguments needed by XALSimInspiralChooseTDWaveform() into a laldictionary.
void XLALSimInspiralParseDictionaryToChooseTDModes(REAL8 *phiRef, REAL8 *deltaT, REAL8 *m1, REAL8 *m2, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 *f_min, REAL8 *f_ref, REAL8 *distance, INT4 *lmax, LALDict *params)
Insert all the input arguments needed by XLALSimInspiralChooseTDModes() into a laldictionary.
void XLALSimInspiralParseDictionaryToChooseFDWaveform(REAL8 *m1, REAL8 *m2, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 *distance, REAL8 *inclination, REAL8 *phiRef, REAL8 *longAscNodes, REAL8 *eccentricity, REAL8 *meanPerAno, REAL8 *deltaF, REAL8 *f_min, REAL8 *f_max, REAL8 *f_ref, LALDict *params)
Insert all the input arguments needed by XLALSimInspiralChooseFDWaveform() into a laldictionary.
void XLALSimInspiralParseDictionaryToChooseFDModes(REAL8 *m1, REAL8 *m2, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 *deltaF, REAL8 *f_min, REAL8 *f_max, REAL8 *f_ref, REAL8 *phiRef, REAL8 *distance, REAL8 *inclination, LALDict *params)
Insert all the input arguments needed by XLALSimInspiralChooseFDModes() into a laldictionary.
int XLALSimInspiralTDFromFD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaT, REAL8 f_min, REAL8 f_ref, LALDict *LALparams, Approximant approximant)
Helper routines for XLALSimInspiralTD(): performs conditioning of a FD waveform and transforms it to ...
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
@ TaylorR2F4
A frequency domain model closely related to TaylorT4.
@ SpinTaylorT4
Spinning case T4 models (lalsimulation's equivalent of SpinTaylorFrameless).
@ IMRPhenomPv3
Frequency domain (generic spins) inspiral-merger-ringdown templates of Hannam et al....
@ TaylorF2RedSpinTidal
TaylorF2 waveforms for non-precessing spins, defined in terms of a single (reduced-spin) parameter [A...
@ SpinTaylorT5Fourier
Frequency domain (generic spins) inspiral only waveforms based on TaylorT5, , (the paper refers to S...
@ SEOBNRv2_ROM_DoubleSpin_HI
High resolution low-mass double-spin frequency domain reduced order model of spin-aligned EOBNR model...
@ SEOBNRv4_ROM_NRTidal
Low-mass double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv4 [Bohe ...
@ IMRPhenomXAS_NRTidalv2
Spin non-precessing EOBNR model v4 with higher modes post-adiabatic dynamics (time domain) and TGR ri...
@ SEOBNRv2
Spin-aligned EOBNR model v2.
@ IMRPhenomTPHM
Time domain, precessing phenomenological IMR waveform model for L=2 sector ([arXiv: 20XY....
@ IMRPhenomP
Frequency domain (generic spins) inspiral-merger-ringdown templates of Hannam et al....
@ SEOBNRv4_ROM_NRTidalv2
based on NRTidalv2; https://arxiv.org/abs/1905.06011.
@ IMRPhenomXP
Frequency domain, precessing phenomenological IMR waveform model.
@ SEOBNRv2_opt
Optimized Spin-aligned EOBNR model v2.
@ SEOBNRv3_opt_rk4
USE RK4 Optimized Spin precessing EOBNR model v3.
@ IMRPhenomC
Frequency domain (non-precessing spins) inspiral-merger-ringdown templates of Santamaria et al [Santa...
@ SEOBNRv4HM_ROM
Low-mass double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv4hm.
@ IMRPhenomPv2_NRTidal
Frequency domain tidal version of IMRPhenomPv2, using NRTidal framework from arXiv:1706....
@ SEOBNRv3_pert
Perturbed [m1 -> m1*(1+1e-15)] Spin precessing EOBNR model v3.
@ SEOBNRv1
Spin-aligned EOBNR model.
@ Lackey_Tidal_2013_SEOBNRv2_ROM
Frequency domain tidal model based on reduced order model of SEOBNRv2.
@ NRHybSur3dq8
Time domain, aligned-spin, higher modes, hybridized.
@ HGimri
Time domain inspiral-merger-ringdown waveform for quasi-circular intermediate mass-ratio inspirals [H...
@ SEOBNRv4
Spin nonprecessing EOBNR model v4.
@ SEOBNRv3
Spin precessing EOBNR model v3.
@ IMRPhenomXO4a
Frequency domain, precessing with subdominant modes phenomenological IMR waveform model with NR-tuned...
@ TEOBResum_ROM
Time domain reduced order model of EOB with tidal effects.
@ IMRPhenomNSBH
NSBH Tidal model.
@ IMRPhenomXPHM
Frequency domain, precessing with subdominant modes phenomenological IMR waveform model.
@ IMRPhenomD
Frequency domain (non-precessing spins) inspiral-merger-ringdown templates of Husa et al,...
@ IMRPhenomXHM
Frequency domain, non-precessing phenomenological IMR waveform model with subdominant modes ([arXiv:2...
@ EccentricFD
Frequency domain waveform in the SPA to describe low eccentricity systems.
@ SEOBNRv2_ROM_EffectiveSpin
Single-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv2.
@ SEOBNRv4P
Spin precessing EOBNR model based on SEOBNRv4.
@ NRSur7dq4
q=4 extension of NRSur7dq2, arxiv: 1905.09300
@ IMRPhenomD_NRTidal
Uses arxiv:1706.02969 to upgrad IMRPhenomD to a tidal approximant.
@ TaylorF2RedSpin
TaylorF2 waveforms for non-precessing spins, defined in terms of a single (reduced-spin) parameter [A...
@ NR_hdf5
Time domain, NR waveform from HDF file.
@ SEOBNRv1_ROM_EffectiveSpin
Single-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv1 See [Purrer:201...
@ TaylorF2NLTides
The standard stationary phase approximation including a phenomenological model of nonlinear tidal eff...
@ IMRPhenomTP
Time domain, non-precessing phenomenological IMR waveform model with subdominant modes ([arXiv: 20XY....
@ IMRPhenomD_NRTidalv2
NRTidalv2; https://arxiv.org/abs/1905.06011.
@ IMRPhenomA
Time domain (non-spinning) inspiral-merger-ringdown waveforms generated from the inverse FFT of IMRPh...
@ IMRPhenomHM
Frequency domain with higher modes (non-precessing spins) inspiral-merger-ringdown templates,...
@ TaylorF2Ecc
The standard stationary phase approximation with eccentricity; Outputs a frequency-domain wave.
@ SEOBNRv4PHM
Spin precessing EOBNR model based on SEOBNRv4HM.
@ SpinTaylorT4Fourier
Frequency domain (generic spins) inspiral only waveforms based on TaylorT4, arXiv: 1408....
@ SpinDominatedWf
Time domain, inspiral only, 1 spin, precessing waveform, Tapai et al, arXiv: 1209....
@ IMRPhenomPv2
Frequency domain (generic spins) inspiral-merger-ringdown templates of Hannam et al....
@ IMRPhenomPv2_NRTidalv2
Frequency domain tidal version; based on https://arxiv.org/abs/1905.06011.
@ NRSur7dq2
Time domain, fully precessing NR surrogate model with up to ell=4 modes, arxiv: 1705....
@ TaylorT3
Time domain Taylor approximant in which phase is explicitly given as a function of time; outputs a ti...
@ SpinTaylorF2
Spinning case F2 models (single spin only).
@ EOBNRv2HM_ROM
Frequency domain reduced order model of model EOBNRv2HM, no spin but with higher modes.
@ IMRPhenomXAS
Frequency domain, non-precessing phenomenological IMR waveform model ([arXiv:2001....
@ EOBNRv2_ROM
Frequency domain reduced order model of model EOBNRv2HM, no spin neither higher modes.
@ SpinTaylorT5
Spinning case T5 models, which is a variant of the spinning version of the original TaylorT2 (see ) d...
@ PhenSpinTaylor
Inspiral part of the PhenSpinTaylorRD.
@ SEOBNRv4_ROM_NRTidalv2_NSBH
NSBH model based on SEOBNRv4_ROM_NRTidalv2.
@ SEOBNRv1_ROM_DoubleSpin
Double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv1 See [Purrer:201...
@ SEOBNRv4HM
Spin nonprecessing EOBNR model v4 with higher modes, PhysRevD.98.084028 [arXiv:1803....
@ TaylorF2
The standard stationary phase approximation; Outputs a frequency-domain wave.
@ SEOBNRv4_ROM
Low-mass double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv4.
@ SEOBNRv2_ROM_DoubleSpin
Double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv2.
@ IMRPhenomB
Time domain (non-precessing spins) inspiral-merger-ringdown waveforms generated from the inverse FFT ...
@ PhenSpinTaylorRD
Phenomenological waveforms, interpolating between a T4 spin-inspiral and the ringdown.
@ SEOBNRv2T
Tidal EOB model.
@ IMRPhenomTHM
Time domain, non-precessing phenomenological IMR waveform model for the dominant (2,...
@ IMRPhenomPv3HM
Frequency domain (generic spins) inspiral-merger-ringdown templates of Khan et al.
@ pSEOBNRv4HM_PA
Spin non-precessing EOBNR model v4 with higher modes post-adiabatic dynamics (time domain),...
@ SEOBNRv4T
Tidal EOB model.
@ TaylorT1
Time domain Taylor approximant in which the energy and flux are both kept as Taylor expansions and a ...
@ SEOBNRv5_ROM
Time domain, precessing phenomenological IMR waveform model with subdominant modes ([arXiv: 20XY....
@ EccentricTD
Time domain Taylor T4 approximant including orbital eccentricity effects.
@ SEOBNRv3_opt
Optimized Spin precessing EOBNR model v3.
@ SpinTaylorT1
Spinning case T1 models.
@ IMRPhenomXP_NRTidalv2
Tidal extension of IMRPhenomXP based on [arXiv:1905.06011].
@ TEOBResumS
Resummed Spin-aligned Tidal EOB.
@ SEOBNRv5HM_ROM
External Python model.
@ TaylorT2
Time domain Taylor approximant in which the phase evolution is obtained by iteratively solving post-...
@ SEOBNRv4T_surrogate
Double-spin frequency domain surrogate model of spin-aligned tidal EOBNR model SEOBNRv4T.
@ SEOBNRv4_opt
Optimized Spin-aligned EOBNR model v4.
@ LAL_SIM_INSPIRAL_TESTGR_PARAMS
These approximants cannot accept testGR params as input params.
int XLALSimInspiralEccentricTDPNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 e_min, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALHGimriGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 r, REAL8 i, REAL8 S1z)
int XLALSimInspiralSpinTaylorT5Fourier(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 fMin, REAL8 fMax, REAL8 deltaF, INT4 kMax, REAL8 phiRef, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams, INT4 phaseO, INT4 amplitudeO, INT4 phiRefAtEnd)
Driver routine to compute a precessing post-Newtonian inspiral waveform in the Fourier domain with ph...
int XLALSimInspiralSpinTaylorT5(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALparams)
Driver routine to compute a precessing post-Newtonian inspiral waveform with phasing computed from en...
int XLALSimInspiralInitialConditionsPrecessingApproxs(REAL8 *inc, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, const REAL8 inclIn, const REAL8 S1xIn, const REAL8 S1yIn, const REAL8 S1zIn, const REAL8 S2xIn, const REAL8 S2yIn, const REAL8 S2zIn, const REAL8 m1, const REAL8 m2, const REAL8 fRef, const REAL8 phiRef, LALSimInspiralFrameAxis axisChoice)
Function to specify the desired orientation of the spin components of a precessing binary.
int XLALSimInspiralSpinTaylorT4(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALParams)
int XLALSimInspiralSpinTaylorF2(COMPLEX16FrequencySeries **hplus_out, COMPLEX16FrequencySeries **hcross_out, REAL8 phi_ref, REAL8 deltaF, REAL8 m1_SI, REAL8 m2_SI, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, const REAL8 fStart, const REAL8 fEnd, const REAL8 f_ref, const REAL8 r, LALDict *moreParams, INT4 phaseO, INT4 amplitudeO)
Computes the stationary phase approximation to the Fourier transform of a chirp waveform with phase g...
int XLALSimInspiralSpinTaylorT1(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALparams)
int XLALSimInspiralSpinTaylorT4Fourier(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 fMin, REAL8 fMax, REAL8 deltaF, INT4 kMax, REAL8 phiRef, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams, INT4 phaseO, INT4 amplitudeO, INT4 phiRefAtEnd)
Driver routine to compute a precessing post-Newtonian inspiral waveform in the Fourier domain with ph...
int XLALSimInspiralTaylorF2Ecc(COMPLEX16FrequencySeries **htilde, const REAL8 phi_ref, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 S1z, const REAL8 S2z, const REAL8 fStart, const REAL8 fEnd, const REAL8 f_ref, const REAL8 r, const REAL8 eccentricity, LALDict *LALparams)
Computes the stationary phase approximation to the Fourier transform of a chirp waveform with eccentr...
int XLALSimInspiralTaylorF2ReducedSpinTidal(COMPLEX16FrequencySeries **htilde, const REAL8 phic, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 lam1, const REAL8 lam2, const REAL8 fStart, const REAL8 fEnd, const REAL8 r, const INT4 phaseO, const INT4 ampO)
Generate the "reduced-spin templates" proposed in http://arxiv.org/abs/1107.1267 Add the tidal phase ...
int XLALSimInspiralTaylorF2ReducedSpin(COMPLEX16FrequencySeries **htilde, const REAL8 phic, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 chi, const REAL8 fStart, const REAL8 fEnd, const REAL8 r, const INT4 phaseO, const INT4 ampO)
Driver routine to compute a non-precessing post-Newtonian inspiral waveform in the frequency domain,...
REAL8 XLALSimInspiralTaylorF2ReducedSpinComputeChi(const REAL8 m1, const REAL8 m2, const REAL8 s1z, const REAL8 s2z)
Compute the dimensionless, aligned-spin parameter chi as used in the TaylorF2RedSpin waveform.
int XLALSimInspiralTaylorEtPNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phic, REAL8 x0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 r, REAL8 i, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorT1PNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorF2(COMPLEX16FrequencySeries **htilde, const REAL8 phi_ref, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 S1z, const REAL8 S2z, const REAL8 fStart, const REAL8 fEnd, const REAL8 f_ref, const REAL8 r, LALDict *LALpars)
Computes the stationary phase approximation to the Fourier transform of a chirp waveform.
int XLALSimInspiralTaylorT3PNGenerator(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 fRef, REAL8 r, REAL8 i, REAL8 lambda1, REAL8 lambda2, LALSimInspiralTidalOrder tideO, int amplitudeO, int phaseO)
Driver routine to compute the post-Newtonian inspiral waveform.
int XLALSimInspiralTaylorF2NLTides(COMPLEX16FrequencySeries **htilde, const REAL8 phi_ref, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 S1z, const REAL8 S2z, const REAL8 fStart, const REAL8 fEnd, const REAL8 f_ref, const REAL8 r, LALDict *LALpars)
Computes the stationary phase approximation to the Fourier transform of a chirp waveform.
int XLALSimInspiralWaveformParamsNonGRAreDefault(LALDict *params)
SphHarmTimeSeries * XLALSimInspiralPrecessingNRSurModes(REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 fMin, REAL8 fRef, REAL8 distance, LALDict *LALparams, Approximant approximant)
This function evaluates the NRSur7dq2 or NRSur7dq4 surrogate model and returns the inertial frame mod...
int XLALSimInspiralPrecessingNRSurPolarizations(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 inclination, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 distnace, REAL8 fMin, REAL8 fRef, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, LALDict *LALparams, Approximant approximant)
This function evaluates the NRSur7dq2 or NRSur7dq4 surrogate model and sums over all ell <= 4 modes t...
SphHarmTimeSeries * XLALSphHarmTimeSeriesAddMode(SphHarmTimeSeries *appended, const COMPLEX16TimeSeries *inmode, UINT4 l, INT4 m)
Prepend a node to a linked list of SphHarmTimeSeries, or create a new head.
COMPLEX16TimeSeries * XLALSphHarmTimeSeriesGetMode(SphHarmTimeSeries *ts, UINT4 l, INT4 m)
Get the time series of a waveform's (l,m) spherical harmonic mode from a SphHarmTimeSeries linked lis...
UINT4 XLALSphHarmTimeSeriesGetMaxL(SphHarmTimeSeries *ts)
Get the largest l index of any mode in the SphHarmTimeSeries linked list.
COMPLEX16FrequencySeries * XLALSphHarmFrequencySeriesGetMode(SphHarmFrequencySeries *ts, UINT4 l, INT4 m)
Get the time series of a waveform's (l,m) spherical harmonic mode from a SphHarmFrequencySeries linke...
SphHarmFrequencySeries * XLALSphHarmFrequencySeriesAddMode(SphHarmFrequencySeries *appended, const COMPLEX16FrequencySeries *inmode, UINT4 l, INT4 m)
Prepend a node to a linked list of SphHarmFrequencySeries, or create a new head.
void XLALDestroySphHarmFrequencySeries(SphHarmFrequencySeries *ts)
Delete list from current pointer to the end of the list.
void XLALSphHarmFrequencySeriesSetFData(SphHarmFrequencySeries *ts, REAL8Sequence *fdata)
Set the tdata member for all nodes in the list.
void XLALDestroyINT2Sequence(INT2Sequence *sequence)
void XLALDestroyREAL8Sequence(REAL8Sequence *sequence)
REAL8Sequence * XLALCreateREAL8Sequence(size_t length)
void XLALDestroyCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
COMPLEX16TimeSeries * XLALCutCOMPLEX16TimeSeries(const COMPLEX16TimeSeries *series, size_t first, size_t length)
COMPLEX16TimeSeries * XLALCreateCOMPLEX16TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
const LALUnit lalStrainUnit
void XLALDestroyREAL8Vector(REAL8Vector *vector)
#define XLAL_ERROR_NULL(...)
#define XLAL_CHECK(assertion,...)
#define XLAL_PRINT_WARNING(...)
#define XLAL_TRY(statement, errnum)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
LIGOTimeGPS * XLALGPSSetREAL8(LIGOTimeGPS *epoch, REAL8 t)
COMPLEX16FrequencySeries * mode
The sequences of sampled data.
Structure to carry a collection of spherical harmonic modes in COMPLEX16 time series.
struct tagSphHarmTimeSeries * next
next pointer
COMPLEX16TimeSeries * mode
The sequences of sampled data.