23#include <gsl/gsl_const.h>
24#include <gsl/gsl_errno.h>
25#include <gsl/gsl_math.h>
26#include <gsl/gsl_odeiv.h>
28#include <lal/SphericalHarmonics.h>
29#include <lal/LALSimInspiral.h>
30#include <lal/LALSimInspiralEOS.h>
31#include <lal/LALSimIMR.h>
32#include <lal/LALSimSphHarmMode.h>
33#include <lal/LALConstants.h>
34#include <lal/LALStdlib.h>
35#include <lal/LALString.h>
36#include <lal/Sequence.h>
37#include <lal/TimeSeries.h>
38#include <lal/FrequencySeries.h>
39#include <lal/TimeFreqFFT.h>
40#include <lal/BandPassTimeSeries.h>
42#include <lal/LALSimBlackHoleRingdown.h>
43#include <lal/LALSimInspiralPrecess.h>
44#include <lal/LALSimInspiralWaveformParams.h>
56#define UNUSED __attribute__ ((unused))
65#define MAX_NONPRECESSING_AMP_PN_ORDER 6
71#define MAX_PRECESSING_AMP_PN_ORDER 3
76#define INITIALIZE_NAME(a) [a] = #a
198#undef INITIALIZE_NAME
241 [LAL_SIM_INSPIRAL_MODES_CHOICE_RESTRICTED] =
"L2",
254 int longest_position = -1;
255 int longest_offset = -1;
256 int longest_length = -1;
259 if (
string == NULL || strlen(
string) == 0)
262 for (
i = 0;
i < size; ++
i) {
267 int length = strlen(list[
i]);
268 if (length > longest_length) {
269 longest_position =
i;
270 longest_offset = match - string;
271 longest_length = length;
276 if (longest_position < 0)
280 for (
i = 0;
i < (size_t)longest_length; ++
i)
281 string[longest_offset +
i] =
'\b';
283 return longest_position;
401 if (generator->initialize == NULL && generator->finalize == NULL) {
406 if (generator->finalize)
407 if (generator->finalize(generator) < 0)
421 LALSimInspiralGenerator *
new;
423 if (generator->initialize == NULL && generator->finalize == NULL) {
426 new = (LALSimInspiralGenerator *)(intptr_t)generator;
431 memcpy(
new, generator,
sizeof(*
new));
434 if (new->initialize(
new,
params) < 0) {
461 return generator->name;
482 LALSimInspiralGenerator *generator
486 XLAL_CHECK(*hplus == NULL && *hcross == NULL,
XLAL_EINVAL,
"hplus and hcross must be pointers to NULL");
488 if (generator->generate_td_waveform)
489 return generator->generate_td_waveform(hplus, hcross,
params, generator);
504 LALSimInspiralGenerator *generator
510 if (generator->generate_td_modes)
511 return generator->generate_td_modes(hlm,
params, generator);
527 LALSimInspiralGenerator *generator
531 XLAL_CHECK(*hplus == NULL && *hcross == NULL,
XLAL_EINVAL,
"hplus and hcross must be pointers to NULL");
532 if (generator->generate_fd_waveform)
533 return generator->generate_fd_waveform(hplus, hcross,
params, generator);
535 XLAL_ERROR(
XLAL_EINVAL,
"generator does not provide a method to generate frequency-domain waveforms");
548 LALSimInspiralGenerator *generator
554 if (generator->generate_fd_modes)
555 return generator->generate_fd_modes(hlm,
params, generator);
769 const REAL8 distance,
770 const REAL8 inclination,
772 const REAL8 longAscNodes,
773 const REAL8 eccentricity,
774 const REAL8 UNUSED meanPerAno,
782 LALSimInspiralGenerator *generator;
837 const REAL8 distance,
838 const REAL8 inclination,
840 const REAL8 longAscNodes,
841 const REAL8 eccentricity,
842 const REAL8 UNUSED meanPerAno,
852 LALSimInspiralGenerator *generator;
867 const char *remove_keys[12] = {
"total_mass",
"chirp_mass",
"mass_difference",
"reduced_mass",
"mass_ratio",
"sym_mass_ratio", \
868 "spin1_norm",
"spin1_tilt",
"spin1_phi",
"spin2_norm",
"spin2_tilt",
"spin2_phi"};
869 for(
size_t j = 0; j <
sizeof(remove_keys)/
sizeof(*remove_keys); ++j){
949 XLALPrintError(
"Non-zero transverse spins were given, but it is not possible to recover modes from H+ and Hx for precessing waveforms.\n");
961 retval =
XLALSimInspiralTD(&hplus, &hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, 0., phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref, LALparams,
approximant);
968 for (j=0; j< (hplus)->
data->length; j++) {
969 h22->
data->
data[j] = ((hplus)->
data->data[j] - I*((hcross)->data->data[j]))/fac;
970 h2m2->
data->
data[j] = ((hplus)->
data->data[j] + I*((hcross)->data->data[j]))/fac;
1011 const double extra_time_fraction = 0.1;
1012 const double extra_cycles = 3.0;
1013 double original_f_min =
f_min;
1014 double tchirp, tmerge, textra;
1015 double fisco, fstart;
1032 distance *= (1.0 + z);
1057 textra = extra_cycles /
f_min;
1066 retval =
XLALSimInspiralChooseTDWaveform(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT, fstart, f_ref, LALparams,
approximant);
1113 size_t chirplen,
end, k;
1115 const double extra_time_fraction = 0.1;
1116 const double extra_cycles = 3.0;
1117 double original_f_min =
f_min;
1119 double tchirp, tmerge, textra;
1120 double fisco, fstart;
1137 distance *= (1.0 + z);
1162 textra = extra_cycles /
f_min;
1167 retval =
XLALSimInspiralFD(&hptilde, &hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno, 0.0,
f_min,
f_max, f_ref, LALparams,
approximant);
1178 for (k = 0; k < hptilde->
data->
length; ++k) {
1179 double complex phasefac = cexp(2.0 * M_PI * I * k * hptilde->
deltaF * tshift);
1180 hptilde->
data->
data[k] *= phasefac;
1181 hctilde->
data->
data[k] *= phasefac;
1191 if (!(*hplus) || !(*hcross) || !plan) {
1212 chirplen = round((tchirp + tmerge) /
deltaT);
1215 end = (*hplus)->data->length - round(tshift /
deltaT);
1296 if (LALparams == NULL) {
1305 ret =
XLALSimInspiralChooseTDWaveform(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT,
f_min, f_ref, LALparams,
approximant);
1387 if (LALparams == NULL) {
1396 ret =
XLALSimInspiralChooseFDWaveform(hptilde, hctilde, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno, deltaF,
f_min,
f_max, f_ref, LALparams,
approximant);
1421 const REAL8 distance,
1422 const REAL8 inclination,
1424 const REAL8 longAscNodes,
1425 const REAL8 eccentricity,
1426 const REAL8 meanPerAno,
1436 return XLALSimInspiralChooseTDWaveform(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
1437 distance, inclination, phiRef, longAscNodes,
1465 UNUSED
REAL8 phiRef,
1483 LALSimInspiralGenerator *generator;
1595 LALSimInspiralGenerator *generator;
1661 const size_t min_taper_samples = 4;
1662 const double extra_time_fraction = 0.1;
1663 const double extra_cycles = 3.0;
1664 double original_f_min =
f_min;
1667 double tchirp, textra;
1670 size_t length, nzeros, ntaper;
1692 textra = extra_cycles /
f_min;
1699 XLALPrintWarning(
"XLAL Warning - XLALSimInspiralModesTD does not yet implement spins - passing zeros\n");
1700 modes =
XLALSimInspiralChooseTDModes(0.,
deltaT, m1, m2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
f_min, f_ref,
r, LALpars, lmax,
approximant);
1716 for (hlm = modes; hlm; hlm = hlm->
next) {
1729 ntaper = round((extra_time_fraction * tchirp + textra) /
deltaT);
1730 for (j = 0; j < ntaper; ++j)
1747 if (length < 2 * min_taper_samples) {
1748 XLAL_PRINT_WARNING(
"waveform is too shorter than %zu samples: no final tapering applied", 2 * min_taper_samples);
1756 ntaper = round(1.0 / (fisco *
deltaT));
1757 if (ntaper < min_taper_samples)
1758 ntaper = min_taper_samples;
1759 for (hlm = modes; hlm; hlm = hlm->
next)
1760 for (j = 1; j < ntaper; ++j)
1767 if (ntaper < min_taper_samples)
1768 ntaper = min_taper_samples;
1769 for (hlm = modes; hlm; hlm = hlm->
next)
1770 for (j = 1; j < ntaper; ++j)
1790 LALSimInspiralWaveformFlags *waveFlags,
1810 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
1816 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
1818 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
1820 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);
1822 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);
1824 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);
1826 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
1827 if(
f_min > 40.000001 )
1828 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
1839 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1853 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1865 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1879 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1937 REAL8 M, eta, eta2, eta3, dm, dist, ampfac, phi, phiShift, v, v2, v3;
1938 REAL8 hp0, hp05, hp1, hp15, hp2, hp25, hp3;
1939 REAL8 hc0, hc05, hc1, hc15, hc2, hc25, hc3;
1940 REAL8 ci, si, ci2, ci4, ci6, ci8, si2, si3, si4, si5, si6;
1953 if ( ! hplus || ! hcross )
1955 memset((*hplus)->data->data, 0, (*hplus)->data->length
1956 *
sizeof(*(*hplus)->data->data));
1957 memset((*hcross)->data->data, 0, (*hcross)->data->length
1958 *
sizeof(*(*hcross)->data->data));
1961 eta = m1 * m2 /
M /
M;
1962 eta2 = eta*eta; eta3 = eta2*eta;
1972 ci = cos(
i); si = sin(
i);
1973 ci2 = ci*ci; ci4 = ci2*ci2; ci6 = ci2*ci4; ci8 = ci6*ci2;
1974 si2 = si*si; si3 = si2*si; si4 = si2*si2; si5 = si*si4; si6 = si4*si2;
1978 len =
V->data->length;
1979 for(idx = 0; idx < len; idx++)
1982 phi = Phi->
data->
data[idx]; v =
V->data->data[idx];
1983 v2 = v * v; v3 = v * v2;
1991 if( (ampO == -1) || ampO >= 5 )
1992 phiShift = 3.*v3*(1. - v2*eta/2.)*log( v2 / v0 / v0 );
1993 else if( ampO >= 3 )
1994 phiShift = 3.*v3*log( v2 / v0 / v0 );
1998 phi = phi - phiShift;
2005 hp0 = hp05 = hp1 = hp15 = hp2 = hp25 = hp3 = 0.;
2006 hc0 = hc05 = hc1 = hc15 = hc2 = hc25 = hc3 = 0.;
2013 "to PN order %d\n", __func__, ampO );
2021 hp3 =
LAL_PI*dm*si*cos(phi)*(19./64. + ci2*5./16. - ci4/192.
2022 + eta*(-19./96. + ci2*3./16. + ci4/96.)) + cos(2.*phi)
2023 * (-465497./11025. + (
LAL_GAMMA*856./105.
2025 * (1. + ci2) - ci2*3561541./88200. - ci4*943./720.
2026 + ci6*169./720. - ci8/360. + eta*(2209./360.
2028 + ci4*3311./720. - ci6*853./720. + ci8*7./360.)
2029 + eta2*(12871./540. - ci2*1583./60. - ci4*145./108.
2030 + ci6*56./45. - ci8*7./180.) + eta3*(-3277./810.
2031 + ci2*19661./3240. - ci4*281./144. - ci6*73./720.
2032 + ci8*7./360.)) +
LAL_PI*dm*si*cos(3.*phi)*(-1971./128.
2033 - ci2*135./16. + ci4*243./128. + eta*(567./64.
2034 - ci2*81./16. - ci4*243./64.)) + si2*cos(4.*phi)
2035 * (-2189./210. + ci2*1123./210. + ci4*56./9.
2036 - ci6*16./45. + eta*(6271./90. - ci2*1969./90.
2037 - ci4*1432./45. + ci6*112./45.) + eta2*(-3007./27.
2038 + ci2*3493./135. + ci4*1568./45. - ci6*224./45.)
2039 + eta3*(161./6. - ci2*1921./90. - ci4*184./45.
2040 + ci6*112./45.)) + dm*cos(5.*phi)*(
LAL_PI*3125./384.
2041 * si3*(1. + ci2)*(1. - 2.*eta)) + si4*cos(6.*phi)
2042 * (1377./80. + ci2*891./80. - ci4*729./280.
2043 + eta*(-7857./80. - ci2*891./16. + ci4*729./40.)
2044 + eta2*(567./4. + ci2*567./10. - ci4*729./20.)
2045 + eta3*(-729./16. - ci2*243./80. + ci4*729./40.))
2046 + cos(8.*phi)*(-1024./315.*si6*(1. + ci2)*(1. - 7.*eta
2047 + 14.*eta2 - 7.*eta3)) + dm*si*sin(phi)*(-2159./40320.
2048 - log(2.)*19./32. + (-95./224. - log(2.)*5./8.)*ci2
2049 + (181./13440. + log(2.)/96.)*ci4 + eta*(1369./160.
2050 + log(2.)*19./48. + (-41./48. - log(2.)*3./8.)*ci2
2051 + (-313./480. - log(2.)/48.)*ci4)) + sin(2.*phi)
2052 * (-428.*
LAL_PI/105.*(1. + ci2)) + dm*si*sin(3.*phi)
2053 * (205119./8960. - log(3./2.)*1971./64.
2054 + (1917./224. - log(3./2.)*135./8.)*ci2
2055 + (-43983./8960. + log(3./2.)*243./64.)*ci4 + eta
2056 * (-54869./960. + log(3./2.)*567./32.
2057 + (-923./80. - log(3./2.)*81./8.)*ci2
2058 + (41851./2880. - log(3./2.)*243./32.)*ci4))
2059 + dm*si3*(1. + ci2)*sin(5.*phi)*(-113125./5376.
2060 + log(5./2.)*3125./192.
2061 + eta*(17639./320. - log(5./2.)*3125./96.));
2062 hc3 = dm*si*ci*cos(phi)*(11617./20160. + log(2.)*21./16.
2063 + (-251./2240. - log(2.)*5./48.)*ci2
2064 + eta*(-2419./240. - log(2.)*5./24.
2065 + (727./240. + log(2.)*5./24.)*ci2)) + ci*cos(2.*phi)
2066 * (
LAL_PI*856./105.) + dm*si*ci*cos(3.*phi)
2067 * (-36801./896. + log(3./2.)*1809./32.
2068 + (65097./4480. - log(3./2.)*405./32.)*ci2
2069 + eta*(28445./288. - log(3./2.)*405./16.
2070 + (-7137./160. + log(3./2.)*405./16.)*ci2))
2071 + dm*si3*ci*cos(5.*phi)*(113125./2688.
2072 - log(5./2.)*3125./96. + eta*(-17639./160.
2073 + log(5./2.)*3125./48.)) +
LAL_PI*dm*si*ci*sin(phi)
2074 * (21./32. - ci2*5./96. + eta*(-5./48. + ci2*5./48.))
2075 + ci*sin(2.*phi)*(-3620761./44100.
2077 + log(16.*v2)*856./105. - ci2*3413./1260.
2078 + ci4*2909./2520. - ci6/45. + eta*(743./90.
2080 - ci4*2287./360. + ci6*7./45.) + eta2*(7919./270.
2081 - ci2*5426./135. + ci4*382./45. - ci6*14./45.)
2082 + eta3*(-6457./1620. + ci2*1109./180. - ci4*281./120.
2083 + ci6*7./45.)) +
LAL_PI*dm*si*ci*sin(3.*phi)
2084 * (-1809./64. + ci2*405./64. + eta*(405./32.
2085 - ci2*405./32.)) + si2*ci*sin(4.*phi)*(-1781./105.
2086 + ci2*1208./63. - ci4*64./45. + eta*(5207./45.
2087 - ci2*536./5. + ci4*448./45.) + eta2*(-24838./135.
2088 + ci2*2224./15. - ci4*896./45.) + eta3*(1703./45.
2089 - ci2*1976./45. + ci4*448./45.)) + dm*sin(5.*phi)
2090 * (3125.*
LAL_PI/192.*si3*ci*(1. - 2.*eta))
2091 + si4*ci*sin(6.*phi)*(9153./280. - ci2*243./35.
2092 + eta*(-7371./40. + ci2*243./5.) + eta2*(1296./5.
2093 - ci2*486./5.) + eta3*(-3159./40. + ci2*243./5.))
2094 + sin(8.*phi)*(-2048./315.*si6*ci*(1. - 7.*eta
2095 + 14.*eta2 - 7.*eta3));
2096#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2101 hp25 = cos(phi)*si*dm*(1771./5120. - ci2*1667./5120.
2102 + ci4*217./9216. - ci6/9126. + eta*(681./256.
2103 + ci2*13./768. - ci4*35./768. + ci6/2304.)
2104 + eta2*(-3451./9216. + ci2*673./3072. - ci4*5./9216.
2105 - ci6/3072.)) + cos(2.*phi)*
LAL_PI*(19./3. + 3.*ci2
2106 - ci4*2./3. + eta*(-16./3. + ci2*14./3. + 2.*ci4))
2107 + cos(3.*phi)*si*dm*(3537./1024. - ci2*22977./5120.
2108 - ci4*15309./5120. + ci6*729./5120.
2109 + eta*(-23829./1280. + ci2*5529./1280.
2110 + ci4*7749./1280. - ci6*729./1280.)
2111 + eta2*(29127./5120. - ci2*27267./5120.
2112 - ci4*1647./5120. + ci6*2187./5120.)) + cos(4.*phi)
2113 * (-16.*
LAL_PI/3.*(1. + ci2)*si2*(1. - 3.*eta))
2114 + cos(5.*phi)*si*dm*(-108125./9216. + ci2*40625./9216.
2115 + ci4*83125./9216. - ci6*15625./9216.
2116 + eta*(8125./256. - ci2*40625./2304. - ci4*48125./2304.
2117 + ci6*15625./2304.) + eta2*(-119375./9216.
2118 + ci2*40625./3072. + ci4*44375./9216.
2119 - ci6*15625./3072.)) + cos(7.*phi)*dm
2120 * (117649./46080.*si5*(1. + ci2)*(1. - 4.*eta
2121 + 3.*eta2)) + sin(2.*phi)*(-9./5. + ci2*14./5.
2122 + ci4*7./5. + eta*(32. + ci2*56./5. - ci4*28./5.))
2123 + sin(4.*phi)*si2*(1. + ci2)*(56./5. - 32.*log(2.)/3.
2124 + eta*(-1193./30. + 32.*log(2.)));
2126 hc25 = cos(2.*phi)*ci*(2. - ci2*22./5. + eta*(-282./5.
2127 + ci2*94./5.)) + cos(4.*phi)*ci*si2*(-112./5.
2128 + 64.*log(2.)/3. + eta*(1193./15. - 64.*log(2.)))
2129 + sin(phi)*si*ci*dm*(-913./7680. + ci2*1891./11520.
2130 - ci4*7./4608. + eta*(1165./384. - ci2*235./576.
2131 + ci4*7./1152.) + eta2*(-1301./4608. + ci2*301./2304.
2132 - ci4*7./1536.)) + sin(2.*phi)*
LAL_PI*ci*(34./3.
2133 - ci2*8./3. + eta*(-20./3. + 8.*ci2))
2134 + sin(3.*phi)*si*ci*dm*(12501./2560. - ci2*12069./1280.
2135 + ci4*1701./2560. + eta*(-19581./640. + ci2*7821./320.
2136 - ci4*1701./640.) + eta2*(18903./2560.
2137 - ci2*11403./1280. + ci4*5103./2560.))
2138 + sin(4.*phi)*si2*ci*(-32.*
LAL_PI/3.*(1. - 3.*eta))
2139 + sin(5.*phi)*si*ci*dm*(-101875./4608. + ci2*6875./256.
2140 - ci4*21875./4608. + eta*(66875./1152.
2141 - ci2*44375./576. + ci4*21875./1152.)
2142 + eta2*(-100625./4608. + ci2*83125./2304.
2143 - ci4*21875./1536.)) + sin(7.*phi)*si5*ci*dm
2144 * (117649./23040.*(1. - 4.*eta + 3.*eta2));
2145#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2150 hp2 = cos(phi)*
LAL_PI*si*dm*(-5./8. - ci2/8.)
2151 + cos(2.*phi)*(11./60. + ci2*33./10. + ci4*29./24.
2152 - ci6/24. + eta*(353./36. - 3.*ci2 - ci4*251./72.
2153 + ci6*5./24.) + eta2*(-49./12. + ci2*9./2.
2154 - ci4*7./24. - ci6*5./24.)) + cos(3.*phi)*
LAL_PI*si*dm
2155 * (27./8.*(1 + ci2)) + cos(4.*phi)*si2*2./15.*(59.
2157 - eta*5./3.*(131. + 59.*ci2 + 24.*ci4)
2158 + eta2*5.*(21. - 3.*ci2 - 8.*ci4))
2159 + cos(6.*phi)*(-81./40.*si4*(1. + ci2)
2160 * (1. - 5.*eta + 5.*eta2)) + sin(phi)*si*dm
2161 * (11./40. + 5.*log(2)/4. + ci2*(7./40. + log(2)/4.))
2162 + sin(3.*phi)*si*dm*((-189./40. + 27./4.*log(3./2.))
2164 hc2 = cos(phi)*si*ci*dm*(-9./20. - 3./2.*log(2.))
2165 + cos(3.*phi)*si*ci*dm*(189./20. - 27./2.*log(3./2.))
2166 - sin(phi)*si*ci*dm*3.*
LAL_PI/4.
2167 + sin(2.*phi)*ci*(17./15. + ci2*113./30. - ci4/4.
2168 + eta*(143./9. - ci2*245./18. + ci4*5./4.)
2169 + eta2*(-14./3. + ci2*35./6. - ci4*5./4.))
2170 + sin(3.*phi)*si*ci*dm*27.*
LAL_PI/4.
2171 + sin(4.*phi)*ci*si2*4./15.*(55. - 12.*ci2
2172 - eta*5./3.*(119. - 36.*ci2)
2173 + eta2*5.*(17. - 12.*ci2))
2174 + sin(6.*phi)*ci*(-81./20.*si4
2175 * (1. - 5.*eta + 5.*eta2));
2176#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2181 hp15 = cos(phi)*si*dm*(19./64. + ci2*5./16. - ci4/192.
2182 + eta*(-49./96. + ci2/8. + ci4/96.))
2183 + cos(2.*phi)*(-2.*
LAL_PI*(1. + ci2))
2184 + cos(3.*phi)*si*dm*(-657./128. - ci2*45./16.
2185 + ci4*81./128. + eta*(225./64. - ci2*9./8.
2186 - ci4*81./64.)) + cos(5.*phi)*si*dm*(625./384.*si2
2187 * (1. + ci2)*(1. - 2.*eta));
2188 hc15 = sin(phi)*si*ci*dm*(21./32. - ci2*5./96.
2189 + eta*(-23./48. + ci2*5./48.))
2190 - 4.*
LAL_PI*ci*sin(2.*phi) + sin(3.*phi)*si*ci*dm
2191 * (-603./64. + ci2*135./64.
2192 + eta*(171./32. - ci2*135./32.))
2193 + sin(5.*phi)*si*ci*dm*(625./192.*si2*(1. - 2.*eta));
2194#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2199 hp1 = cos(2.*phi)*(19./6. + 3./2.*ci2 - ci4/3.
2200 + eta*(-19./6. + ci2*11./6. + ci4))
2201 - cos(4.*phi) * (4./3.*si2*(1. + ci2)*(1. - 3.*eta));
2202 hc1 = sin(2.*phi)*ci*(17./3. - ci2*4./3.
2203 + eta*(-13./3. + 4.*ci2))
2204 + sin(4.*phi)*ci*si2*(-8./3.*(1. - 3.*eta));
2205#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2210 hp05 = - si*dm*(cos(phi)*(5./8. + ci2/8.)
2211 - cos(3.*phi)*(9./8. + 9.*ci2/8.));
2212 hc05 = si*ci*dm*(-sin(phi)*3./4. + sin(3.*phi)*9./4.);
2213#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2218 hp0 = -(1. + ci2)*cos(2.*phi);
2219 hc0 = -2.*ci*sin(2.*phi);
2230 (*hplus)->data->data[idx] = ampfac * v2 * ( hp0 + v * ( hp05
2231 + v * ( hp1 + v * ( hp15 + v * ( hp2 + v * ( hp25 + v * hp3
2233 (*hcross)->data->data[idx] = ampfac * v2 * ( hc0 + v * ( hc05
2234 + v * ( hc1 + v * ( hc15 + v * ( hc2 + v * ( hc25 + v * hc3
2272 if ( ! hplus || ! hcross )
2274 memset((*hplus)->data->data, 0, (*hplus)->data->length*
sizeof(*(*hplus)->data->data));
2275 memset((*hcross)->data->data, 0, (*hcross)->data->length*
sizeof(*(*hcross)->data->data));
2277 for (
m = 1;
m <=
l; ++
m ) {
2310 size_t length =
ts->mode->data->length;
2318 memset( (*hp)->data->data, 0, (*hp)->data->length*
sizeof(
REAL8) );
2319 memset( (*hc)->data->data, 0, (*hc)->data->length*
sizeof(
REAL8) );
2349 const REAL8 distance,
2350 const REAL8 inclination,
2352 const REAL8 UNUSED longAscNodes,
2353 const REAL8 UNUSED eccentricity,
2354 const REAL8 UNUSED meanPerAno,
2371 REAL8 phiRef_modes = 0;
2374 REAL8 zeta_polarization = 0;
2379 phiRef_modes = phiRef;
2384 phiRef_modes = phiRef;
2385 REAL8 d1=0, d2=0, d3=0, d4=0, d5=0;
2386 ret =
XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(&d1, &d2, &d3, &
theta, &d4, &d5, &zeta_polarization, m1, m2, f_ref, phiRef, inclination, S1x,S1y,S1z, S2x,S2y,S2z, LALparams);
2392 phiRef_modes = phiRef;
2393 d1=0, d2=0, d3=0, d4=0, d5=0;
2394 ret =
XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(&d1, &d2, &d3, &
theta, &d4, &d5, &zeta_polarization, m1, m2, f_ref, phiRef, inclination, S1x,S1y,S1z, S2x,S2y,S2z, LALparams);
2400 phiRef_modes = phiRef;
2401 d1=0, d2=0, d3=0, d4=0, d5=0;
2402 ret =
XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(&d1, &d2, &d3, &
theta, &d4, &d5, &zeta_polarization, m1, m2, f_ref, phiRef, inclination, S1x,S1y,S1z, S2x,S2y,S2z, LALparams);
2417 phiRef_modes = phiRef;
2426 *hlms =
XLALSimInspiralChooseFDModes(m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef_modes, distance, inclination, LALparams,
approximant);
2431 UINT4 len = (*hlms)->mode->data->length;
2436 len = (
UINT4) ceil(len/2.);
2441 &((*hlms)->mode->epoch), (*hlms)->mode->f0, (*hlms)->mode->deltaF,
2442 &((*hlms)->mode->sampleUnits), len);
2444 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
2445 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
2446 memset((*hptilde)->data->data, 0, (len) *
sizeof(
COMPLEX16));
2447 memset((*hctilde)->data->data, 0, (len) *
sizeof(
COMPLEX16));
2457 for(
UINT4 idx = 0; idx<len; idx++){
2460 (*hptilde)->data->data[idx] += 0.5 * (hlm * Ylm + hlm2 * Ylmstar);
2461 (*hctilde)->data->data[idx] += 0.5 * I * (hlm * Ylm - hlm2 * Ylmstar);
2463 hlms_tmp = hlms_tmp->
next;
2473 if(fabs(zeta_polarization) > 0)
2476 REAL8 cosPolFac, sinPolFac;
2478 cosPolFac = cos(2.0 * zeta_polarization);
2479 sinPolFac = sin(2.0 * zeta_polarization);
2481 for (
UINT4 i = 0;
i < (*hptilde)->data->length;
i++)
2483 PhPpolp = (*hptilde)->data->data[
i];
2484 PhPpolc = (*hctilde)->data->data[
i];
2486 (*hptilde)->data->data[
i] = cosPolFac * PhPpolp + sinPolFac * PhPpolc;
2487 (*hctilde)->data->data[
i] = cosPolFac * PhPpolc - sinPolFac * PhPpolp;
2493 REAL8 polariz=longAscNodes;
2496 for (
UINT4 idx=0;idx<(*hptilde)->data->length;idx++) {
2497tmpP=(*hptilde)->data->data[idx];
2498tmpC=(*hctilde)->data->data[idx];
2499(*hptilde)->data->data[idx] =cos(2.*polariz)*tmpP+sin(2.*polariz)*tmpC;
2500(*hctilde)->data->data[idx]=cos(2.*polariz)*tmpC-sin(2.*polariz)*tmpP;
2536 len = (
UINT4) ceil(len/2.);
2545 memset( (*hp)->data->data, 0, (*hp)->data->length*
sizeof(
COMPLEX16) );
2546 memset( (*hc)->data->data, 0, (*hc)->data->length*
sizeof(
COMPLEX16) );
2554 for(
UINT4 idx = 0; idx<len; idx++){
2557 (*hp)->data->data[idx] += 0.5 * (hlm * Ylm + hlm2 * Ylmstar);
2558 (*hc)->data->data[idx] += 0.5 * I * (hlm * Ylm - hlm2 * Ylmstar);
2606 REAL8 mt, eta, dist, ampfac, phi, v, et,
u;
2608 REAL8 CF_rdot, CF_rphidot, CF_Z, r_sc, rdot_sc, phidot;
2609 REAL8 rdot, rphidot, Z;
2612 REAL8 ci, si, ci2, si2;
2629 if ( ! hplus || ! hcross )
2631 memset((*hplus)->data->data, 0, (*hplus)->data->length
2632 *
sizeof(*(*hplus)->data->data));
2633 memset((*hcross)->data->data, 0, (*hcross)->data->length
2634 *
sizeof(*(*hcross)->data->data));
2637 eta = m1 * m2 / pow(m1 + m2, 2.0);
2646 ci = cos(
i); si = sin(
i);
2652 len =
V->data->length;
2653 for(idx = 0; idx < len; idx++)
2659 dt = 1. - et * cos(
u);
2660 OTS = sqrt(1. - et * et);
2670 rdot = rphidot = Z = 0;
2673 CF_rdot = et * v*sin(
u)/
dt;
2674 CF_rphidot = OTS * v /
dt;
2675 CF_Z = pow(v, 2.0) /
dt;
2682 "to PN order %d\n", __func__, ph_O );
2688 "to PN order %d\n", __func__, ph_O );
2693 XLALPrintError(
"XLAL Error - %s: dynamical variables not yet implemented "
2694 "to PN order %d\n", __func__, ph_O );
2699 XLALPrintError(
"XLAL Error - %s: dynamical variables not yet implemented "
2700 "to PN order %d\n", __func__, ph_O );
2708 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2709 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0))
2711 + ((-288. + 765. * eta - 27. * pow(eta, 2.0)
2712 + pow(et, 4.0) * (261. * eta - 27 * pow(eta, 2.0))
2713 + pow(et, 2.0) * (288. - 1026. * eta + 54. * pow(eta, 2.0))
2714 + (-540. + pow(et, 2.0) * (540. - 216. * eta)
2715 + 216. * eta) * OTS +
dt * (648. - 567. * eta + 35. * pow(eta, 2.0)
2716 + pow(et, 2.0) * (468. + 150. * eta - 70. * pow(eta, 2.0))
2717 + pow(et, 4.0) * (72. - 231. * eta + 35. * pow(eta, 2.0))
2718 + (180. - 72. * eta + pow(et, 2.0) * (-180. + 72. * eta)) * OTS)) * pow(v, 4.0))
2719 / (72. *
dt * pow(OTS, 4.0));
2723 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0))
2725 + (-6. * pow(1. - pow(et, 2.0), 3.0) * eta * (3. + 2. * eta)
2726 + pow(
dt, 3.0) * (42. + 22. * eta + 8.* pow(eta, 2.0)
2727 + pow(et, 2.0) * (-147. + 8. * eta - 14. * pow(eta, 2.0)))
2728 +
dt * (108. + 63. * eta + 33. * pow(eta, 2.0)
2729 + pow(et, 2.0) * (-216. - 126. * eta - 66. * pow(eta, 2.0))
2730 + pow(et, 4.0) * (108. + 63. * eta + 33. * pow(eta, 2.0)))
2731 + pow(
dt, 2.0) * (-240. - 31. * eta - 29. * pow(eta, 2.0)
2732 + pow(et, 4.0) * (-48. + 17. * eta - 17. * pow(eta, 2.0))
2733 + pow(et, 2.0) * (288. + 14. * eta + 46. * pow(eta,2)))
2734 + 18. * pow(
dt, 2.0) * (-2. +
dt + 2. * pow(et, 2.0)) * (-5. + 2. * eta) * OTS) * pow(v, 4.0)
2735 / (12. * pow(
dt, 3.0) * pow(OTS, 4.0));
2739 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0))
2741 + (-135. * eta + 9. * pow(eta, 2.0) + pow(et, 2.0) * (405. * eta - 27. * pow(eta, 2.0))
2742 + pow(et, 6.0) * (135. * eta - 9. * pow(eta, 2.0))
2743 + pow(et, 4.0) * (-405. * eta + 27 * pow(eta, 2.0))
2744 +
dt * (-540. + 351. * eta - 9. * pow(eta, 2.0)
2745 + pow(et, 4.0) * (-540. + 351. * eta - 9. * pow(eta, 2.0))
2746 + pow(et, 2.0) * (1080. - 702. * eta + 18. * pow(eta, 2.0)))
2747 + pow(
dt, 3.0) * (-324. + 189. * eta + 35. * pow(eta, 2.0)
2748 + pow(et, 2.0) * (-234. + 366. * eta - 70. * pow(eta, 2.0))
2749 + pow(et, 4.0) * (72. - 231. * eta + 35. * pow(eta, 2.0)))
2750 - 36 * pow(
dt, 2.0) * (3. +
dt) * (1 - pow(et, 2.0)) * (-5. + 2. * eta) * OTS) * pow(v, 4.0)
2751 / (72. * pow(
dt, 3.0) * pow(OTS, 4.0));
2758 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2759 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0));
2763 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0));
2767 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0));
2774 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2775 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0));
2779 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0));
2783 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0));
2806 rdot = CF_rdot * rdot_sc;
2807 rphidot = CF_rphidot * r_sc * phidot;
2823 "to PN order %d\n", __func__, ampO );
2829 "to PN order %d\n", __func__, ampO );
2835 "to PN order %d\n", __func__, ampO );
2841 "to PN order %d\n", __func__, ampO );
2847 "to PN order %d\n", __func__, ampO );
2852 XLALPrintError(
"XLAL Error - %s: Amp. corrections not yet implemented "
2853 "to PN order %d\n", __func__, ampO );
2858 XLALPrintError(
"XLAL Error - %s: Amp. corrections not yet implemented "
2859 "to PN order %d\n", __func__, ampO );
2865 hp0 = - (si2 * (-pow(rphidot, 2.0) - pow(rdot, 2.0) + Z))
2866 - (1. + ci2) * ((pow(rphidot, 2.0) - pow(rdot, 2.0) + Z) * cos(2. * phi)
2867 + (2. * rphidot * rdot) * sin(2. * phi));
2868 hc0 = - 2. * ci * (-2. * rphidot * rdot * cos(2. * phi)
2869 + (pow(rphidot, 2.0) - pow(rdot, 2.0) + Z) * sin(2. * phi));
2879 (*hplus)->data->data[idx] = ampfac*hp0;
2880 (*hcross)->data->data[idx] = ampfac*hc0;
2930 REAL8 s1x, s1y, s1z, s2x, s2y, s2z, lnhx, lnhy, lnhz;
2931 REAL8 e1x, e1y, e1z, e2x, e2y, e2z,
nx,
ny,
nz, lx, ly, lz;
2932 REAL8 nx2, ny2, nz2, nz3, lx2, ly2, lz2, lz3;
2933 REAL8 hplus0, hcross0, hplus05, hcross05, hplus1, hcross1;
2934 REAL8 hplus15, hcross15, hplusSpin1, hcrossSpin1;
2935 REAL8 hplusSpin15, hcrossSpin15, hplusTail15, hcrossTail15;
2936 REAL8 M, eta, dm, phi, v, v2, dist, ampfac;
2940 if ( !(hplus) || !(hcross) ) {
2941 XLALPrintError(
"** XLALSimInspiralPrecessingPolarizationWaveform error: **h+ and **hx are expected to be non NULL!\n");
2977 if ( ! hplus || ! hcross )
2979 memset((*hplus)->data->data, 0,
2980 (*hplus)->data->length*
sizeof(*(*hplus)->data->data));
2981 memset((*hcross)->data->data, 0,
2982 (*hcross)->data->length*
sizeof(*(*hcross)->data->data));
2985 eta = m1 * m2 /
M /
M;
2992 len =
V->data->length;
2993 for(idx = 0; idx < len; idx++)
2996 phi = Phi->
data->
data[idx]; v =
V->data->data[idx]; v2 = v * v;
3005 e2x = lnhy*e1z - lnhz*e1y;
3006 e2y = lnhz*e1x - lnhx*e1z;
3007 e2z = lnhx*e1y - lnhy*e1x;
3010 nx = e1x*cos(phi) + e2x*sin(phi);
3011 ny = e1y*cos(phi) + e2y*sin(phi);
3012 nz = e1z*cos(phi) + e2z*sin(phi);
3015 lx = e2x*cos(phi) - e1x*sin(phi);
3016 ly = e2y*cos(phi) - e1y*sin(phi);
3017 lz = e2z*cos(phi) - e1z*sin(phi);
3021 lx2 = lx*lx; ly2 = ly*ly; lz2 = lz*lz; lz3 = lz*lz2;
3028 hplus0 = hplus05 = hplus1 = hplus15 = hplusTail15 = 0.;
3029 hcross0 = hcross05 = hcross1 = hcross15 = hcrossTail15 = 0.;
3030 hplusSpin1 = hplusSpin15 = hcrossSpin1 = hcrossSpin15 = 0.;
3045 "to PN order %d, highest is %d\n", __func__, ampO,
3053 hplus15 = (dm*(2*lx*
nx*
nz*(-95 + 90*lz2 - 65*nz2
3054 - 2*eta*(-9 + 90*lz2 - 65*nz2)) - 2*ly*
ny*
nz
3055 * (-95 + 90*lz2 - 65*nz2 - 2*eta*(-9 + 90*lz2 - 65*nz2))
3056 + 6*lx2*lz*(13 - 4*lz2 + 29*nz2 + eta*(-2 + 8*lz2
3057 - 58*nz2)) - 6*ly2*lz*(13 - 4*lz2 + 29*nz2 + eta
3058 * (-2 + 8*lz2 - 58*nz2)) - lz*(nx2 - ny2)*(83 - 6*lz2
3059 + 111*nz2 + 6*eta*(-1 + 2*lz2 - 37*nz2))))/24.;
3060 hcross15 = (dm*(lz*(6*(19 - 4*eta)*lx*ly + (-101 + 12*eta)
3061 *
nx*
ny) + (-149 + 36*eta) * (ly*
nx + lx*
ny)*
nz
3062 + 6*(-3 + eta) * (2*lx*ly*lz - lz*
nx*
ny - 3*ly*
nx*
nz
3063 - 3*lx*
ny*
nz) + (1 - 2*eta) * (6*lz3*(-4*lx*ly +
nx*
ny)
3064 + 90*lz2*(ly*
nx + lx*
ny)*
nz + 3*lz*(58*lx*ly
3065 - 37*
nx*
ny)*nz2 - 65*(ly*
nx + lx*
ny)*nz3)))/12.;
3067 hplusSpin15 = (6*lz*
ny*s1x + 6*dm*lz*
ny*s1x - 3*eta*lz*
ny*s1x
3068 + 2*ly2*lnhy*s1y + 2*dm*ly2*lnhy*s1y
3069 + 2*eta*ly2*lnhy*s1y + 6*lz*
nx*s1y + 6*dm*lz*
nx*s1y
3070 - 3*eta*lz*
nx*s1y + 8*lnhy*nx2*s1y + 8*dm*lnhy*nx2*s1y
3071 - eta*lnhy*nx2*s1y - 8*lnhy*ny2*s1y - 8*dm*lnhy*ny2*s1y
3072 + eta*lnhy*ny2*s1y + 2*ly2*lnhz*s1z + 2*dm*ly2*lnhz*s1z
3073 + 2*eta*ly2*lnhz*s1z - 6*ly*
nx*s1z - 6*dm*ly*
nx*s1z
3074 - 9*eta*ly*
nx*s1z + 8*lnhz*nx2*s1z + 8*dm*lnhz*nx2*s1z
3075 - eta*lnhz*nx2*s1z - 8*lnhz*ny2*s1z - 8*dm*lnhz*ny2*s1z
3076 + eta*lnhz*ny2*s1z + 6*lz*
ny*s2x - 6*dm*lz*
ny*s2x
3077 - 3*eta*lz*
ny*s2x + lnhx*(2*ly2*((1 + dm + eta)*s1x
3078 + (1 - dm + eta)*s2x) + (nx2 - ny2)*((8 + 8*dm - eta)
3079 * s1x - (-8 + 8*dm + eta)*s2x)) + 2*ly2*lnhy*s2y
3080 - 2*dm*ly2*lnhy*s2y + 2*eta*ly2*lnhy*s2y + 6*lz*
nx*s2y
3081 - 6*dm*lz*
nx*s2y - 3*eta*lz*
nx*s2y + 8*lnhy*nx2*s2y
3082 - 8*dm*lnhy*nx2*s2y - eta*lnhy*nx2*s2y - 8*lnhy*ny2*s2y
3083 + 8*dm*lnhy*ny2*s2y + eta*lnhy*ny2*s2y + 2*ly2*lnhz*s2z
3084 - 2*dm*ly2*lnhz*s2z + 2*eta*ly2*lnhz*s2z - 6*ly*
nx*s2z
3085 + 6*dm*ly*
nx*s2z - 9*eta*ly*
nx*s2z + 8*lnhz*nx2*s2z
3086 - 8*dm*lnhz*nx2*s2z - eta*lnhz*nx2*s2z - 8*lnhz*ny2*s2z
3087 + 8*dm*lnhz*ny2*s2z + eta*lnhz*ny2*s2z - 3*lx*
ny
3088 * ((2 + 2*dm + 3*eta)*s1z + (2 - 2*dm + 3*eta)*s2z)
3089 - 2*lx2*(lnhx*((1 + dm + eta)*s1x + (1 - dm + eta)*s2x)
3090 + lnhy*((1 + dm + eta)*s1y + (1 - dm + eta)*s2y)
3091 + lnhz*((1 + dm + eta)*s1z + (1 - dm + eta)*s2z)))/3.;
3092 hcrossSpin15 = (-3*lz*(
nx*((2 + 2*dm - eta)*s1x
3093 - (-2 + 2*dm + eta)*s2x) +
ny*((-2 - 2*dm + eta)*s1y
3094 + (-2 + 2*dm + eta)*s2y)) +
ny*(-6*ly*s1z - 6*dm*ly*s1z
3095 - 9*eta*ly*s1z + 16*lnhz*
nx*s1z + 16*dm*lnhz*
nx*s1z
3096 - 2*eta*lnhz*
nx*s1z + 2*lnhx*
nx*((8 + 8*dm - eta)*s1x
3097 - (-8 + 8*dm + eta)*s2x) + 2*lnhy*
nx*((8 + 8*dm - eta)
3098 * s1y - (-8 + 8*dm + eta)*s2y) - 6*ly*s2z + 6*dm*ly*s2z
3099 - 9*eta*ly*s2z + 16*lnhz*
nx*s2z - 16*dm*lnhz*
nx*s2z
3100 - 2*eta*lnhz*
nx*s2z) - lx*(4*lnhx*ly*((1 + dm + eta)*s1x
3101 + (1 - dm + eta)*s2x) - 3*
nx*((2 + 2*dm + 3*eta)*s1z
3102 + (2 - 2*dm + 3*eta)*s2z) + 4*ly*(lnhy*((1 + dm + eta)
3103 * s1y + (1 - dm + eta)*s2y) + lnhz*((1 + dm + eta)*s1z
3104 + (1 - dm + eta)*s2z))))/3.;
3106 hplusTail15 = 2*((lx2 - ly2 - nx2 + ny2)*
LAL_PI);
3108#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3115 hplus1 = (-13*lx2 + 13*ly2 + 6*lx2*lz2 - 6*ly2*lz2
3116 + 13*(nx2 - ny2) - 2*lz2*(nx2 - ny2) - 32*lx*lz*
nx*
nz
3117 + 32*ly*lz*
ny*
nz - 14*lx2*nz2 + 14*ly2*nz2
3118 + 10*(nx2 - ny2)*nz2)/6. + (eta*(lx2 - 18*lx2*lz2
3119 + 96*lx*lz*
nx*
nz - 96*ly*lz*
ny*
nz + 42*lx2*nz2
3120 + ly2*(-1 + 18*lz2 - 42*nz2) + (nx2 - ny2)
3121 * (-1 + 6*lz2 - 30*nz2)))/6.;
3122 hcross1 = (eta*(lx*ly -
nx*
ny - 6*(lz2*(3*lx*ly -
nx*
ny)
3123 - 8*lz*(ly*
nx + lx*
ny)*
nz + (-7*lx*ly
3124 + 5*
nx*
ny)*nz2)))/3. + (-13*(lx*ly -
nx*
ny)
3125 + 2*(lz2*(3*lx*ly -
nx*
ny) - 8*lz*(ly*
nx + lx*
ny)*
nz
3126 + (-7*lx*ly + 5*
nx*
ny)*nz2))/3.;
3128 hplusSpin1 = (-(
ny*((1 + dm)*s1x + (-1 + dm)*s2x))
3129 -
nx*((1 + dm)*s1y + (-1 + dm)*s2y))/2.;
3130 hcrossSpin1 = (
nx*((1 + dm)*s1x + (-1 + dm)*s2x)
3131 -
ny*((1 + dm)*s1y + (-1 + dm)*s2y))/2.;
3132#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3139 hplus05 = (dm*(-2*lx2*lz + 2*ly2*lz + lz*(nx2 - ny2)
3141 hcross05 = dm*(-2*lx*ly*lz + lz*
nx*
ny
3143#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3149 hplus0 = lx2 - ly2 - nx2 + ny2;
3150 hcross0 = 2*lx*ly - 2*
nx*
ny;
3161 (*hplus)->data->data[idx] = ampfac * v2 * ( hplus0
3162 + v * ( hplus05 + v * ( hplus1 + hplusSpin1
3163 + v * ( hplus15 + hplusSpin15 + hplusTail15 ) ) ) );
3164 (*hcross)->data->data[idx] = ampfac * v2 * ( hcross0
3165 + v * ( hcross05 + v * ( hcross1 + hcrossSpin1
3166 + v * ( hcross15 + hcrossSpin15 + hcrossTail15 ) ) ) );
3224 REAL8 e2x = lnhy*e1z - lnhz*e1y;
3225 REAL8 e2y = lnhz*e1x - lnhx*e1z;
3226 REAL8 e2z = lnhx*e1y - lnhy*e1x;
3233 REAL8 twom1 = (1. + dm);
3234 REAL8 twom2 = (1. - dm);
3236 REAL8 a1x = s1x*twom1;
3237 REAL8 a1y = s1y*twom1;
3238 REAL8 a1z = s1z*twom1;
3239 REAL8 a2x = s2x*twom2;
3240 REAL8 a2y = s2y*twom2;
3241 REAL8 a2z = s2z*twom2;
3253 REAL8 fact1, fact2, fact3, fact4, fact5, fact6, fact7, fact8, fact9;
3255 REAL8 e1xe1x = e1x*e1x;
3256 REAL8 e1xe1y = e1x*e1y;
3257 REAL8 e1xe1z = e1x*e1z;
3258 REAL8 e1ye1y = e1y*e1y;
3259 REAL8 e1ye1z = e1y*e1z;
3260 REAL8 e1ze1z = e1z*e1z;
3262 REAL8 e2xe2x = e2x*e2x;
3263 REAL8 e2xe2y = e2x*e2y;
3264 REAL8 e2xe2z = e2x*e2z;
3265 REAL8 e2ye2y = e2y*e2y;
3266 REAL8 e2ye2z = e2y*e2z;
3267 REAL8 e2ze2z = e2z*e2z;
3269 REAL8 e1xe2x = e1x*e2x;
3270 REAL8 e1xe2y = e1x*e2y;
3271 REAL8 e1ye2x = e1y*e2x;
3272 REAL8 e1xe2z = e1x*e2z;
3273 REAL8 e1ze2x = e1z*e2x;
3274 REAL8 e1ye2y = e1y*e2y;
3275 REAL8 e1ye2z = e1y*e2z;
3276 REAL8 e1ze2y = e1z*e2y;
3277 REAL8 e1ze2z = e1z*e2z;
3291 fact4 = a1x*fact2 + a2x*fact3;
3292 fact5 = a1y*fact2 + a2y*fact3;
3295 fact8 = lnhz*(a1z*fact2 + a2z*fact3);
3296 fact9 = fact6 + fact7 + fact8;
3298 *hplus += fact1*(fact4*lnhx - fact5*lnhy + fact9*(e1xe1x - e1ye1y
3299 + e2xe2x - e2ye2y));
3300 *hcross += fact1*(fact4*lnhy - fact5*lnhx + fact9*(e1xe1y + e2xe2y));
3304 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3314 fact1 = 1. - 2.*eta;
3315 fact2 = 8. + fact1*(30. + 9.*e1ze1z + 19.*e2ze2z);
3316 fact3 = 72. + fact1*(6. + e2ze2z - 9.*e1ze1z);
3317 fact4 = 40. + fact1*(18. + 15.*e2ze2z + 5.*e1ze1z);
3318 fact5 = 8. + fact1*(30. + 9.*e2ze2z + 19.*e1ze1z);
3319 fact6 = 72. + fact1*(6. + e1ze1z - 9.*e2ze2z);
3320 fact7 = 40. + fact1*(18. + 15.*e1ze1z + 5.*e2ze2z);
3323 *hplus += fact8*(((e1xe1x - e1ye1y)*e2z*fact2 - (e2xe2x
3324 - e2ye2y)*e2z*fact3 + 2.*e1z*(e1ye2y - e1xe2x)*fact4) + I*((-(e2xe2x
3325 - e2ye2y)*fact5 + (e1xe1x - e1ye1y)*fact6)*e1z - 2.*e2z*(e1ye2y
3327 *hcross += (2.*fact8)*((-e2xe2y*e2z*fact3 + e1xe2z*e1y*fact2
3328 - e1z*(e1xe2y + e1ye2x)*fact4) + I*((e1xe2y + e1ye2x)*e2z*fact7
3329 + (e1xe1y*fact6 - e2xe2y*fact5)*e1z));
3330#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3336 *hplus += fact1*(((a2y - a1y)*e1x - (a1x - a2x)*e1y) + I*((a2y
3337 - a1y)*e2x - (a1x - a2x)*e2y));
3338 *hcross += fact1*(((a1x - a2x)*e1x - (a1y - a2y)*e1y) + I*((a1x
3339 - a2x)*e2x - (a1y - a2y)*e2y));
3340#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3344 fact1 = e1xe2x - e1ye2y;
3345 fact2 = e1ye1y - e1xe1x;
3346 fact3 = e2xe2x - e2ye2y;
3347 fact4 = e1xe2y + e1ye2x;
3350 fact7 = dm*v3*0.0625;
3352 *hplus += fact7*((6.*e1z*fact1 + e2z*(5.*fact2 + fact3))
3353 + I*(e1z*(fact2 + 5.*fact3) - 6.*e2z*fact1));
3354 *hcross += (2.*fact7)*((3.*e1z*fact4 + e2z*(-5.*fact5 + fact6))
3355 + I*(e1z*(5.*fact6 - fact5) - 3.*e2z*fact4));
3356#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3362 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3373 fact1 = e1xe2x - e1ye2y;
3374 fact2 = -e1xe1x + e1ye1y + e2xe2x - e2ye2y;
3375 fact3 = e1ye2x + e1xe2y;
3376 fact4 = -e1xe1y + e2xe2y;
3378 *hplus += v5*((12.*fact1*logfac + fact2*
LAL_PI) + I*(6.*fact2*logfac
3380 *hcross += v5*((2.*(6.*fact3*logfac + fact4*
LAL_PI))
3381 + I*(2.*(6.*fact4*logfac - fact3*
LAL_PI)));
3383 fact1 = a1x*(7. + dm) + a2x*(7. - dm);
3384 fact2 = a1y*(7. + dm) + a2y*(7. - dm);
3385 fact3 = a1z*(11. - 3.*dm) + a2z*(11. + 3.*dm);
3386 fact4 = a1x*(41. - dm) + a2x*(41. + dm);
3387 fact5 = a1y*(41. - dm) + a2y*(41. + dm);
3388 fact6 = a1z*(41. - dm) + a2z*(41. + dm);
3389 fact7 = lnhx*fact4 + lnhy*fact5 + lnhz*fact6;
3390 fact8 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3393 *hplus += fact9*((3.*(e1ye2z + e1ze2y)*fact1 + 3.*(e1xe2z
3394 + e1ze2x)*fact2 - 6.*(e1ye2x + e1xe2y)*fact3 + fact8*fact7)
3395 + I*(-3.*(e1ye1z - e2ye2z)*fact1 - 3.*(e1xe1z - e2xe2z)*fact2
3396 + 6.*(e1xe1y - e2xe2y)*fact3 + 2.*(e1xe2x - e1ye2y)*fact7));
3397 *hcross += fact9*((-3.*(e1ze2x + e1xe2z)*fact1 + 3.*(e1ze2y
3398 + e1ye2z)*fact2 + 6.*(e1xe2x - e1ye2y)*fact3 + 2.*(e1xe1y
3399 - e2xe2y)*fact7) + I*(3.*(e1xe1z - e2xe2z)*fact1 - 3.*(e1ye1z
3400 - e2ye2z)*fact2 - 3.*fact8*fact3 + 2.*(e1ye2x + e1xe2y)*fact7));
3401#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3406 fact5 = -1. + 3.*eta;
3407 fact1 = -13. + eta + (6.*e2ze2z + 2.*e1ze1z)*fact5;
3408 fact2 = -13. + eta + (6.*e1ze1z + 2.*e2ze2z)*fact5;
3409 fact3 = e1ze2z*fact5;
3410 fact4 = -13. + eta + 4.*(e1ze1z + e2ze2z)*fact5;
3413 *hplus += fact6*((((e1ye1y - e1xe1x)*fact1 + (e2xe2x
3414 - e2ye2y)*fact2)*0.5) + I*(2.*(e1xe1x - e1ye1y + e2xe2x
3415 - e2ye2y)*fact3 + (e1ye2y - e1xe2x)*fact4));
3416 *hcross += fact6*((-e1xe1y*fact1 + e2xe2y*fact2) + I*(4.*(e1xe1y
3417 + e2xe2y)*fact3 - (e1ye2x + e1xe2y)*fact4));
3418#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3423 *hplus += v2*(0.5*(e1ye1y - e2ye2y + e2xe2x - e1xe1x) + I*(e1ye2y
3425 *hcross += v2*((e2xe2y - e1xe1y) - I*(e1ye2x + e1xe2y));
3428 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3438 fact1 = v5*dm*9./256.;
3439 fact2 = 1. - 2.*eta;
3440 fact3 = 48. + fact2*(4. + 33.*e1ze1z + 9.*e2ze2z);
3441 fact4 = 48. + fact2*(4. + 15.*e1ze1z + 15.*e2ze2z);
3442 fact5 = 48. + fact2*(4. - 3.*e1ze1z + 21.*e2ze2z);
3443 fact6 = 48. + fact2*(4. + 33.*e2ze2z + 9.*e1ze1z);
3444 fact7 = 48. + fact2*(4. - 3.*e2ze2z + 21.*e1ze1z);
3446 *hplus += fact1*(((e2xe2x - e2ye2y)*e2z*fact3 + 2.*e1z*(e1ye2y
3447 - e1xe2x)*fact4 - (e1xe1x - e1ye1y)*e2z*fact5) + I*(2.*(e1ye2y
3448 - e1xe2x)*e2z*fact4 + (e1xe1x - e1ye1y)*e1z*fact6 - e1z*(e2xe2x
3450 *hcross += fact1*((2.*(e2xe2y*e2z*fact3 - (e1xe2y + e1ye2x)*e1z*fact4
3451 - e1xe1y*e2z*fact5)) + I*(2.*(-e1z*e2xe2y*fact7 + e1xe1y*e1z*fact6
3452 - (e1xe2y + e1ye2x)*e2z*fact4)));
3453#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3458 fact1 = v3*dm*9./16.;
3459 fact2 = 2.*(e1xe2x - e1ye2y);
3460 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3461 fact4 = 2.*(e1xe2y + e1ye2x);
3462 fact5 = 2.*(e1xe1y - e2xe2y);
3464 *hplus += fact1*((e1z*fact2 + e2z*fact3) - I*(e1z*fact3 - e2z*fact2));
3465 *hcross += fact1*((e1z*fact4 + e2z*fact5) + I*(-e1z*fact5
3467#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3473 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3484 fact1 = v4*4.*(1. - 3.*eta)/3.;
3485 fact2 = e1xe2x - e1ye2y;
3486 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3487 fact4 = e1ze1z - e2ze2z;
3488 fact5 = e1xe1y - e2xe2y;
3489 fact6 = e1ye2x + e1xe2y;
3491 *hplus = fact1*((0.5*fact4*fact3 - 2.*e1ze2z*fact2) + I*(fact4*fact2
3493 *hcross = fact1*((fact4*fact5 - 2.*e1ze2z*fact6) + I*(fact4*fact6
3494 + 2.*e1ze2z*fact5));
3495#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3502 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3512 fact1 = -v5*dm*(1. - 2.*eta)*625./384.;
3513 fact2 = e1xe2x - e1ye2y;
3514 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3515 fact4 = e1z*(e1ze1z - 3.*e2ze2z);
3516 fact5 = e2z*(e2ze2z - 3.*e1ze1z);
3517 fact6 = e1ye2x + e1xe2y;
3518 fact7 = e1xe1y - e2xe2y;
3520 *hplus += (fact1)*((fact4*fact2 - 0.5*fact5*fact3) - I*(fact5*fact2
3521 + 0.5*fact4*fact3));
3522 *hcross += (fact1)*((fact4*fact6 - fact5*fact7) - I*(fact4*fact7
3524#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3532 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3613 const REAL8 thetaJN,
3629 XLALPrintError(
"XLAL Error - %s: fRef=0 is invalid. Please pass in the starting GW frequency instead.\n", __func__);
3632 if( (chi1<0.) || (chi1>1.) || (chi2<0.) || (chi2>1.) )
3634 XLALPrintError(
"XLAL Error - %s: chi1,2=0 must be between 0 and 1, values %8.4f -- %8.4f passed.\n", __func__,chi1,chi2);
3638 REAL8 m1, m2, eta, v0, theta0, phi0, Jnorm,
tmp1, tmp2;
3639 REAL8 Jhatx, Jhaty, Jhatz, LNhx, LNhy, LNhz, Jx, Jy, Jz, Lmag;
3640 REAL8 s1hatx,s1haty,s1hatz,s2hatx,s2haty,s2hatz;
3641 REAL8 s1x, s1y, s1z, s2x, s2y, s2z;
3658 s1hatx = sin(theta1)*cos(phiRef);
3659 s1haty = sin(theta1)*sin(phiRef);
3660 s1hatz = cos(theta1);
3661 s2hatx = sin(theta2) * cos(phi12+phiRef);
3662 s2haty = sin(theta2) * sin(phi12+phiRef);
3663 s2hatz = cos(theta2);
3668 eta=m1*m2/(m1+m2)/(m1+m2);
3674 s1x = m1 * m1 * chi1 * s1hatx;
3675 s1y = m1 * m1 * chi1 * s1haty;
3676 s1z = m1 * m1 * chi1 * s1hatz;
3677 s2x = m2 * m2 * chi2 * s2hatx;
3678 s2y = m2 * m2 * chi2 * s2haty;
3679 s2z = m2 * m2 * chi2 * s2hatz;
3682 Jz = Lmag + s1z + s2z;
3685 Jnorm = sqrt( Jx*Jx + Jy*Jy + Jz*Jz);
3689 theta0 = acos(Jhatz);
3690 phi0 = atan2(Jhaty, Jhatx);
3693 ROTATEZ(-phi0, s1hatx, s1haty, s1hatz);
3694 ROTATEZ(-phi0, s2hatx, s2haty, s2hatz);
3702 ROTATEY(-theta0, LNhx, LNhy, LNhz);
3703 ROTATEY(-theta0, s1hatx, s1haty, s1hatz);
3704 ROTATEY(-theta0, s2hatx, s2haty, s2hatz);
3723 REAL8 Ny=sin(thetaJN);
3724 REAL8 Nz=cos(thetaJN);
3725 *incl=acos(Nx*LNhx+Ny*LNhy+Nz*LNhz);
3731 REAL8 thetaLJ = acos(LNhz);
3732 REAL8 phiL = atan2(LNhy, LNhx);
3734 ROTATEZ(-phiL, s1hatx, s1haty, s1hatz);
3735 ROTATEZ(-phiL, s2hatx, s2haty, s2hatz);
3741 ROTATEY(-thetaLJ, s1hatx, s1haty, s1hatz);
3742 ROTATEY(-thetaLJ, s2hatx, s2haty, s2hatz);
3743 ROTATEY(-thetaLJ, Nx, Ny, Nz);
3751 REAL8 phiN = atan2(Ny, Nx);
3849 XLALPrintError(
"XLAL Error - %s: fRef=0 is invalid. Please pass in the starting GW frequency instead.\n", __func__);
3854 REAL8 Jhatx, Jhaty, Jhatz, LNhx, LNhy, LNhz, Jx, Jy, Jz, Lmag;
3855 REAL8 s1hatx,s1haty,s1hatz,s2hatx,s2haty,s2hatz;
3856 REAL8 phi1, phi2, thetaJL, phiJ;
3857 REAL8 s1x, s1y, s1z, s2x, s2y, s2z;
3858 REAL8 Nx, Ny, Nz, phiO, phiN;
3867 *chi1 = sqrt(S1x*S1x + S1y*S1y + S1z*S1z);
3868 *chi2 = sqrt(S2x*S2x + S2y*S2y + S2z*S2z);
3870 s1hatx = S1x/(*chi1);
3871 s1haty = S1y/(*chi1);
3872 s1hatz = S1z/(*chi1);
3880 s2hatx = S2x/(*chi2);
3881 s2haty = S2y/(*chi2);
3882 s2hatz = S2z/(*chi2);
3889 phi1 = atan2(s1haty, s1hatx);
3890 phi2 = atan2(s2haty, s2hatx);
3892 *phi12 = phi2 - phi1;
3896 *theta1 = acos(s1hatz);
3897 *theta2 = acos(s2hatz);
3899 eta=m1*m2/(m1+m2)/(m1+m2);
3905 s1x = m1 * m1 * S1x;
3906 s1y = m1 * m1 * S1y;
3907 s1z = m1 * m1 * S1z;
3908 s2x = m2 * m2 * S2x;
3909 s2y = m2 * m2 * S2y;
3910 s2z = m2 * m2 * S2z;
3913 Jz = Lmag * LNhz + s1z + s2z;
3916 Jnorm = sqrt( Jx*Jx + Jy*Jy + Jz*Jz);
3921 thetaJL = acos(Jhatz);
3922 phiJ = atan2(Jhaty, Jhatx);
3924 phiO = 0.5*
LAL_PI - phiRef;
3925 Nx = sin(incl)*cos(phiO);
3926 Ny = sin(incl)*sin(phiO);
3929 *thetaJN = acos(Jhatx*Nx + Jhaty*Ny + Jhatz*Nz);
3934 ROTATEY(-thetaJL, Nx, Ny, Nz);
3936 ROTATEZ(-phiJ, LNhx, LNhy, LNhz);
3937 ROTATEY(-thetaJL, LNhx, LNhy, LNhz);
3942 phiN = atan2(Ny, Nx);
3948 *phiJL = atan2(LNhy, LNhx);
4163 int found_approximant, found_order, found_axis;
4171#define DELETE_SUBSTRING_IN_LIST_FROM_STRING(string, list) delete_substring_in_list_from_string(string, list, sizeof(list)/sizeof(*list))
4175#undef DELETE_SUBSTRING_IN_LIST_FROM_STRING
4181 if (found_approximant < 0)
4185 *order = found_order;
4187 if (found_order < 0)
4198 if (strspn(
string,
"\b") != strlen(
string))
4335 for (
i = 0;
i < size; ++
i)
4377 for (
i = 0;
i < size; ++
i)
4607 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4611 return spin_support;
4733 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4761 return allow_zero_fmin;
4898 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4901 return testGR_accept;
4920 Mc =
M*pow(eta, 0.6);
4921 len = (*hptilde)->data->length;
4927 if ((*hctilde)->data->length != len) {
4928 XLALPrintError(
"Lengths of plus and cross polarization series do not agree \n");
4932 f0 = (*hptilde)->f0;
4933 if ((*hctilde)->f0 != f0) {
4934 XLALPrintError(
"Starting frequencies of plus and cross polarization series do not agree \n");
4938 df = (*hptilde)->deltaF;
4939 if ((*hctilde)->deltaF != df) {
4940 XLALPrintError(
"Frequency steps of plus and cross polarization series do not agree \n");
4948 if (nonGR_alpha == 1) {
4951 for (
i=k;
i<len;
i++) {
4953 tmpExp = cexp(I*(dPhiPref +
zeta*log(f)));
4954 hplus = (*hptilde)->data->data[
i] * tmpExp;
4955 (*hptilde)->data->data[
i] = hplus;
4956 hcross = (*hctilde)->data->data[
i] * tmpExp;
4957 (*hctilde)->data->data[
i] = hcross;
4961 zeta = LIV_A_sign*pow(
LAL_PI, (2. - nonGR_alpha))*
r*pow(Mc*
LAL_MRSUN_SI, (1. - nonGR_alpha))/((1. - nonGR_alpha)*pow(lambda_eff, (2. - nonGR_alpha)));
4963 for (
i=k;
i<len;
i++) {
4965 tmpVal = pow(f, (nonGR_alpha - 1.));
4966 tmpExp=cexp(-I*dPhiPref*tmpVal);
4967 hplus = (*hptilde)->data->data[
i] * tmpExp;
4968 (*hptilde)->data->data[
i] = hplus;
4969 hcross = (*hctilde)->data->data[
i] * tmpExp;
4970 (*hctilde)->data->data[
i] = hcross;
5002 double mu = m1 * m2 /
M;
5003 double eta =
mu /
M;
5005 double chi = fabs(fabs(s1) > fabs(s2) ? s1 : s2);
5015 double c3 = (226.0/15.0) * chi;
5019 return c0 * pow(v, -8) * (1.0 + (
c2 + (c3 + c4 * v) * v) * v * v);
5040 const double norbits = 1;
5044 return norbits * (2.0 *
LAL_PI *
r / v);
5065 const double nefolds = 11;
5068 const double f1 = +1.5251;
5069 const double f2 = -1.1568;
5070 const double f3 = +0.1292;
5071 const double q1 = +0.7000;
5072 const double q2 = +1.4187;
5073 const double q3 = -0.4990;
5076 double Q =
q1 +
q2 * pow(1.0 -
s,
q3);
5077 double tau = 2.0 *
Q / omega;
5078 return nefolds *
tau;
5099 const double maximum_black_hole_spin = 0.998;
5108 s = 0.686 + 0.15 * (S1z + S2z);
5115 if (
s > maximum_black_hole_spin)
5116 s = maximum_black_hole_spin;
5137 double mu = m1 * m2 /
M;
5138 double eta =
mu /
M;
5168 UINT4 SpinAlignedEOBVersion;
5226 XLALPrintError(
"Non-zero spins were given, but EOBNRv2 ringdown frequencies do not depend on spin.\n");
5228 spin1[0] = 0.; spin1[1] = 0.; spin1[2] = 0.;
5229 spin2[0] = 0.; spin2[1] = 0.; spin2[2] = 0.;
5234 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
5235 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
5239 modefreqVec.
data = &modeFreq;
5245 freq = creal(modeFreq) / (2 *
LAL_PI);
5252 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
5253 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
5255 modefreqVec.
data = &modeFreq;
5261 freq = creal(modeFreq) / (2 *
LAL_PI);
5273 SpinAlignedEOBVersion);
5277 fprintf(stdout,
"Final frequency for TEOBResumS not implemented yet.\n");
5318 XLALPrintError(
"Non-zero spins were given, but this is a non-spinning approximant.\n");
5335 XLALPrintError(
"Non-zero transverse spins were given, but this is a non-precessing approximant.\n");
5421 XLALPrintError(
"I don't know how to calculate final freq. for this approximant, sorry!\n");
5482 ntaper = round(textra / hplus->
deltaT);
5483 for (j = 0; j < ntaper; ++j) {
5484 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5536 const size_t min_taper_samples = 4;
5542 if (hplus->
data->
length < 2 * min_taper_samples) {
5543 XLAL_PRINT_WARNING(
"waveform is too shorter than %zu samples: no final tapering applied", 2 * min_taper_samples);
5551 if (ntaper < min_taper_samples)
5552 ntaper = min_taper_samples;
5553 for (j = 1; j < ntaper; ++j) {
5554 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5563 if (ntaper < min_taper_samples)
5564 ntaper = min_taper_samples;
5565 for (j = 0; j < ntaper; ++j) {
5566 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5593 if (ampOrder == -1) {
5601 fStart = fLow * 2./(ampOrder+2);
5624 const REAL8 distance,
5625 const REAL8 inclination,
5627 const REAL8 longAscNodes,
5628 const REAL8 eccentricity,
5629 const REAL8 UNUSED meanPerAno,
5634 const REAL8 lambda1,
5635 const REAL8 lambda2,
5636 const REAL8 dQuadParam1,
5637 const REAL8 dQuadParam2,
5638 LALSimInspiralWaveformFlags *waveFlags,
5645 LALDict *LALparams = NULL;
5646 REAL8 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z;
5647 char *numrel_data_path;
5655 REAL8 v0 = 1., quadparam1 = 1.+dQuadParam1, quadparam2 = 1.+dQuadParam2;
5664 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
5671 UINT4 PrecEOBversion;
5674 UINT4 SpinAlignedEOBversion;
5675 REAL8 spin1x,spin1y,spin1z;
5676 REAL8 spin2x,spin2y,spin2z;
5677 REAL8 polariz=longAscNodes;
5682 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
5684 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
5686 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);
5688 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);
5690 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);
5691 if( S1x*S1x + S1y*S1y + S1z*S1z > 1.000001 )
5692 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);
5693 if( S2x*S2x + S2y*S2y + S2z*S2z > 1.000001 )
5694 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);
5696 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
5697 if(
f_min > 40.000001 )
5698 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
5711 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5715 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5717 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5720 deltaT, m1, m2,
f_min, distance, inclination, amplitudeO, phaseO);
5726 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5728 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5730 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5735 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5736 0, amplitudeO, phaseO);
5742 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5744 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5746 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5751 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5752 0, amplitudeO, phaseO);
5758 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5760 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5762 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5767 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5768 0, amplitudeO, phaseO);
5774 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5776 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5778 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5783 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5784 0, amplitudeO, phaseO);
5790 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5792 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5794 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5798 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5801 deltaT, m1, m2,
f_min, f_ref, distance, inclination, eccentricity,
5802 amplitudeO, phaseO);
5810 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5814 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5816 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5820 m1, m2,
f_min, 0., distance, inclination);
5826 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5830 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5832 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5836 m1, m2,
f_min, distance, inclination);
5842 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5846 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5848 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5851 m1, m2,
f_min, distance, inclination);
5858 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5872 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5873 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, NULL);
5885 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5899 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5900 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2,
5901 quadparam1, quadparam2, NULL,
5902 phaseO, amplitudeO);
5908 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5922 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2,
5923 quadparam1, quadparam2, NULL,
5924 phaseO, amplitudeO);
5929 if (S2x != 0. || S2y != 0. || S2z != 0.){
5930 XLALPrintError(
"XLAL Error : The spindominatedwf approximant is only for 1 spin case.\n");
5934 if (amplitudeO > 3) {
5935 XLALPrintError(
"XLAL Error : Foe the spindominatedwf approximant maximal amplitude correction is 1.5 PN\n");
5939 XLALPrintError(
"XLAL Error : For the spindominatedwf approximant maximal phase correction is 2 PN\n");
5947 ret =
XLALSimInspiralSpinDominatedWaveformInterfaceTD(hplus, hcross,
deltaT, m1, m2,
f_min, f_ref, distance, S1x, S1y, S1z, LNhatx, LNhaty, LNhatz, incl, phaseO, amplitudeO, phiRef);
5954 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5956 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
5958 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5960 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5965 f_min, 0., distance, inclination);
5971 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5973 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5976 deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5977 phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2, NULL);
5983 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5985 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
5987 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5989 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5994 f_min, 0., distance, inclination, NULL);
5999 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6001 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6003 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6008 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, 0.0, phiRef, 0.0, 0.0, 0.0,
deltaT,
f_min, f_ref, NULL,
approximant);
6014 const REAL8 cfac=cos(inclination);
6015 const REAL8 pfac = 0.5 * (1. + cfac*cfac);
6017 for (loopi=hp->
data->
length - 1; loopi > -1; loopi--)
6021 if (ampsqr > maxamp)
6035 ret =
XLALSimInspiralTDFromFD(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, 0.0, 0.0, 0.0,
deltaT,
f_min, f_ref, NULL,
approximant);
6041 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6043 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at the start.\n", __func__);
6045 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6048 deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
6049 phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2, NULL);
6055 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6057 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6059 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6061 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6063 SpinAlignedEOBversion = 1;
6065 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6071 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6073 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6075 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6077 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6079 SpinAlignedEOBversion = 2;
6081 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6087 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6089 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6091 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6093 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6095 SpinAlignedEOBversion = 4;
6097 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6103 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6105 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6107 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6109 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6111 SpinAlignedEOBversion = 200;
6113 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6119 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6121 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6123 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6125 REAL8 spin1[3], spin2[3];
6126 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
6127 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
6130 deltaT, m1, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion);
6136 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6138 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6140 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6142 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6144 SpinAlignedEOBversion = 400;
6146 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6152 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6154 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
6164 phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1x, S1y, S1z,
6165 S2x, S2y, S2z, numrel_data_path, NULL);
6171 XLALPrintError(
"TD version of approximant not implemented in lalsimulation\n");
6177 REAL8 cp=cos(2.*polariz);
6178 REAL8 sp=sin(2.*polariz);
6179 for (
UINT4 idx=0;idx<(*hplus)->data->length;idx++) {
6180 tmpP=(*hplus)->data->data[idx];
6181 tmpC=(*hcross)->data->data[idx];
6182 (*hplus)->data->data[idx] =cp*tmpP+sp*tmpC;
6183 (*hcross)->data->data[idx]=cp*tmpC-sp*tmpP;
6209 const REAL8 distance,
6210 const REAL8 inclination,
6212 const REAL8 longAscNodes,
6213 const REAL8 eccentricity,
6214 const REAL8 UNUSED meanPerAno,
6220 const REAL8 lambda1,
6221 const REAL8 lambda2,
6222 const REAL8 dQuadParam1,
6223 const REAL8 dQuadParam2,
6224 LALSimInspiralWaveformFlags *waveFlags,
6231 REAL8 LNhatx, LNhaty, LNhatz;
6233 REAL8 E1x, E1y, E1z;
6239 REAL8 quadparam1 = 1.+dQuadParam1, quadparam2 = 1.+dQuadParam2;
6244 REAL8 spin1x,spin1y,spin1z;
6245 REAL8 spin2x,spin2y,spin2z;
6248 REAL8 chi1_l, chi2_l, chip, thetaJ, alpha0;
6256 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
6262 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);
6263 if( deltaF < 1./4096. )
6264 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);
6266 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);
6268 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);
6270 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);
6271 if( S1x*S1x + S1y*S1y + S1z*S1z > 1.000001 )
6272 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);
6273 if( S2x*S2x + S2y*S2y + S2z*S2z > 1.000001 )
6274 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);
6276 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
6277 if(
f_min > 40.000001 )
6278 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
6291 cfac = cos(inclination);
6292 pfac = 0.5 * (1. + cfac*cfac);
6301 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6304 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6306 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6316 eccentricity, phaseO);
6324 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6327 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6329 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6330 XLAL_PRINT_DEPRECATION_WARNING(
"Calling TF2 via old interface, setting to default values tidal lambdas, quad-monopole pars, amplitude and phase order");
6338 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6339 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6340 for(j = 0; j < (*hptilde)->data->length; j++) {
6341 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6342 (*hptilde)->data->data[j] *=
pfac;
6350 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6353 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6355 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6356 XLAL_PRINT_DEPRECATION_WARNING(
"Calling TF2 via old interface, setting to default values tidal lambdas, quad-monopole pars, amplitude and phase order");
6367 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6368 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6369 for(j = 0; j < (*hptilde)->data->length; j++) {
6370 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6371 (*hptilde)->data->data[j] *=
pfac;
6379 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6383 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6390 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6391 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6392 for(j = 0; j < (*hptilde)->data->length; j++) {
6393 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6394 (*hptilde)->data->data[j] *=
pfac;
6404 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6407 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6409 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
6413 ROTATEY(inclination, spin1x, spin1y, spin1z);
6414 LNhatx = sin(inclination);
6416 LNhatz = cos(inclination);
6423 m1, m2, spin1x, spin1y, spin1z, LNhatx, LNhaty, LNhatz,
6425 NULL, phaseO, amplitudeO);
6444 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6446 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6448 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6456 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6457 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6458 for(j = 0; j < (*hptilde)->data->length; j++) {
6459 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6460 (*hptilde)->data->data[j] *=
pfac;
6467 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6469 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6473 lambda1, lambda2,
f_min,
f_max, distance, phaseO, amplitudeO);
6477 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6478 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6479 for(j = 0; j < (*hptilde)->data->length; j++) {
6480 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6481 (*hptilde)->data->data[j] *=
pfac;
6489 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6491 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6493 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6501 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6502 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6503 for(j = 0; j < (*hptilde)->data->length; j++) {
6504 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6505 (*hptilde)->data->data[j] *=
pfac;
6512 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6514 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6516 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6524 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6525 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6526 for(j = 0; j < (*hptilde)->data->length; j++) {
6527 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6528 (*hptilde)->data->data[j] *=
pfac;
6535 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6537 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6539 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6547 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6548 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6549 for(j = 0; j < (*hptilde)->data->length; j++) {
6550 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6551 (*hptilde)->data->data[j] *=
pfac;
6558 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6562 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6565 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 0);
6571 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6575 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6578 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 1);
6584 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6586 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6588 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6590 XLALPrintError(
"XLAL Error - %s: SEOBNRv1ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__,S1z,S2z);
6595 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
6601 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6603 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6605 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6608 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
6614 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6616 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6618 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6620 XLALPrintError(
"XLAL Error - %s: SEOBNRv2ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__,S1z,S2z);
6625 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
6631 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6633 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6635 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6638 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
6644 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6646 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6648 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6651 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1);
6657 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6660 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6662 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6670 &chi1_l, &chi2_l, &chip, &thetaJ, &alpha0,
6672 LNhatx, LNhaty, LNhatz,
6673 spin1x, spin1y, spin1z,
6677 chi1_l, chi2_l, chip, thetaJ,
6678 m1, m2, distance, alpha0, phiRef, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv1_V,
NoNRT_V, NULL);
6684 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6687 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6689 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6697 &chi1_l, &chi2_l, &chip, &thetaJ, &alpha0,
6699 LNhatx, LNhaty, LNhatz,
6700 spin1x, spin1y, spin1z,
6704 chi1_l, chi2_l, chip, thetaJ,
6705 m1, m2, distance, alpha0, phiRef, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv2_V,
NoNRT_V, NULL);
6713 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6716 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6723 ROTATEY(inclination,spin1x,spin1y,spin1z);
6724 ROTATEY(inclination,spin2x,spin2y,spin2z);
6725 LNhatx = sin(inclination);
6727 LNhatz = cos(inclination);
6747 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, NULL, phaseO, amplitudeO, phiRefAtEnd);
6755 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6758 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6765 ROTATEY(inclination,spin1x,spin1y,spin1z);
6766 ROTATEY(inclination,spin2x,spin2y,spin2z);
6767 LNhatx = sin(inclination);
6769 LNhatz = cos(inclination);
6789 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, NULL, phaseO, amplitudeO, phiRefAtEnd);
6795 XLALPrintError(
"FD version of approximant not implemented in lalsimulation\n");
6799 REAL8 polariz=longAscNodes;
6802 for (
UINT4 idx=0;idx<(*hptilde)->data->length;idx++) {
6803 tmpP=(*hptilde)->data->data[idx];
6804 tmpC=(*hctilde)->data->data[idx];
6805 (*hptilde)->data->data[idx] =cos(2.*polariz)*tmpP+sin(2.*polariz)*tmpC;
6806 (*hctilde)->data->data[idx]=cos(2.*polariz)*tmpC-sin(2.*polariz)*tmpP;
6831 if ((lambda1 > 0) && (quadparam1 == 0)) {
6836 if ((lambda2 > 0) && (quadparam2 == 0)) {
int XLALHighPassCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series, REAL8 frequency, REAL8 amplitude, INT4 filtorder)
int XLALHighPassREAL8TimeSeries(REAL8TimeSeries *series, REAL8 frequency, REAL8 amplitude, INT4 filtorder)
int XLALDictContains(const LALDict *dict, const char *key)
LALDictEntry * XLALDictPop(LALDict *dict, const char *key)
int XLALDictRemove(LALDict *dict, const char *key)
void XLALDestroyDict(LALDict *dict)
LALDict * XLALDictDuplicate(const LALDict *orig)
LALDict * XLALCreateDict(void)
int XLALDictInsertINT4Value(LALDict *dict, const char *key, INT4 value)
INT4 XLALSimIMREOBGenerateQNMFreqV5(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant)
These functions generate the quasinormal mode frequencies for a black hole ringdown,...
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)
double XLALIMRPhenomDGetPeakFreq(const REAL8 m1_in, const REAL8 m2_in, const REAL8 chi1_in, const REAL8 chi2_in)
Function to return the frequency (in Hz) of the peak of the frequency domain amplitude for the IMRPhe...
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.
#define ROTATEZ(angle, vx, vy, vz)
#define ROTATEY(angle, vx, vy, vz)
REAL8 XLALSimInspiralChirpStartFrequencyBound(REAL8 tchirp, REAL8 m1, REAL8 m2)
Routine to compute an underestimate of the starting frequency for a given chirp time.
REAL8 XLALSimInspiralChirpTimeBound(REAL8 fstart, REAL8 m1, REAL8 m2, REAL8 s1, REAL8 s2)
Routine to compute an overestimate of the inspiral time from a given frequency.
int XLALSimInspiralGetTaperFromString(const char *string)
Parses a string to determine the LALSimInspiralApplyTaper enum value.
const char * XLALGetStringFromApproximant(Approximant approximant)
const char * XLALSimInspiralGetStringFromPNOrder(LALPNOrder order)
Returns a string associated with a LALPNOrder enum value.
static const char * lalSimulationTaperNames[]
int XLALGetTaperFromString(const char *string)
int XLALSimInspiralTDConditionStage1(REAL8TimeSeries *hplus, REAL8TimeSeries *hcross, REAL8 textra, REAL8 f_min)
First stage of conditioning of time-domain waveforms.
int XLALSimInspiralGetSpinFreqFromApproximant(Approximant approx)
int XLALSimInspiralApproximantAcceptTestGRParams(Approximant approx)
#define DELETE_SUBSTRING_IN_LIST_FROM_STRING(string, list)
int XLALGetOrderFromString(const char *waveform)
REAL8 XLALSimInspiralMergeTimeBound(REAL8 m1, REAL8 m2)
Routine to compute an overestimate of the merger time.
static const char * lalSimulationModesChoiceNames[]
int XLALSimInspiralGetPNOrderFromString(const char *waveform)
Parses a waveform string to determine PN order.
int XLALGetApproximantFromString(const char *waveform)
int XLALSimInspiralChooseFDWaveformOLD(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, REAL8 f_ref, const REAL8 lambda1, const REAL8 lambda2, const REAL8 dQuadParam1, const REAL8 dQuadParam2, LALSimInspiralWaveformFlags *waveFlags, LALSimInspiralTestGRParam *nonGRparams, int amplitudeO, const int phaseO, const Approximant approximant)
int XLALSimInspiralGetHigherModesFromString(const char *string)
Parses a string to determine the LALSimInspiralModesChoice enum value.
double XLALSimInspiralGetFrequency(REAL8 m1, REAL8 m2, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, FrequencyFunction freqFunc)
Function that gives the value of the desired frequency given some physical parameters.
#define MAX_PRECESSING_AMP_PN_ORDER
(Twice) the highest known PN order of amplitude correction for precessing binaries.
int XLALGetHigherModesFromString(const char *string)
const char * XLALSimInspiralGetStringFromFrameAxis(LALSimInspiralFrameAxis axis)
Returns a string associated with a LALSimInspiralFrameAxis enum value.
int XLALGetFrameAxisFromString(const char *waveform)
static const char * lalSimulationFrameAxisNames[]
const char * XLALSimInspiralGetStringFromModesChoice(LALSimInspiralModesChoice modes)
Returns a string associated with a LALSimInspiralModesChoice enum value.
REAL8 XLALSimInspiralfLow2fStart(REAL8 fLow, INT4 ampOrder, INT4 approximant)
Function for determining the starting frequency of the (2,2) mode when the highest order contribution...
int XLALSimInspiralImplementedFDApproximants(Approximant approximant)
Checks whether the given approximant is implemented in lalsimulation's XLALSimInspiralChooseFDWavefor...
const char * XLALSimInspiralGetStringFromTaper(LALSimInspiralApplyTaper taper)
Returns a string associated with a LALSimInspiralApplyTaper enum value.
int XLALSimInspiralGetAllowZeroMinFreqFromApproximant(Approximant approx)
REAL8 XLALSimInspiralRingdownTimeBound(REAL8 M, REAL8 s)
Routine to compute an overestimate of the ringdown time.
#define INITIALIZE_NAME(a)
int XLALSimInspiralGetFrameAxisFromString(const char *waveform)
Parses a waveform string to determine frame axis.
const LALSimInspiralGenerator * lalSimInspiralGeneratorTemplates[NumApproximants]
REAL8 XLALSimInspiralFinalBlackHoleSpinBound(REAL8 S1z, REAL8 S2z)
Routine to compute an overestimate of a final black hole dimensionless spin.
const char * XLALSimInspiralGetStringFromApproximant(Approximant approximant)
Returns a string associated with an Approximant enum value.
int XLALSimInspiralDecomposeWaveformString(int *approximant, int *order, int *axis, const char *waveform)
Parses a waveform string to determine approximant, PN order, and axis choice.
double XLALSimInspiralGetFinalFreq(REAL8 m1, REAL8 m2, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, Approximant approximant)
Function that gives the default ending frequencies of the given approximant.
int XLALSimInspiralChooseTDWaveformOLD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaT, const REAL8 f_min, REAL8 f_ref, const REAL8 lambda1, const REAL8 lambda2, const REAL8 dQuadParam1, const REAL8 dQuadParam2, LALSimInspiralWaveformFlags *waveFlags, LALSimInspiralTestGRParam *nonGRparams, int amplitudeO, const int phaseO, const Approximant approximant)
int XLALSimInspiralImplementedTDApproximants(Approximant approximant)
Checks whether the given approximant is implemented in lalsimulation's XLALSimInspiralChooseTDWavefor...
int XLALSimInspiralTDConditionStage2(REAL8TimeSeries *hplus, REAL8TimeSeries *hcross, REAL8 f_min, REAL8 f_max)
Second stage of conditioning of time-domain waveforms.
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...
static const char * lalSimulationPNOrderNames[]
int XLALSimLorentzInvarianceViolationTerm(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1, REAL8 m2, REAL8 r, LALDict *LALparams)
static const char * lalSimulationApproximantNames[]
int XLALSimInspiralGetSpinSupportFromApproximant(Approximant approx)
#define MAX_NONPRECESSING_AMP_PN_ORDER
(Twice) the highest known PN order of amplitude correction for non-precessing binaries.
static int delete_substring_in_list_from_string(char *string, const char *list[], size_t size)
int XLALSimInspiralGetApproximantFromString(const char *waveform)
Parses a waveform string to determine approximant.
const LALSimInspiralGenerator lalSEOBNRv4_ROMGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv1GeneratorTemplate
const LALSimInspiralGenerator lalLackey_Tidal_2013_SEOBNRv2_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomDGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv3GeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorT5FourierGeneratorTemplate
const LALSimInspiralGenerator lalTaylorEtGeneratorTemplate
const LALSimInspiralGenerator lalNRSur7dq4GeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorT1GeneratorTemplate
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)
const LALSimInspiralGenerator lalIMRPhenomPv3HMGeneratorTemplate
const LALSimInspiralGenerator lalSpinDominatedWfGeneratorTemplate
const LALSimInspiralGenerator lalNRSur4d2sGeneratorTemplate
const LALSimInspiralGenerator lalNRHybSur3dq8GeneratorTemplate
COMPLEX16TimeSeries * XLALSimInspiralTaylorT2PNMode(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 l, int m)
const LALSimInspiralGenerator lalIMRPhenomPGeneratorTemplate
const LALSimInspiralGenerator lalTaylorR2F4GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomTPHMGeneratorTemplate
int XLALSimInspiralSpinTaylorT4OLD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, 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, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams, int phaseO, int amplitudeO)
const LALSimInspiralGenerator lalNR_hdf5GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv3_pertGeneratorTemplate
const LALSimInspiralGenerator lalEOBNRv2_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXPHMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomAGeneratorTemplate
const LALSimInspiralGenerator lalTaylorT4GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXPNRGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2_ROM_DoubleSpin_HIGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomTHMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv2_NRTidalv2GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXAS_NRTidalv3GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXP_NRTidalv3GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXASGeneratorTemplate
const LALSimInspiralGenerator lalEccentricTDGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomD_NRTidalGeneratorTemplate
const LALSimInspiralGenerator lalEOBNRv2GeneratorTemplate
const LALSimInspiralGenerator lalPythonGeneratorTemplate
const LALSimInspiralGenerator lalTaylorF2GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomHMGeneratorTemplate
const LALSimInspiralGenerator lalTaylorF2RedSpinGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv1_ROM_DoubleSpinGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXO4aGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv2GeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorF2GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv1_ROM_EffectiveSpinGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXHMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomTGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv5HM_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXPGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4T_surrogateGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv2_NRTidalGeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorT4GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv3_optGeneratorTemplate
const LALSimInspiralGenerator lalEccentricFDGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4_optGeneratorTemplate
const LALSimInspiralGenerator lalTEOBResumSGeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorT5GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4_ROM_NRTidalv2GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2TGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv5_ROM_NRTidalv3GeneratorTemplate
const LALSimInspiralGenerator lalHGimriGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomCGeneratorTemplate
int XLALSimInspiralSpinTaylorT1OLD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 v0, 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, REAL8 lambda1, REAL8 lambda2, REAL8 quadparam1, REAL8 quadparam2, LALDict *LALparams, int phaseO, int amplitudeO)
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)
const LALSimInspiralGenerator lalSpinTaylorT4FourierGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXP_NRTidalv2GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4PHMGeneratorTemplate
const LALSimInspiralGenerator lalTaylorF2NLTidesGeneratorTemplate
const LALSimInspiralGenerator lalTaylorT3GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv3_opt_rk4GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4_ROM_NRTidalv2_NSBHGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2GeneratorTemplate
const LALSimInspiralGenerator lalTaylorT2GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv3GeneratorTemplate
const LALSimInspiralGenerator lalEOBNRv2HMGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4TGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4HM_ROMGeneratorTemplate
const LALSimInspiralGenerator lalPhenSpinTaylorGeneratorTemplate
const LALSimInspiralGenerator lalPhenSpinTaylorRDGeneratorTemplate
const LALSimInspiralGenerator lalTEOBResum_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomXAS_NRTidalv2GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv5_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomNSBHGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4HM_PAGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2_ROM_DoubleSpinGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv4PGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomD_NRTidalv2GeneratorTemplate
const LALSimInspiralGenerator lalTaylorF2EccGeneratorTemplate
const LALSimInspiralGenerator lalpSEOBNRv4HM_PAGeneratorTemplate
COMPLEX16TimeSeries * XLALSimInspiralTaylorT4PNMode(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 l, int m)
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)
COMPLEX16TimeSeries * XLALSimInspiralTaylorT3PNMode(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 l, int m)
const LALSimInspiralGenerator lalSEOBNRv4_ROM_NRTidalGeneratorTemplate
const LALSimInspiralGenerator lalEOBNRv2HM_ROMGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2_ROM_EffectiveSpinGeneratorTemplate
const LALSimInspiralGenerator lalNRSur7dq2GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomBGeneratorTemplate
const LALSimInspiralGenerator lalTaylorT1GeneratorTemplate
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.
const LALSimInspiralGenerator lalSEOBNRv4GeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomTPGeneratorTemplate
const LALSimInspiralGenerator lalTaylorF2RedSpinTidalGeneratorTemplate
COMPLEX16TimeSeries * XLALSimInspiralTaylorT1PNMode(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 l, int m)
const LALSimInspiralGenerator lalSEOBNRv4HMGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2_optGeneratorTemplate
REAL8 XLALSimInspiralEOSQfromLambda(REAL8 lambda)
static double tau(const double a, const double b, const sysq *system)
Internal function that computes the spin-spin couplings.
static REAL8 UNUSED q3(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED q2(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED q1(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralLN(REAL8 M, REAL8 eta, REAL8 v)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT3Frequency_0PNCoeff(REAL8 totalmass)
Computes the PN Coefficients for using in the TaylorT3 frequency equation.
static REAL8 UNUSED XLALSimInspiralL_2PN(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2Timing_0PNCoeff(REAL8 totalmass, REAL8 eta)
Computes the PN Coefficients for using in the TaylorT2 timing equation.
#define LAL_CHECK_VALID_SERIES(s, val)
#define LAL_CHECK_CONSISTENT_TIME_SERIES(s1, s2, val)
#define FIX_REFERENCE_FREQUENCY(f_ref, f_min, approximant)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
void * XLALMalloc(size_t n)
INT4 XLALSimIMREOBGenerateQNMFreqV2(COMPLEX16Vector *modefreqs, const REAL8 mass1, const REAL8 mass2, const REAL8 spin1[3], const REAL8 spin2[3], UINT4 l, INT4 m, UINT4 nmodes, Approximant approximant)
These functions generate the quasinormal mode frequencies for a black hole ringdown.
@ IMRPhenomPv1_V
version 1: based on IMRPhenomC
@ IMRPhenomPv2_V
version 2: based on IMRPhenomD
@ NoNRT_V
special case for PhenomPv2 BBH baseline
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...
double XLALSimIMRPhenomAGetFinalFreq(const REAL8 m1, const REAL8 m2)
Compute the default final frequency.
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...
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 XLALSimIMRPhenomPCalculateModelParametersOld(REAL8 *chi1_l, REAL8 *chi2_l, REAL8 *chip, REAL8 *thetaJ, REAL8 *alpha0, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_ref, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, IMRPhenomP_version_type IMRPhenomP_version)
Deprecated : used the old convention (view frame for the spins) Function to map LAL parameters (masse...
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...
double XLALSimIMRPhenomBGetFinalFreq(const REAL8 m1, const REAL8 m2, const REAL8 chi)
Compute the default final frequency.
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 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...
double XLALSimIMRPhenomCGetFinalFreq(const REAL8 m1, const REAL8 m2, const REAL8 chi)
Convenience function to quickly find the default final frequency.
int XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(REAL8 *chi1L, REAL8 *chi2L, REAL8 *chi_p, REAL8 *thetaJN, REAL8 *alpha0, REAL8 *phi_aligned, REAL8 *zeta_polarization, 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, LALDict *lalParams)
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 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)
double XLALSimIMRSpinAlignedEOBPeakFrequency(REAL8 m1SI, REAL8 m2SI, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion)
This function returns the frequency at which the peak amplitude occurs in SEOBNRv(x)
int XLALSimInspiralPrecessingPolarizationWaveformHarmonic(COMPLEX16 *hplus, COMPLEX16 *hcross, REAL8 v, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhx, REAL8 lnhy, REAL8 lnhz, REAL8 e1x, REAL8 e1y, REAL8 e1z, REAL8 dm, REAL8 eta, REAL8 v0, INT4 n, INT4 ampO)
Computes polarizations h+ and hx for a spinning, precessing binary when provided a single value of al...
int XLALSimInspiralGenerateFDModes(SphHarmFrequencySeries **hlm, LALDict *params, LALSimInspiralGenerator *generator)
Compute frequency-domain modes for a specific approximant.
int XLALSimInspiralPolarizationsFromSphHarmTimeSeries(REAL8TimeSeries **hp, REAL8TimeSeries **hc, SphHarmTimeSeries *hlms, REAL8 iota, REAL8 phiRef)
Compute the polarizations from all the -2 spin-weighted spherical harmonic modes stored in 'hlms'.
int XLALSimInspiralPNPolarizationWaveforms(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 r, REAL8 i, int ampO)
Given time series for a binary's orbital dynamical variables, construct the waveform polarizations h+...
int XLALSimInspiralPNPolarizationWaveformsEccentric(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries *V, REAL8TimeSeries *Ecc, REAL8TimeSeries *U, REAL8TimeSeries *Phi, REAL8 m1, REAL8 m2, REAL8 r, REAL8 i, int ampO, int ph_O)
Given time series for a binary's orbital dynamical variables, computes the radial and angular orbital...
int XLALSimInspiralGenerateTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, LALDict *params, LALSimInspiralGenerator *generator)
Returns time-domain polarizations for a specific approximant.
SphHarmTimeSeries * XLALSimInspiralTDModesFromPolarizations(REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaT, REAL8 f_min, REAL8 f_ref, LALDict *LALparams, Approximant approximant)
Generates an time domain inspiral waveform using the specified approximant; the resulting waveform is...
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.
int XLALSimInspiralGenerateFDWaveform(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, LALDict *params, LALSimInspiralGenerator *generator)
Returns frequency-domain polarizations for a specific approximant.
int XLALSimInspiralChooseFDWaveform(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, REAL8 f_ref, LALDict *params, const Approximant approximant)
Chooses between different approximants when requesting a waveform to be generated For spinning wavefo...
int XLALSimInspiralFD(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 *LALparams, Approximant approximant)
Generates a frequency domain inspiral waveform using the specified approximant; the resulting wavefor...
int XLALSimInspiralPolarizationsFromChooseFDModes(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 UNUSED longAscNodes, const REAL8 UNUSED eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, REAL8 f_ref, LALDict *LALparams, const Approximant approximant)
Function returning the Fourier domain polarizations for positive frequencies built from the individua...
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.
LALSimInspiralGenerator * XLALSimInspiralChooseGenerator(Approximant approx, LALDict *params)
Returns LALSimInspiralGenerator object from approximant.
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.
SphHarmFrequencySeries * XLALSimInspiralChooseFDModes(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)
Interface to compute a set of -2 spin-weighted spherical harmonic modes for a binary merger for a giv...
int XLALSimInspiralPolarizationsFromSphHarmFrequencySeries(COMPLEX16FrequencySeries **hp, COMPLEX16FrequencySeries **hc, SphHarmFrequencySeries *hlms, REAL8 theta, REAL8 phi)
Return polarizations for positive frequencies built by summing the individual modes present in the in...
int XLALSimInspiralPNPolarizationWaveformsFromModes(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries *v, REAL8TimeSeries *phi, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 r, REAL8 i, int O)
Given time series for a binary's orbital dynamical variables, construct the waveform polarizations h+...
LALSimInspiralGenerator * XLALCreateSimInspiralGenerator(const LALSimInspiralGenerator *generator, LALDict *params)
Create LALSimInspiralGenerator object.
int XLALSimInspiralPrecessingPolarizationWaveforms(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8TimeSeries *LNhatx, REAL8TimeSeries *LNhaty, REAL8TimeSeries *LNhatz, REAL8TimeSeries *E1x, REAL8TimeSeries *E1y, REAL8TimeSeries *E1z, REAL8 m1, REAL8 m2, REAL8 r, INT4 ampO)
Computes polarizations h+ and hx for a spinning, precessing binary when provided time series of all t...
int XLALSimInspiralTDFromTD(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 TD waveform.
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 ...
int XLALSimInspiralChooseTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaT, const REAL8 f_min, REAL8 f_ref, LALDict *params, const Approximant approximant)
Chooses between different approximants when requesting a waveform to be generated For spinning wavefo...
int XLALSimInspiralTD(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)
Generates an time domain inspiral waveform using the specified approximant; the resulting waveform is...
SphHarmTimeSeries * XLALSimInspiralChooseTDModes(UNUSED 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, LALDict *params, int lmax, Approximant approximant)
Interface to compute a set of -2 spin-weighted spherical harmonic modes for a binary inspiral for a g...
const char * XLALSimInspiralGeneratorName(LALSimInspiralGenerator *generator)
Return approximant name from generator object.
int XLALSimInspiralChooseWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, 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 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 meanPerAno, const REAL8 deltaT, const REAL8 f_min, const REAL8 f_ref, LALDict *LALpars, const Approximant approximant)
int XLALSimInspiralGenerateTDModes(SphHarmTimeSeries **hlm, LALDict *params, LALSimInspiralGenerator *generator)
Compute time-domain modes for a specific approximant.
SphHarmTimeSeries * XLALSimInspiralModesTD(REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 f_ref, REAL8 r, LALDict *LALpars, int lmax, Approximant approximant)
Interface to compute a conditioned set of -2 spin-weighted spherical harmonic modes for a binary insp...
void XLALDestroySimInspiralGenerator(LALSimInspiralGenerator *generator)
Destroy LALSimInspiralGenerator object.
COMPLEX16TimeSeries * XLALSimInspiralChooseTDMode(REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 f_min, REAL8 f_ref, REAL8 r, REAL8 lambda1, REAL8 lambda2, LALSimInspiralWaveformFlags *waveFlags, LALSimInspiralTestGRParam *nonGRparams, int amplitudeO, int phaseO, int l, int m, Approximant approximant)
Interface to compute a single -2 spin-weighted spherical harmonic mode for a binary inspiral of any a...
LALSimInspiralModesChoice
Enumerator for choosing which modes to include in IMR models.
#define LAL_SIM_INSPIRAL_FRAME_AXIS_DEFAULT
LALSimInspiralApplyTaper
Enumeration to specify the tapering method to apply to the waveform.
FrequencyFunction
Enum of various frequency functions.
#define LAL_PN_MODE_L_MAX
LALSimInspiralFrameAxis
Enumerator for choosing the reference frame associated with PSpinInspiralRD waveforms.
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
LALPNOrder
Enum of possible values to use for post-Newtonian order.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3L
Inlude only l=3 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_4AND5L
Inlude l=4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_4L
Inlude only l=4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_ALL
Include all available modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3L
Inlude l=2,3 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3AND5L
Inlude l=2,3,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND4L
Include l=3,4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND5L
Inlude l=2,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND5L
Inlude l=3,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_5L
Inlude only l=5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND4AND5L
Inlude l=2,4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3AND4L
Include l=2,3,4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND4AND5L
Inlude l=3,4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3AND4AND5L
Include l=2,3,4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND4L
Include l=2,4 modes.
@ LAL_SIM_INSPIRAL_TAPER_START
Taper the start of the waveform.
@ LAL_SIM_INSPIRAL_TAPER_STARTEND
Taper the start and the end of the waveform.
@ LAL_SIM_INSPIRAL_TAPER_NUM_OPTS
Number of elements in enum, useful for checking bounds.
@ LAL_SIM_INSPIRAL_TAPER_END
Taper the end of the waveform.
@ LAL_SIM_INSPIRAL_TAPER_NONE
No tapering.
@ LAL_SIM_INSPIRAL_CASEBYCASE_SPINSUPPORT
These approximant support fully precessing spins.
@ LAL_SIM_INSPIRAL_SINGLESPIN
These approximants cannot include spin terms.
@ LAL_SIM_INSPIRAL_SPINLESS
@ LAL_SIM_INSPIRAL_ALIGNEDSPIN
These approximants support a signle spin (by default that is the object 1)
@ LAL_SIM_INSPIRAL_PRECESSINGSPIN
These approximants can include spins aligned with L_N.
@ LAL_SIM_INSPIRAL_NUMSPINSUPPORT
This approximant (ExternalPython) has spin support determined by the external python module on a case...
@ fIMRPhenomBFinal
Final of IMRPhenomB.
@ fTEOBResumSFinal
Dominant ringdown frequency in TEOBResumS.
@ fIMRPhenomAFinal
Final frequency of IMRPhenomA.
@ fSEOBNRv5RD
Dominant ringdown frequency in SEOBNRv5_ROM.
@ fSEOBNRv2Peak
Frequency of the peak amplitude in SEOBNRv2.
@ fSEOBNRv4RD
Dominant ringdown frequency in SEOBNRv4.
@ fSEOBNRv1Peak
Frequency of the peak amplitude in SEOBNRv1.
@ fSchwarzISCO
Schwarzschild ISCO.
@ fSEOBNRv2RD
Dominant ringdown frequency in SEOBNRv2.
@ fEOBNRv2RD
Ringdown frequency of EOBNRv2.
@ fIMRPhenomCFinal
Final of IMRPhenomC.
@ fIMRPhenomDPeak
Frequency of the peak amplitude in IMRPhenomD.
@ fSEOBNRv5Peak
Frequency of the peak amplitude in SEOBNRv5_ROM.
@ fSEOBNRv4Peak
Frequency of the peak amplitude in SEOBNRv4.
@ fSEOBNRv1RD
Dominant ringdown frequency in SEOBNRv1.
@ fEOBNRv2HMRD
Ringdown frequency of highest harmonic in EOBNRv2HM.
@ LAL_SIM_INSPIRAL_SPINS_CASEBYCASE
These approximants have nonprecessing spins.
@ LAL_SIM_INSPIRAL_SPINS_FLOW
These approximants are parameterized by the spins at f_ref.
@ LAL_SIM_INSPIRAL_SPINS_F_REF
@ LAL_SIM_INSPIRAL_SPINS_NONPRECESSING
These approximants are parameterized by the spins at flow.
@ LAL_SIM_INSPIRAL_NUMSPINFREQ
These approximants (NR waveforms) have spins parameterized at different frequencies on a case-by-case...
@ LAL_SIM_INSPIRAL_FRAME_AXIS_VIEW
Set z-axis along direction of GW propagation (line of sight)
@ LAL_SIM_INSPIRAL_FRAME_AXIS_TOTAL_J
Set z-axis along the initial total angular momentum.
@ LAL_SIM_INSPIRAL_FRAME_AXIS_ORBITAL_L
Set z-axis along the initial orbital angular momentum.
@ EOB
Effective one-body waveform; Outputs a time-domain wave.
@ TaylorR2F4
A frequency domain model closely related to TaylorT4.
@ PadeT1
Time-domain P-approximant; Outputs a time-domain wave.
@ IMRPhenomFB
Frequency domain (non-precessing spins) inspiral-merger-ringdown templates of Ajith et al [Ajith_2009...
@ NumApproximants
Number of elements in enum, useful for checking bounds.
@ IMRPhenomFC
Frequency domain (non-precessing spins) inspiral-merger-ringdown templates of Santamaria et al [Santa...
@ 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 ...
@ FrameFile
The waveform contains arbitrary data read from a frame file.
@ 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.
@ GeneratePPN
The time domain templates generated by LALGeneratePPNInspiral() in the inject package (equivalent to ...
@ BCVSpin
Detection template family of Buonanno, Chen and Vallisneri including spin effects ; Outputs a frequen...
@ 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....
@ IMRPhenomXP_NRTidalv3
Tidal extension of IMRPhenomXP based on NRTidalv3.
@ 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.
@ IMRPhenomFA
Frequency domain (non-spinning) inspiral-merger-ringdown templates of Ajith et al [Ajith_2007kx] with...
@ IMRPhenomD
Frequency domain (non-precessing spins) inspiral-merger-ringdown templates of Husa et al,...
@ SpinQuadTaylor
Spinning case PN models with quadrupole-monopole and self-spin interaction.
@ 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.
@ FindChirpSP
The stationary phase templates implemented by FindChirpSPTemplate in the findchirp package (equivalen...
@ 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.
@ IMRPhenomXAS_NRTidalv3
Tidal extension of IMRPhenomXAS based on NRTidalv3.
@ TaylorF2RedSpin
TaylorF2 waveforms for non-precessing spins, defined in terms of a single (reduced-spin) parameter [A...
@ Eccentricity
UNDOCUMENTED.
@ PadeF1
Frequency-domain P-approximant (not yet implemented).
@ IMRPhenomXPNR
Frequency domain, precessing with subdominant modes phenomenological IMR waveform model with SpinTayl...
@ 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....
@ TaylorF1
The stationary phase approximation that correctly represents, in the Fourier domain,...
@ 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...
@ SEOBNRv5_ROM_NRTidalv3
based on NRTidalv3 (arXiv:2311.07456);
@ PhenSpinTaylor
Inspiral part of the PhenSpinTaylorRD.
@ FindChirpPTF
UNDOCUMENTED.
@ 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.
@ NumRelNinja2
The waveform contains REAL8 data generated by lalapps_fr_ninja from a file in the format described in...
@ 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.
@ SpinTaylorFrameless
Spinning case PN models (replace SpinTaylor by removing the coordinate singularity)
@ 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.
@ BCV
Detection template family of Buonanno, Chen and Vallisneri ; Outputs a frequency-domain wave.
@ 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.
@ SpinTaylor
Spinning case PN models (should replace SpinTaylorT3 in the future)
@ SEOBNRv3_opt
Optimized Spin precessing EOBNR model v3.
@ SpinTaylorT1
Spinning case T1 models.
@ SpinTaylorT3
Spinning case T3 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_DISALLOW_ZERO_FMIN
These approximants allow f_min=0, which means the full length of the available waveform is returned.
@ LAL_SIM_INSPIRAL_ALLOW_ZERO_FMIN
@ LAL_SIM_INSPIRAL_NUMZEROFMIN
These approximants do not allow f_min=0.
@ LAL_PNORDER_TWO_POINT_FIVE
2.5PN <==> O(v^5)
@ LAL_PNORDER_NUM_ORDER
Number of elements in enum, useful for checking bounds.
@ LAL_PNORDER_THREE
3PN <==> O(v^6)
@ LAL_PNORDER_TWO
2PN <==> O(v^4)
@ LAL_PNORDER_ONE
1PN <==> O(v^2)
@ LAL_PNORDER_PSEUDO_FOUR
pseudo-4PN tuning coefficients included, true 4PN terms currently unknown
@ LAL_PNORDER_THREE_POINT_FIVE
3.5PN <==> O(v^7)
@ LAL_PNORDER_HALF
0.5PN <==> O(v)
@ LAL_PNORDER_ONE_POINT_FIVE
1.5PN <==> O(v^3)
@ LAL_PNORDER_NEWTONIAN
Newtonain (leading) order.
@ LAL_SIM_INSPIRAL_CASEBYCASE_TESTGR_PARAMS
These approximants accept testGR params as input params.
@ LAL_SIM_INSPIRAL_NO_TESTGR_PARAMS
@ LAL_SIM_INSPIRAL_TESTGR_PARAMS
These approximants cannot accept testGR params as input params.
@ LAL_SIM_INSPIRAL_NUM_TESTGR_ACCEPT
This approximant (ExternalPython) accept testGR parameters depending on the external python module lo...
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)
COMPLEX16TimeSeries * XLALCreateSimInspiralPNModeCOMPLEX16TimeSeries(REAL8TimeSeries *v, REAL8TimeSeries *phi, REAL8 v0, REAL8 m1, REAL8 m2, REAL8 r, int O, int l, int m)
Computes h(l,m) mode timeseries of spherical harmonic decomposition of the post-Newtonian inspiral wa...
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 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 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 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.
double XLALSimInspiralGetTestGRParam(const LALSimInspiralTestGRParam *parameter, const char *name)
Function that returns the value of the desired parameters in the test GR parameters linked list.
int XLALSimAddMode(REAL8TimeSeries *hplus, REAL8TimeSeries *hcross, COMPLEX16TimeSeries *hmode, REAL8 theta, REAL8 phi, int l, int m, int sym)
Multiplies a mode h(l,m) by a spin-2 weighted spherical harmonic to obtain hplus - i hcross,...
SphHarmTimeSeries * XLALResizeSphHarmTimeSeries(SphHarmTimeSeries *ts, int first, size_t length)
For every (l,m) node in the SphHarmTimeSeries linked list, call XLALResizeCOMPLEX16TimeSeries(ts->mod...
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...
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.
void XLALDestroySphHarmFrequencySeries(SphHarmFrequencySeries *ts)
Delete list from current pointer to the end of the list.
char char * XLALStringDuplicate(const char *s)
int XLALStringCaseCompare(const char *s1, const char *s2)
char * XLALStringCaseSubstring(const char *haystack, const char *needle)
void XLALDestroyREAL8FFTPlan(REAL8FFTPlan *plan)
REAL8FFTPlan * XLALCreateReverseREAL8FFTPlan(UINT4 size, int measurelvl)
COMPLEX16 XLALSpinWeightedSphericalHarmonic(REAL8 theta, REAL8 phi, int s, int l, int m)
int XLALREAL8FreqTimeFFT(REAL8TimeSeries *tser, const COMPLEX16FrequencySeries *freq, const REAL8FFTPlan *plan)
REAL8TimeSeries * XLALShrinkREAL8TimeSeries(REAL8TimeSeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series)
COMPLEX16TimeSeries * XLALCreateCOMPLEX16TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
REAL8TimeSeries * XLALResizeREAL8TimeSeries(REAL8TimeSeries *series, int first, size_t length)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
const LALUnit lalStrainUnit
#define XLAL_ERROR_VOID(...)
#define XLAL_ERROR_VAL(val,...)
#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
#define XLAL_CHECK_NULL(assertion,...)
#define XLAL_PRINT_DEPRECATION_WARNING(replacement)
LIGOTimeGPS * XLALGPSSetREAL8(LIGOTimeGPS *epoch, REAL8 t)
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
int XLALSimInspiralTransformPrecessingNewInitialConditions(REAL8 *incl, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, const REAL8 thetaJN, const REAL8 phiJL, const REAL8 theta1, const REAL8 theta2, const REAL8 phi12, const REAL8 chi1, const REAL8 chi2, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fRef, const REAL8 phiRef)
Transform Precessing Parameters.
int XLALSimInspiralTransformPrecessingWvf2PE(REAL8 *thetaJN, REAL8 *phiJL, REAL8 *theta1, REAL8 *theta2, REAL8 *phi12, REAL8 *chi1, REAL8 *chi2, const REAL8 incl, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, const REAL8 m1, const REAL8 m2, const REAL8 fRef, const REAL8 phiRef)
inverse to XLALSimInspiralTransformPrecessingNewInitialConditions()
Linked list of any number of parameters for testing GR.
struct tagSphHarmFrequencySeries * next
next pointer
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.