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>
41 #include <lal/Units.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
194 #undef INITIALIZE_NAME
237 [LAL_SIM_INSPIRAL_MODES_CHOICE_RESTRICTED] =
"L2",
250 int longest_position = -1;
251 int longest_offset = -1;
252 int longest_length = -1;
255 if (
string == NULL || strlen(
string) == 0)
258 for (
i = 0;
i < size; ++
i) {
263 int length = strlen(list[
i]);
264 if (length > longest_length) {
265 longest_position =
i;
266 longest_offset = match - string;
267 longest_length = length;
272 if (longest_position < 0)
276 for (
i = 0;
i < (size_t)longest_length; ++
i)
277 string[longest_offset +
i] =
'\b';
279 return longest_position;
393 if (generator->initialize == NULL && generator->finalize == NULL) {
398 if (generator->finalize)
399 if (generator->finalize(generator) < 0)
413 LALSimInspiralGenerator *
new;
415 if (generator->initialize == NULL && generator->finalize == NULL) {
418 new = (LALSimInspiralGenerator *)(intptr_t)generator;
423 memcpy(
new, generator,
sizeof(*
new));
426 if (new->initialize(
new,
params) < 0) {
453 return generator->name;
474 LALSimInspiralGenerator *generator
478 XLAL_CHECK(*hplus == NULL && *hcross == NULL,
XLAL_EINVAL,
"hplus and hcross must be pointers to NULL");
480 if (generator->generate_td_waveform)
481 return generator->generate_td_waveform(hplus, hcross,
params, generator);
496 LALSimInspiralGenerator *generator
502 if (generator->generate_td_modes)
503 return generator->generate_td_modes(hlm,
params, generator);
519 LALSimInspiralGenerator *generator
523 XLAL_CHECK(*hplus == NULL && *hcross == NULL,
XLAL_EINVAL,
"hplus and hcross must be pointers to NULL");
524 if (generator->generate_fd_waveform)
525 return generator->generate_fd_waveform(hplus, hcross,
params, generator);
527 XLAL_ERROR(
XLAL_EINVAL,
"generator does not provide a method to generate frequency-domain waveforms");
540 LALSimInspiralGenerator *generator
546 if (generator->generate_fd_modes)
547 return generator->generate_fd_modes(hlm,
params, generator);
761 const REAL8 distance,
762 const REAL8 inclination,
764 const REAL8 longAscNodes,
765 const REAL8 eccentricity,
766 const REAL8 UNUSED meanPerAno,
774 LALSimInspiralGenerator *generator;
829 const REAL8 distance,
830 const REAL8 inclination,
832 const REAL8 longAscNodes,
833 const REAL8 eccentricity,
834 const REAL8 UNUSED meanPerAno,
844 LALSimInspiralGenerator *generator;
859 const char *remove_keys[12] = {
"total_mass",
"chirp_mass",
"mass_difference",
"reduced_mass",
"mass_ratio",
"sym_mass_ratio", \
860 "spin1_norm",
"spin1_tilt",
"spin1_phi",
"spin2_norm",
"spin2_tilt",
"spin2_phi"};
861 for(
size_t j = 0; j <
sizeof(remove_keys)/
sizeof(*remove_keys); ++j){
940 XLALPrintError(
"Non-zero transverse spins were given, but it is not possible to recover modes from H+ and Hx for precessing waveforms.\n");
952 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);
959 for (j=0; j< (hplus)->
data->length; j++) {
960 h22->
data->
data[j] = ((hplus)->
data->data[j] - I*((hcross)->data->data[j]))/fac;
961 h2m2->
data->
data[j] = ((hplus)->
data->data[j] + I*((hcross)->data->data[j]))/fac;
1002 const double extra_time_fraction = 0.1;
1003 const double extra_cycles = 3.0;
1004 double original_f_min =
f_min;
1005 double tchirp, tmerge, textra;
1006 double fisco, fstart;
1023 distance *= (1.0 + z);
1048 textra = extra_cycles /
f_min;
1057 retval =
XLALSimInspiralChooseTDWaveform(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, distance, inclination, phiRef, longAscNodes, eccentricity, meanPerAno,
deltaT, fstart, f_ref, LALparams,
approximant);
1104 size_t chirplen,
end, k;
1106 const double extra_time_fraction = 0.1;
1107 const double extra_cycles = 3.0;
1108 double original_f_min =
f_min;
1110 double tchirp, tmerge, textra;
1111 double fisco, fstart;
1128 distance *= (1.0 + z);
1153 textra = extra_cycles /
f_min;
1158 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);
1169 for (k = 0; k < hptilde->
data->
length; ++k) {
1170 double complex phasefac = cexp(2.0 * M_PI * I * k * hptilde->
deltaF * tshift);
1171 hptilde->
data->
data[k] *= phasefac;
1172 hctilde->
data->
data[k] *= phasefac;
1182 if (!(*hplus) || !(*hcross) || !plan) {
1203 chirplen = round((tchirp + tmerge) /
deltaT);
1206 end = (*hplus)->data->length - round(tshift /
deltaT);
1287 if (LALparams == NULL) {
1296 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);
1378 if (LALparams == NULL) {
1387 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);
1412 const REAL8 distance,
1413 const REAL8 inclination,
1415 const REAL8 longAscNodes,
1416 const REAL8 eccentricity,
1417 const REAL8 meanPerAno,
1427 return XLALSimInspiralChooseTDWaveform(hplus, hcross, m1, m2, S1x, S1y, S1z, S2x, S2y, S2z,
1428 distance, inclination, phiRef, longAscNodes,
1456 UNUSED
REAL8 phiRef,
1474 LALSimInspiralGenerator *generator;
1586 LALSimInspiralGenerator *generator;
1652 const size_t min_taper_samples = 4;
1653 const double extra_time_fraction = 0.1;
1654 const double extra_cycles = 3.0;
1655 double original_f_min =
f_min;
1658 double tchirp, textra;
1661 size_t length, nzeros, ntaper;
1683 textra = extra_cycles /
f_min;
1690 XLALPrintWarning(
"XLAL Warning - XLALSimInspiralModesTD does not yet implement spins - passing zeros\n");
1691 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);
1707 for (hlm = modes; hlm; hlm = hlm->
next) {
1720 ntaper = round((extra_time_fraction * tchirp + textra) /
deltaT);
1721 for (j = 0; j < ntaper; ++j)
1738 if (length < 2 * min_taper_samples) {
1739 XLAL_PRINT_WARNING(
"waveform is too shorter than %zu samples: no final tapering applied", 2 * min_taper_samples);
1747 ntaper = round(1.0 / (fisco *
deltaT));
1748 if (ntaper < min_taper_samples)
1749 ntaper = min_taper_samples;
1750 for (hlm = modes; hlm; hlm = hlm->
next)
1751 for (j = 1; j < ntaper; ++j)
1758 if (ntaper < min_taper_samples)
1759 ntaper = min_taper_samples;
1760 for (hlm = modes; hlm; hlm = hlm->
next)
1761 for (j = 1; j < ntaper; ++j)
1781 LALSimInspiralWaveformFlags *waveFlags,
1801 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
1807 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
1809 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
1811 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);
1813 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);
1815 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);
1817 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
1818 if(
f_min > 40.000001 )
1819 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
1830 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1844 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1856 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1870 XLAL_ERROR_NULL(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
1928 REAL8 M, eta, eta2, eta3, dm, dist, ampfac, phi, phiShift, v, v2, v3;
1929 REAL8 hp0, hp05, hp1, hp15, hp2, hp25, hp3;
1930 REAL8 hc0, hc05, hc1, hc15, hc2, hc25, hc3;
1931 REAL8 ci, si, ci2, ci4, ci6, ci8, si2, si3, si4, si5, si6;
1944 if ( ! hplus || ! hcross )
1946 memset((*hplus)->data->data, 0, (*hplus)->data->length
1947 *
sizeof(*(*hplus)->data->data));
1948 memset((*hcross)->data->data, 0, (*hcross)->data->length
1949 *
sizeof(*(*hcross)->data->data));
1952 eta = m1 * m2 /
M /
M;
1953 eta2 = eta*eta; eta3 = eta2*eta;
1963 ci = cos(
i); si = sin(
i);
1964 ci2 = ci*ci; ci4 = ci2*ci2; ci6 = ci2*ci4; ci8 = ci6*ci2;
1965 si2 = si*si; si3 = si2*si; si4 = si2*si2; si5 = si*si4; si6 = si4*si2;
1969 len =
V->data->length;
1970 for(idx = 0; idx < len; idx++)
1973 phi = Phi->
data->
data[idx]; v =
V->data->data[idx];
1974 v2 = v * v; v3 = v * v2;
1982 if( (ampO == -1) || ampO >= 5 )
1983 phiShift = 3.*v3*(1. - v2*eta/2.)*log( v2 / v0 / v0 );
1984 else if( ampO >= 3 )
1985 phiShift = 3.*v3*log( v2 / v0 / v0 );
1989 phi = phi - phiShift;
1996 hp0 = hp05 = hp1 = hp15 = hp2 = hp25 = hp3 = 0.;
1997 hc0 = hc05 = hc1 = hc15 = hc2 = hc25 = hc3 = 0.;
2004 "to PN order %d\n", __func__, ampO );
2012 hp3 =
LAL_PI*dm*si*cos(phi)*(19./64. + ci2*5./16. - ci4/192.
2013 + eta*(-19./96. + ci2*3./16. + ci4/96.)) + cos(2.*phi)
2014 * (-465497./11025. + (
LAL_GAMMA*856./105.
2016 * (1. + ci2) - ci2*3561541./88200. - ci4*943./720.
2017 + ci6*169./720. - ci8/360. + eta*(2209./360.
2019 + ci4*3311./720. - ci6*853./720. + ci8*7./360.)
2020 + eta2*(12871./540. - ci2*1583./60. - ci4*145./108.
2021 + ci6*56./45. - ci8*7./180.) + eta3*(-3277./810.
2022 + ci2*19661./3240. - ci4*281./144. - ci6*73./720.
2023 + ci8*7./360.)) +
LAL_PI*dm*si*cos(3.*phi)*(-1971./128.
2024 - ci2*135./16. + ci4*243./128. + eta*(567./64.
2025 - ci2*81./16. - ci4*243./64.)) + si2*cos(4.*phi)
2026 * (-2189./210. + ci2*1123./210. + ci4*56./9.
2027 - ci6*16./45. + eta*(6271./90. - ci2*1969./90.
2028 - ci4*1432./45. + ci6*112./45.) + eta2*(-3007./27.
2029 + ci2*3493./135. + ci4*1568./45. - ci6*224./45.)
2030 + eta3*(161./6. - ci2*1921./90. - ci4*184./45.
2031 + ci6*112./45.)) + dm*cos(5.*phi)*(
LAL_PI*3125./384.
2032 * si3*(1. + ci2)*(1. - 2.*eta)) + si4*cos(6.*phi)
2033 * (1377./80. + ci2*891./80. - ci4*729./280.
2034 + eta*(-7857./80. - ci2*891./16. + ci4*729./40.)
2035 + eta2*(567./4. + ci2*567./10. - ci4*729./20.)
2036 + eta3*(-729./16. - ci2*243./80. + ci4*729./40.))
2037 + cos(8.*phi)*(-1024./315.*si6*(1. + ci2)*(1. - 7.*eta
2038 + 14.*eta2 - 7.*eta3)) + dm*si*sin(phi)*(-2159./40320.
2039 - log(2.)*19./32. + (-95./224. - log(2.)*5./8.)*ci2
2040 + (181./13440. + log(2.)/96.)*ci4 + eta*(1369./160.
2041 + log(2.)*19./48. + (-41./48. - log(2.)*3./8.)*ci2
2042 + (-313./480. - log(2.)/48.)*ci4)) + sin(2.*phi)
2043 * (-428.*
LAL_PI/105.*(1. + ci2)) + dm*si*sin(3.*phi)
2044 * (205119./8960. - log(3./2.)*1971./64.
2045 + (1917./224. - log(3./2.)*135./8.)*ci2
2046 + (-43983./8960. + log(3./2.)*243./64.)*ci4 + eta
2047 * (-54869./960. + log(3./2.)*567./32.
2048 + (-923./80. - log(3./2.)*81./8.)*ci2
2049 + (41851./2880. - log(3./2.)*243./32.)*ci4))
2050 + dm*si3*(1. + ci2)*sin(5.*phi)*(-113125./5376.
2051 + log(5./2.)*3125./192.
2052 + eta*(17639./320. - log(5./2.)*3125./96.));
2053 hc3 = dm*si*ci*cos(phi)*(11617./20160. + log(2.)*21./16.
2054 + (-251./2240. - log(2.)*5./48.)*ci2
2055 + eta*(-2419./240. - log(2.)*5./24.
2056 + (727./240. + log(2.)*5./24.)*ci2)) + ci*cos(2.*phi)
2057 * (
LAL_PI*856./105.) + dm*si*ci*cos(3.*phi)
2058 * (-36801./896. + log(3./2.)*1809./32.
2059 + (65097./4480. - log(3./2.)*405./32.)*ci2
2060 + eta*(28445./288. - log(3./2.)*405./16.
2061 + (-7137./160. + log(3./2.)*405./16.)*ci2))
2062 + dm*si3*ci*cos(5.*phi)*(113125./2688.
2063 - log(5./2.)*3125./96. + eta*(-17639./160.
2064 + log(5./2.)*3125./48.)) +
LAL_PI*dm*si*ci*sin(phi)
2065 * (21./32. - ci2*5./96. + eta*(-5./48. + ci2*5./48.))
2066 + ci*sin(2.*phi)*(-3620761./44100.
2068 + log(16.*v2)*856./105. - ci2*3413./1260.
2069 + ci4*2909./2520. - ci6/45. + eta*(743./90.
2071 - ci4*2287./360. + ci6*7./45.) + eta2*(7919./270.
2072 - ci2*5426./135. + ci4*382./45. - ci6*14./45.)
2073 + eta3*(-6457./1620. + ci2*1109./180. - ci4*281./120.
2074 + ci6*7./45.)) +
LAL_PI*dm*si*ci*sin(3.*phi)
2075 * (-1809./64. + ci2*405./64. + eta*(405./32.
2076 - ci2*405./32.)) + si2*ci*sin(4.*phi)*(-1781./105.
2077 + ci2*1208./63. - ci4*64./45. + eta*(5207./45.
2078 - ci2*536./5. + ci4*448./45.) + eta2*(-24838./135.
2079 + ci2*2224./15. - ci4*896./45.) + eta3*(1703./45.
2080 - ci2*1976./45. + ci4*448./45.)) + dm*sin(5.*phi)
2081 * (3125.*
LAL_PI/192.*si3*ci*(1. - 2.*eta))
2082 + si4*ci*sin(6.*phi)*(9153./280. - ci2*243./35.
2083 + eta*(-7371./40. + ci2*243./5.) + eta2*(1296./5.
2084 - ci2*486./5.) + eta3*(-3159./40. + ci2*243./5.))
2085 + sin(8.*phi)*(-2048./315.*si6*ci*(1. - 7.*eta
2086 + 14.*eta2 - 7.*eta3));
2087 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2092 hp25 = cos(phi)*si*dm*(1771./5120. - ci2*1667./5120.
2093 + ci4*217./9216. - ci6/9126. + eta*(681./256.
2094 + ci2*13./768. - ci4*35./768. + ci6/2304.)
2095 + eta2*(-3451./9216. + ci2*673./3072. - ci4*5./9216.
2096 - ci6/3072.)) + cos(2.*phi)*
LAL_PI*(19./3. + 3.*ci2
2097 - ci4*2./3. + eta*(-16./3. + ci2*14./3. + 2.*ci4))
2098 + cos(3.*phi)*si*dm*(3537./1024. - ci2*22977./5120.
2099 - ci4*15309./5120. + ci6*729./5120.
2100 + eta*(-23829./1280. + ci2*5529./1280.
2101 + ci4*7749./1280. - ci6*729./1280.)
2102 + eta2*(29127./5120. - ci2*27267./5120.
2103 - ci4*1647./5120. + ci6*2187./5120.)) + cos(4.*phi)
2104 * (-16.*
LAL_PI/3.*(1. + ci2)*si2*(1. - 3.*eta))
2105 + cos(5.*phi)*si*dm*(-108125./9216. + ci2*40625./9216.
2106 + ci4*83125./9216. - ci6*15625./9216.
2107 + eta*(8125./256. - ci2*40625./2304. - ci4*48125./2304.
2108 + ci6*15625./2304.) + eta2*(-119375./9216.
2109 + ci2*40625./3072. + ci4*44375./9216.
2110 - ci6*15625./3072.)) + cos(7.*phi)*dm
2111 * (117649./46080.*si5*(1. + ci2)*(1. - 4.*eta
2112 + 3.*eta2)) + sin(2.*phi)*(-9./5. + ci2*14./5.
2113 + ci4*7./5. + eta*(32. + ci2*56./5. - ci4*28./5.))
2114 + sin(4.*phi)*si2*(1. + ci2)*(56./5. - 32.*log(2.)/3.
2115 + eta*(-1193./30. + 32.*log(2.)));
2117 hc25 = cos(2.*phi)*ci*(2. - ci2*22./5. + eta*(-282./5.
2118 + ci2*94./5.)) + cos(4.*phi)*ci*si2*(-112./5.
2119 + 64.*log(2.)/3. + eta*(1193./15. - 64.*log(2.)))
2120 + sin(phi)*si*ci*dm*(-913./7680. + ci2*1891./11520.
2121 - ci4*7./4608. + eta*(1165./384. - ci2*235./576.
2122 + ci4*7./1152.) + eta2*(-1301./4608. + ci2*301./2304.
2123 - ci4*7./1536.)) + sin(2.*phi)*
LAL_PI*ci*(34./3.
2124 - ci2*8./3. + eta*(-20./3. + 8.*ci2))
2125 + sin(3.*phi)*si*ci*dm*(12501./2560. - ci2*12069./1280.
2126 + ci4*1701./2560. + eta*(-19581./640. + ci2*7821./320.
2127 - ci4*1701./640.) + eta2*(18903./2560.
2128 - ci2*11403./1280. + ci4*5103./2560.))
2129 + sin(4.*phi)*si2*ci*(-32.*
LAL_PI/3.*(1. - 3.*eta))
2130 + sin(5.*phi)*si*ci*dm*(-101875./4608. + ci2*6875./256.
2131 - ci4*21875./4608. + eta*(66875./1152.
2132 - ci2*44375./576. + ci4*21875./1152.)
2133 + eta2*(-100625./4608. + ci2*83125./2304.
2134 - ci4*21875./1536.)) + sin(7.*phi)*si5*ci*dm
2135 * (117649./23040.*(1. - 4.*eta + 3.*eta2));
2136 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2141 hp2 = cos(phi)*
LAL_PI*si*dm*(-5./8. - ci2/8.)
2142 + cos(2.*phi)*(11./60. + ci2*33./10. + ci4*29./24.
2143 - ci6/24. + eta*(353./36. - 3.*ci2 - ci4*251./72.
2144 + ci6*5./24.) + eta2*(-49./12. + ci2*9./2.
2145 - ci4*7./24. - ci6*5./24.)) + cos(3.*phi)*
LAL_PI*si*dm
2146 * (27./8.*(1 + ci2)) + cos(4.*phi)*si2*2./15.*(59.
2148 - eta*5./3.*(131. + 59.*ci2 + 24.*ci4)
2149 + eta2*5.*(21. - 3.*ci2 - 8.*ci4))
2150 + cos(6.*phi)*(-81./40.*si4*(1. + ci2)
2151 * (1. - 5.*eta + 5.*eta2)) + sin(phi)*si*dm
2152 * (11./40. + 5.*log(2)/4. + ci2*(7./40. + log(2)/4.))
2153 + sin(3.*phi)*si*dm*((-189./40. + 27./4.*log(3./2.))
2155 hc2 = cos(phi)*si*ci*dm*(-9./20. - 3./2.*log(2.))
2156 + cos(3.*phi)*si*ci*dm*(189./20. - 27./2.*log(3./2.))
2157 - sin(phi)*si*ci*dm*3.*
LAL_PI/4.
2158 + sin(2.*phi)*ci*(17./15. + ci2*113./30. - ci4/4.
2159 + eta*(143./9. - ci2*245./18. + ci4*5./4.)
2160 + eta2*(-14./3. + ci2*35./6. - ci4*5./4.))
2161 + sin(3.*phi)*si*ci*dm*27.*
LAL_PI/4.
2162 + sin(4.*phi)*ci*si2*4./15.*(55. - 12.*ci2
2163 - eta*5./3.*(119. - 36.*ci2)
2164 + eta2*5.*(17. - 12.*ci2))
2165 + sin(6.*phi)*ci*(-81./20.*si4
2166 * (1. - 5.*eta + 5.*eta2));
2167 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2172 hp15 = cos(phi)*si*dm*(19./64. + ci2*5./16. - ci4/192.
2173 + eta*(-49./96. + ci2/8. + ci4/96.))
2174 + cos(2.*phi)*(-2.*
LAL_PI*(1. + ci2))
2175 + cos(3.*phi)*si*dm*(-657./128. - ci2*45./16.
2176 + ci4*81./128. + eta*(225./64. - ci2*9./8.
2177 - ci4*81./64.)) + cos(5.*phi)*si*dm*(625./384.*si2
2178 * (1. + ci2)*(1. - 2.*eta));
2179 hc15 = sin(phi)*si*ci*dm*(21./32. - ci2*5./96.
2180 + eta*(-23./48. + ci2*5./48.))
2181 - 4.*
LAL_PI*ci*sin(2.*phi) + sin(3.*phi)*si*ci*dm
2182 * (-603./64. + ci2*135./64.
2183 + eta*(171./32. - ci2*135./32.))
2184 + sin(5.*phi)*si*ci*dm*(625./192.*si2*(1. - 2.*eta));
2185 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2190 hp1 = cos(2.*phi)*(19./6. + 3./2.*ci2 - ci4/3.
2191 + eta*(-19./6. + ci2*11./6. + ci4))
2192 - cos(4.*phi) * (4./3.*si2*(1. + ci2)*(1. - 3.*eta));
2193 hc1 = sin(2.*phi)*ci*(17./3. - ci2*4./3.
2194 + eta*(-13./3. + 4.*ci2))
2195 + sin(4.*phi)*ci*si2*(-8./3.*(1. - 3.*eta));
2196 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2201 hp05 = - si*dm*(cos(phi)*(5./8. + ci2/8.)
2202 - cos(3.*phi)*(9./8. + 9.*ci2/8.));
2203 hc05 = si*ci*dm*(-sin(phi)*3./4. + sin(3.*phi)*9./4.);
2204 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2209 hp0 = -(1. + ci2)*cos(2.*phi);
2210 hc0 = -2.*ci*sin(2.*phi);
2221 (*hplus)->data->data[idx] = ampfac * v2 * ( hp0 + v * ( hp05
2222 + v * ( hp1 + v * ( hp15 + v * ( hp2 + v * ( hp25 + v * hp3
2224 (*hcross)->data->data[idx] = ampfac * v2 * ( hc0 + v * ( hc05
2225 + v * ( hc1 + v * ( hc15 + v * ( hc2 + v * ( hc25 + v * hc3
2263 if ( ! hplus || ! hcross )
2265 memset((*hplus)->data->data, 0, (*hplus)->data->length*
sizeof(*(*hplus)->data->data));
2266 memset((*hcross)->data->data, 0, (*hcross)->data->length*
sizeof(*(*hcross)->data->data));
2268 for (
m = 1;
m <=
l; ++
m ) {
2301 size_t length =
ts->mode->data->length;
2309 memset( (*hp)->data->data, 0, (*hp)->data->length*
sizeof(
REAL8) );
2310 memset( (*hc)->data->data, 0, (*hc)->data->length*
sizeof(
REAL8) );
2340 const REAL8 distance,
2341 const REAL8 inclination,
2343 const REAL8 UNUSED longAscNodes,
2344 const REAL8 UNUSED eccentricity,
2345 const REAL8 UNUSED meanPerAno,
2362 REAL8 phiRef_modes = 0;
2365 REAL8 zeta_polarization = 0;
2370 phiRef_modes = phiRef;
2375 phiRef_modes = phiRef;
2376 REAL8 d1=0, d2=0, d3=0, d4=0, d5=0;
2377 ret =
XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(&d1, &d2, &d3, &
theta, &d4, &d5, &zeta_polarization, m1, m2, f_ref, phiRef, inclination, S1x,S1y,S1z, S2x,S2y,S2z, LALparams);
2383 phiRef_modes = phiRef;
2384 d1=0, d2=0, d3=0, d4=0, d5=0;
2385 ret =
XLALSimIMRPhenomXPCalculateModelParametersFromSourceFrame(&d1, &d2, &d3, &
theta, &d4, &d5, &zeta_polarization, m1, m2, f_ref, phiRef, inclination, S1x,S1y,S1z, S2x,S2y,S2z, LALparams);
2399 phiRef_modes = phiRef;
2408 *hlms =
XLALSimInspiralChooseFDModes(m1, m2, S1x, S1y, S1z, S2x, S2y, S2z, deltaF,
f_min,
f_max, f_ref, phiRef_modes, distance, inclination, LALparams,
approximant);
2413 UINT4 len = (*hlms)->mode->data->length;
2418 len = (
UINT4) ceil(len/2.);
2423 &((*hlms)->mode->epoch), (*hlms)->mode->f0, (*hlms)->mode->deltaF,
2424 &((*hlms)->mode->sampleUnits), len);
2426 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
2427 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
2428 memset((*hptilde)->data->data, 0, (len) *
sizeof(
COMPLEX16));
2429 memset((*hctilde)->data->data, 0, (len) *
sizeof(
COMPLEX16));
2439 for(
UINT4 idx = 0; idx<len; idx++){
2442 (*hptilde)->data->data[idx] += 0.5 * (hlm * Ylm + hlm2 * Ylmstar);
2443 (*hctilde)->data->data[idx] += 0.5 * I * (hlm * Ylm - hlm2 * Ylmstar);
2445 hlms_tmp = hlms_tmp->
next;
2455 if(fabs(zeta_polarization) > 0)
2458 REAL8 cosPolFac, sinPolFac;
2460 cosPolFac = cos(2.0 * zeta_polarization);
2461 sinPolFac = sin(2.0 * zeta_polarization);
2463 for (
UINT4 i = 0;
i < (*hptilde)->data->length;
i++)
2465 PhPpolp = (*hptilde)->data->data[
i];
2466 PhPpolc = (*hctilde)->data->data[
i];
2468 (*hptilde)->data->data[
i] = cosPolFac * PhPpolp + sinPolFac * PhPpolc;
2469 (*hctilde)->data->data[
i] = cosPolFac * PhPpolc - sinPolFac * PhPpolp;
2475 REAL8 polariz=longAscNodes;
2478 for (
UINT4 idx=0;idx<(*hptilde)->data->length;idx++) {
2479 tmpP=(*hptilde)->data->data[idx];
2480 tmpC=(*hctilde)->data->data[idx];
2481 (*hptilde)->data->data[idx] =cos(2.*polariz)*tmpP+sin(2.*polariz)*tmpC;
2482 (*hctilde)->data->data[idx]=cos(2.*polariz)*tmpC-sin(2.*polariz)*tmpP;
2518 len = (
UINT4) ceil(len/2.);
2527 memset( (*hp)->data->data, 0, (*hp)->data->length*
sizeof(
COMPLEX16) );
2528 memset( (*hc)->data->data, 0, (*hc)->data->length*
sizeof(
COMPLEX16) );
2536 for(
UINT4 idx = 0; idx<len; idx++){
2539 (*hp)->data->data[idx] += 0.5 * (hlm * Ylm + hlm2 * Ylmstar);
2540 (*hc)->data->data[idx] += 0.5 * I * (hlm * Ylm - hlm2 * Ylmstar);
2588 REAL8 mt, eta, dist, ampfac, phi, v, et,
u;
2590 REAL8 CF_rdot, CF_rphidot, CF_Z, r_sc, rdot_sc, phidot;
2591 REAL8 rdot, rphidot, Z;
2594 REAL8 ci, si, ci2, si2;
2611 if ( ! hplus || ! hcross )
2613 memset((*hplus)->data->data, 0, (*hplus)->data->length
2614 *
sizeof(*(*hplus)->data->data));
2615 memset((*hcross)->data->data, 0, (*hcross)->data->length
2616 *
sizeof(*(*hcross)->data->data));
2619 eta = m1 * m2 / pow(m1 + m2, 2.0);
2628 ci = cos(
i); si = sin(
i);
2634 len =
V->data->length;
2635 for(idx = 0; idx < len; idx++)
2641 dt = 1. - et * cos(
u);
2642 OTS = sqrt(1. - et * et);
2652 rdot = rphidot = Z = 0;
2655 CF_rdot = et * v*sin(
u)/
dt;
2656 CF_rphidot = OTS * v /
dt;
2657 CF_Z = pow(v, 2.0) /
dt;
2664 "to PN order %d\n", __func__, ph_O );
2670 "to PN order %d\n", __func__, ph_O );
2675 XLALPrintError(
"XLAL Error - %s: dynamical variables not yet implemented "
2676 "to PN order %d\n", __func__, ph_O );
2681 XLALPrintError(
"XLAL Error - %s: dynamical variables not yet implemented "
2682 "to PN order %d\n", __func__, ph_O );
2690 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2691 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0))
2693 + ((-288. + 765. * eta - 27. * pow(eta, 2.0)
2694 + pow(et, 4.0) * (261. * eta - 27 * pow(eta, 2.0))
2695 + pow(et, 2.0) * (288. - 1026. * eta + 54. * pow(eta, 2.0))
2696 + (-540. + pow(et, 2.0) * (540. - 216. * eta)
2697 + 216. * eta) * OTS +
dt * (648. - 567. * eta + 35. * pow(eta, 2.0)
2698 + pow(et, 2.0) * (468. + 150. * eta - 70. * pow(eta, 2.0))
2699 + pow(et, 4.0) * (72. - 231. * eta + 35. * pow(eta, 2.0))
2700 + (180. - 72. * eta + pow(et, 2.0) * (-180. + 72. * eta)) * OTS)) * pow(v, 4.0))
2701 / (72. *
dt * pow(OTS, 4.0));
2705 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0))
2707 + (-6. * pow(1. - pow(et, 2.0), 3.0) * eta * (3. + 2. * eta)
2708 + pow(
dt, 3.0) * (42. + 22. * eta + 8.* pow(eta, 2.0)
2709 + pow(et, 2.0) * (-147. + 8. * eta - 14. * pow(eta, 2.0)))
2710 +
dt * (108. + 63. * eta + 33. * pow(eta, 2.0)
2711 + pow(et, 2.0) * (-216. - 126. * eta - 66. * pow(eta, 2.0))
2712 + pow(et, 4.0) * (108. + 63. * eta + 33. * pow(eta, 2.0)))
2713 + pow(
dt, 2.0) * (-240. - 31. * eta - 29. * pow(eta, 2.0)
2714 + pow(et, 4.0) * (-48. + 17. * eta - 17. * pow(eta, 2.0))
2715 + pow(et, 2.0) * (288. + 14. * eta + 46. * pow(eta,2)))
2716 + 18. * pow(
dt, 2.0) * (-2. +
dt + 2. * pow(et, 2.0)) * (-5. + 2. * eta) * OTS) * pow(v, 4.0)
2717 / (12. * pow(
dt, 3.0) * pow(OTS, 4.0));
2721 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0))
2723 + (-135. * eta + 9. * pow(eta, 2.0) + pow(et, 2.0) * (405. * eta - 27. * pow(eta, 2.0))
2724 + pow(et, 6.0) * (135. * eta - 9. * pow(eta, 2.0))
2725 + pow(et, 4.0) * (-405. * eta + 27 * pow(eta, 2.0))
2726 +
dt * (-540. + 351. * eta - 9. * pow(eta, 2.0)
2727 + pow(et, 4.0) * (-540. + 351. * eta - 9. * pow(eta, 2.0))
2728 + pow(et, 2.0) * (1080. - 702. * eta + 18. * pow(eta, 2.0)))
2729 + pow(
dt, 3.0) * (-324. + 189. * eta + 35. * pow(eta, 2.0)
2730 + pow(et, 2.0) * (-234. + 366. * eta - 70. * pow(eta, 2.0))
2731 + pow(et, 4.0) * (72. - 231. * eta + 35. * pow(eta, 2.0)))
2732 - 36 * pow(
dt, 2.0) * (3. +
dt) * (1 - pow(et, 2.0)) * (-5. + 2. * eta) * OTS) * pow(v, 4.0)
2733 / (72. * pow(
dt, 3.0) * pow(OTS, 4.0));
2740 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2741 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0));
2745 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0));
2749 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0));
2756 + ((-24. +
dt * (18. - 7. * eta) + 9. * eta + pow(et, 2.0) * (24. - 9. * eta
2757 +
dt * (-6. + 7. * eta))) * pow(v, 2.0)) / (6. *
dt * pow(OTS, 2.0));
2761 + (-1. +
dt + pow(et, 2.0)) * (-4. + eta) * pow(v, 2.0) / (
dt * pow(OTS, 2.0));
2765 + (-7. * eta + pow(et, 2.0) * (-6. + 7. * eta)) * pow(v, 2.0) / (6. * pow(OTS, 2.0));
2788 rdot = CF_rdot * rdot_sc;
2789 rphidot = CF_rphidot * r_sc * phidot;
2805 "to PN order %d\n", __func__, ampO );
2811 "to PN order %d\n", __func__, ampO );
2817 "to PN order %d\n", __func__, ampO );
2823 "to PN order %d\n", __func__, ampO );
2829 "to PN order %d\n", __func__, ampO );
2834 XLALPrintError(
"XLAL Error - %s: Amp. corrections not yet implemented "
2835 "to PN order %d\n", __func__, ampO );
2840 XLALPrintError(
"XLAL Error - %s: Amp. corrections not yet implemented "
2841 "to PN order %d\n", __func__, ampO );
2847 hp0 = - (si2 * (-pow(rphidot, 2.0) - pow(rdot, 2.0) + Z))
2848 - (1. + ci2) * ((pow(rphidot, 2.0) - pow(rdot, 2.0) + Z) * cos(2. * phi)
2849 + (2. * rphidot * rdot) * sin(2. * phi));
2850 hc0 = - 2. * ci * (-2. * rphidot * rdot * cos(2. * phi)
2851 + (pow(rphidot, 2.0) - pow(rdot, 2.0) + Z) * sin(2. * phi));
2861 (*hplus)->data->data[idx] = ampfac*hp0;
2862 (*hcross)->data->data[idx] = ampfac*hc0;
2912 REAL8 s1x, s1y, s1z, s2x, s2y, s2z, lnhx, lnhy, lnhz;
2913 REAL8 e1x, e1y, e1z, e2x, e2y, e2z,
nx,
ny,
nz, lx, ly, lz;
2914 REAL8 nx2, ny2, nz2, nz3, lx2, ly2, lz2, lz3;
2915 REAL8 hplus0, hcross0, hplus05, hcross05, hplus1, hcross1;
2916 REAL8 hplus15, hcross15, hplusSpin1, hcrossSpin1;
2917 REAL8 hplusSpin15, hcrossSpin15, hplusTail15, hcrossTail15;
2918 REAL8 M, eta, dm, phi, v, v2, dist, ampfac;
2922 if ( !(hplus) || !(hcross) ) {
2923 XLALPrintError(
"** XLALSimInspiralPrecessingPolarizationWaveform error: **h+ and **hx are expected to be non NULL!\n");
2959 if ( ! hplus || ! hcross )
2961 memset((*hplus)->data->data, 0,
2962 (*hplus)->data->length*
sizeof(*(*hplus)->data->data));
2963 memset((*hcross)->data->data, 0,
2964 (*hcross)->data->length*
sizeof(*(*hcross)->data->data));
2967 eta = m1 * m2 /
M /
M;
2974 len =
V->data->length;
2975 for(idx = 0; idx < len; idx++)
2978 phi = Phi->
data->
data[idx]; v =
V->data->data[idx]; v2 = v * v;
2987 e2x = lnhy*e1z - lnhz*e1y;
2988 e2y = lnhz*e1x - lnhx*e1z;
2989 e2z = lnhx*e1y - lnhy*e1x;
2992 nx = e1x*cos(phi) + e2x*sin(phi);
2993 ny = e1y*cos(phi) + e2y*sin(phi);
2994 nz = e1z*cos(phi) + e2z*sin(phi);
2997 lx = e2x*cos(phi) - e1x*sin(phi);
2998 ly = e2y*cos(phi) - e1y*sin(phi);
2999 lz = e2z*cos(phi) - e1z*sin(phi);
3003 lx2 = lx*lx; ly2 = ly*ly; lz2 = lz*lz; lz3 = lz*lz2;
3010 hplus0 = hplus05 = hplus1 = hplus15 = hplusTail15 = 0.;
3011 hcross0 = hcross05 = hcross1 = hcross15 = hcrossTail15 = 0.;
3012 hplusSpin1 = hplusSpin15 = hcrossSpin1 = hcrossSpin15 = 0.;
3027 "to PN order %d, highest is %d\n", __func__, ampO,
3035 hplus15 = (dm*(2*lx*
nx*
nz*(-95 + 90*lz2 - 65*nz2
3036 - 2*eta*(-9 + 90*lz2 - 65*nz2)) - 2*ly*
ny*
nz
3037 * (-95 + 90*lz2 - 65*nz2 - 2*eta*(-9 + 90*lz2 - 65*nz2))
3038 + 6*lx2*lz*(13 - 4*lz2 + 29*nz2 + eta*(-2 + 8*lz2
3039 - 58*nz2)) - 6*ly2*lz*(13 - 4*lz2 + 29*nz2 + eta
3040 * (-2 + 8*lz2 - 58*nz2)) - lz*(nx2 - ny2)*(83 - 6*lz2
3041 + 111*nz2 + 6*eta*(-1 + 2*lz2 - 37*nz2))))/24.;
3042 hcross15 = (dm*(lz*(6*(19 - 4*eta)*lx*ly + (-101 + 12*eta)
3043 *
nx*
ny) + (-149 + 36*eta) * (ly*
nx + lx*
ny)*
nz
3044 + 6*(-3 + eta) * (2*lx*ly*lz - lz*
nx*
ny - 3*ly*
nx*
nz
3045 - 3*lx*
ny*
nz) + (1 - 2*eta) * (6*lz3*(-4*lx*ly +
nx*
ny)
3046 + 90*lz2*(ly*
nx + lx*
ny)*
nz + 3*lz*(58*lx*ly
3047 - 37*
nx*
ny)*nz2 - 65*(ly*
nx + lx*
ny)*nz3)))/12.;
3049 hplusSpin15 = (6*lz*
ny*s1x + 6*dm*lz*
ny*s1x - 3*eta*lz*
ny*s1x
3050 + 2*ly2*lnhy*s1y + 2*dm*ly2*lnhy*s1y
3051 + 2*eta*ly2*lnhy*s1y + 6*lz*
nx*s1y + 6*dm*lz*
nx*s1y
3052 - 3*eta*lz*
nx*s1y + 8*lnhy*nx2*s1y + 8*dm*lnhy*nx2*s1y
3053 - eta*lnhy*nx2*s1y - 8*lnhy*ny2*s1y - 8*dm*lnhy*ny2*s1y
3054 + eta*lnhy*ny2*s1y + 2*ly2*lnhz*s1z + 2*dm*ly2*lnhz*s1z
3055 + 2*eta*ly2*lnhz*s1z - 6*ly*
nx*s1z - 6*dm*ly*
nx*s1z
3056 - 9*eta*ly*
nx*s1z + 8*lnhz*nx2*s1z + 8*dm*lnhz*nx2*s1z
3057 - eta*lnhz*nx2*s1z - 8*lnhz*ny2*s1z - 8*dm*lnhz*ny2*s1z
3058 + eta*lnhz*ny2*s1z + 6*lz*
ny*s2x - 6*dm*lz*
ny*s2x
3059 - 3*eta*lz*
ny*s2x + lnhx*(2*ly2*((1 + dm + eta)*s1x
3060 + (1 - dm + eta)*s2x) + (nx2 - ny2)*((8 + 8*dm - eta)
3061 * s1x - (-8 + 8*dm + eta)*s2x)) + 2*ly2*lnhy*s2y
3062 - 2*dm*ly2*lnhy*s2y + 2*eta*ly2*lnhy*s2y + 6*lz*
nx*s2y
3063 - 6*dm*lz*
nx*s2y - 3*eta*lz*
nx*s2y + 8*lnhy*nx2*s2y
3064 - 8*dm*lnhy*nx2*s2y - eta*lnhy*nx2*s2y - 8*lnhy*ny2*s2y
3065 + 8*dm*lnhy*ny2*s2y + eta*lnhy*ny2*s2y + 2*ly2*lnhz*s2z
3066 - 2*dm*ly2*lnhz*s2z + 2*eta*ly2*lnhz*s2z - 6*ly*
nx*s2z
3067 + 6*dm*ly*
nx*s2z - 9*eta*ly*
nx*s2z + 8*lnhz*nx2*s2z
3068 - 8*dm*lnhz*nx2*s2z - eta*lnhz*nx2*s2z - 8*lnhz*ny2*s2z
3069 + 8*dm*lnhz*ny2*s2z + eta*lnhz*ny2*s2z - 3*lx*
ny
3070 * ((2 + 2*dm + 3*eta)*s1z + (2 - 2*dm + 3*eta)*s2z)
3071 - 2*lx2*(lnhx*((1 + dm + eta)*s1x + (1 - dm + eta)*s2x)
3072 + lnhy*((1 + dm + eta)*s1y + (1 - dm + eta)*s2y)
3073 + lnhz*((1 + dm + eta)*s1z + (1 - dm + eta)*s2z)))/3.;
3074 hcrossSpin15 = (-3*lz*(
nx*((2 + 2*dm - eta)*s1x
3075 - (-2 + 2*dm + eta)*s2x) +
ny*((-2 - 2*dm + eta)*s1y
3076 + (-2 + 2*dm + eta)*s2y)) +
ny*(-6*ly*s1z - 6*dm*ly*s1z
3077 - 9*eta*ly*s1z + 16*lnhz*
nx*s1z + 16*dm*lnhz*
nx*s1z
3078 - 2*eta*lnhz*
nx*s1z + 2*lnhx*
nx*((8 + 8*dm - eta)*s1x
3079 - (-8 + 8*dm + eta)*s2x) + 2*lnhy*
nx*((8 + 8*dm - eta)
3080 * s1y - (-8 + 8*dm + eta)*s2y) - 6*ly*s2z + 6*dm*ly*s2z
3081 - 9*eta*ly*s2z + 16*lnhz*
nx*s2z - 16*dm*lnhz*
nx*s2z
3082 - 2*eta*lnhz*
nx*s2z) - lx*(4*lnhx*ly*((1 + dm + eta)*s1x
3083 + (1 - dm + eta)*s2x) - 3*
nx*((2 + 2*dm + 3*eta)*s1z
3084 + (2 - 2*dm + 3*eta)*s2z) + 4*ly*(lnhy*((1 + dm + eta)
3085 * s1y + (1 - dm + eta)*s2y) + lnhz*((1 + dm + eta)*s1z
3086 + (1 - dm + eta)*s2z))))/3.;
3088 hplusTail15 = 2*((lx2 - ly2 - nx2 + ny2)*
LAL_PI);
3090 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3097 hplus1 = (-13*lx2 + 13*ly2 + 6*lx2*lz2 - 6*ly2*lz2
3098 + 13*(nx2 - ny2) - 2*lz2*(nx2 - ny2) - 32*lx*lz*
nx*
nz
3099 + 32*ly*lz*
ny*
nz - 14*lx2*nz2 + 14*ly2*nz2
3100 + 10*(nx2 - ny2)*nz2)/6. + (eta*(lx2 - 18*lx2*lz2
3101 + 96*lx*lz*
nx*
nz - 96*ly*lz*
ny*
nz + 42*lx2*nz2
3102 + ly2*(-1 + 18*lz2 - 42*nz2) + (nx2 - ny2)
3103 * (-1 + 6*lz2 - 30*nz2)))/6.;
3104 hcross1 = (eta*(lx*ly -
nx*
ny - 6*(lz2*(3*lx*ly -
nx*
ny)
3105 - 8*lz*(ly*
nx + lx*
ny)*
nz + (-7*lx*ly
3106 + 5*
nx*
ny)*nz2)))/3. + (-13*(lx*ly -
nx*
ny)
3107 + 2*(lz2*(3*lx*ly -
nx*
ny) - 8*lz*(ly*
nx + lx*
ny)*
nz
3108 + (-7*lx*ly + 5*
nx*
ny)*nz2))/3.;
3110 hplusSpin1 = (-(
ny*((1 + dm)*s1x + (-1 + dm)*s2x))
3111 -
nx*((1 + dm)*s1y + (-1 + dm)*s2y))/2.;
3112 hcrossSpin1 = (
nx*((1 + dm)*s1x + (-1 + dm)*s2x)
3113 -
ny*((1 + dm)*s1y + (-1 + dm)*s2y))/2.;
3114 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3121 hplus05 = (dm*(-2*lx2*lz + 2*ly2*lz + lz*(nx2 - ny2)
3123 hcross05 = dm*(-2*lx*ly*lz + lz*
nx*
ny
3125 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3131 hplus0 = lx2 - ly2 - nx2 + ny2;
3132 hcross0 = 2*lx*ly - 2*
nx*
ny;
3143 (*hplus)->data->data[idx] = ampfac * v2 * ( hplus0
3144 + v * ( hplus05 + v * ( hplus1 + hplusSpin1
3145 + v * ( hplus15 + hplusSpin15 + hplusTail15 ) ) ) );
3146 (*hcross)->data->data[idx] = ampfac * v2 * ( hcross0
3147 + v * ( hcross05 + v * ( hcross1 + hcrossSpin1
3148 + v * ( hcross15 + hcrossSpin15 + hcrossTail15 ) ) ) );
3206 REAL8 e2x = lnhy*e1z - lnhz*e1y;
3207 REAL8 e2y = lnhz*e1x - lnhx*e1z;
3208 REAL8 e2z = lnhx*e1y - lnhy*e1x;
3215 REAL8 twom1 = (1. + dm);
3216 REAL8 twom2 = (1. - dm);
3218 REAL8 a1x = s1x*twom1;
3219 REAL8 a1y = s1y*twom1;
3220 REAL8 a1z = s1z*twom1;
3221 REAL8 a2x = s2x*twom2;
3222 REAL8 a2y = s2y*twom2;
3223 REAL8 a2z = s2z*twom2;
3235 REAL8 fact1, fact2, fact3, fact4, fact5, fact6, fact7, fact8, fact9;
3237 REAL8 e1xe1x = e1x*e1x;
3238 REAL8 e1xe1y = e1x*e1y;
3239 REAL8 e1xe1z = e1x*e1z;
3240 REAL8 e1ye1y = e1y*e1y;
3241 REAL8 e1ye1z = e1y*e1z;
3242 REAL8 e1ze1z = e1z*e1z;
3244 REAL8 e2xe2x = e2x*e2x;
3245 REAL8 e2xe2y = e2x*e2y;
3246 REAL8 e2xe2z = e2x*e2z;
3247 REAL8 e2ye2y = e2y*e2y;
3248 REAL8 e2ye2z = e2y*e2z;
3249 REAL8 e2ze2z = e2z*e2z;
3251 REAL8 e1xe2x = e1x*e2x;
3252 REAL8 e1xe2y = e1x*e2y;
3253 REAL8 e1ye2x = e1y*e2x;
3254 REAL8 e1xe2z = e1x*e2z;
3255 REAL8 e1ze2x = e1z*e2x;
3256 REAL8 e1ye2y = e1y*e2y;
3257 REAL8 e1ye2z = e1y*e2z;
3258 REAL8 e1ze2y = e1z*e2y;
3259 REAL8 e1ze2z = e1z*e2z;
3273 fact4 = a1x*fact2 + a2x*fact3;
3274 fact5 = a1y*fact2 + a2y*fact3;
3277 fact8 = lnhz*(a1z*fact2 + a2z*fact3);
3278 fact9 = fact6 + fact7 + fact8;
3280 *hplus += fact1*(fact4*lnhx - fact5*lnhy + fact9*(e1xe1x - e1ye1y
3281 + e2xe2x - e2ye2y));
3282 *hcross += fact1*(fact4*lnhy - fact5*lnhx + fact9*(e1xe1y + e2xe2y));
3286 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3296 fact1 = 1. - 2.*eta;
3297 fact2 = 8. + fact1*(30. + 9.*e1ze1z + 19.*e2ze2z);
3298 fact3 = 72. + fact1*(6. + e2ze2z - 9.*e1ze1z);
3299 fact4 = 40. + fact1*(18. + 15.*e2ze2z + 5.*e1ze1z);
3300 fact5 = 8. + fact1*(30. + 9.*e2ze2z + 19.*e1ze1z);
3301 fact6 = 72. + fact1*(6. + e1ze1z - 9.*e2ze2z);
3302 fact7 = 40. + fact1*(18. + 15.*e1ze1z + 5.*e2ze2z);
3305 *hplus += fact8*(((e1xe1x - e1ye1y)*e2z*fact2 - (e2xe2x
3306 - e2ye2y)*e2z*fact3 + 2.*e1z*(e1ye2y - e1xe2x)*fact4) + I*((-(e2xe2x
3307 - e2ye2y)*fact5 + (e1xe1x - e1ye1y)*fact6)*e1z - 2.*e2z*(e1ye2y
3309 *hcross += (2.*fact8)*((-e2xe2y*e2z*fact3 + e1xe2z*e1y*fact2
3310 - e1z*(e1xe2y + e1ye2x)*fact4) + I*((e1xe2y + e1ye2x)*e2z*fact7
3311 + (e1xe1y*fact6 - e2xe2y*fact5)*e1z));
3312 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3318 *hplus += fact1*(((a2y - a1y)*e1x - (a1x - a2x)*e1y) + I*((a2y
3319 - a1y)*e2x - (a1x - a2x)*e2y));
3320 *hcross += fact1*(((a1x - a2x)*e1x - (a1y - a2y)*e1y) + I*((a1x
3321 - a2x)*e2x - (a1y - a2y)*e2y));
3322 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3326 fact1 = e1xe2x - e1ye2y;
3327 fact2 = e1ye1y - e1xe1x;
3328 fact3 = e2xe2x - e2ye2y;
3329 fact4 = e1xe2y + e1ye2x;
3332 fact7 = dm*v3*0.0625;
3334 *hplus += fact7*((6.*e1z*fact1 + e2z*(5.*fact2 + fact3))
3335 + I*(e1z*(fact2 + 5.*fact3) - 6.*e2z*fact1));
3336 *hcross += (2.*fact7)*((3.*e1z*fact4 + e2z*(-5.*fact5 + fact6))
3337 + I*(e1z*(5.*fact6 - fact5) - 3.*e2z*fact4));
3338 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3344 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3355 fact1 = e1xe2x - e1ye2y;
3356 fact2 = -e1xe1x + e1ye1y + e2xe2x - e2ye2y;
3357 fact3 = e1ye2x + e1xe2y;
3358 fact4 = -e1xe1y + e2xe2y;
3360 *hplus += v5*((12.*fact1*logfac + fact2*
LAL_PI) + I*(6.*fact2*logfac
3362 *hcross += v5*((2.*(6.*fact3*logfac + fact4*
LAL_PI))
3363 + I*(2.*(6.*fact4*logfac - fact3*
LAL_PI)));
3365 fact1 = a1x*(7. + dm) + a2x*(7. - dm);
3366 fact2 = a1y*(7. + dm) + a2y*(7. - dm);
3367 fact3 = a1z*(11. - 3.*dm) + a2z*(11. + 3.*dm);
3368 fact4 = a1x*(41. - dm) + a2x*(41. + dm);
3369 fact5 = a1y*(41. - dm) + a2y*(41. + dm);
3370 fact6 = a1z*(41. - dm) + a2z*(41. + dm);
3371 fact7 = lnhx*fact4 + lnhy*fact5 + lnhz*fact6;
3372 fact8 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3375 *hplus += fact9*((3.*(e1ye2z + e1ze2y)*fact1 + 3.*(e1xe2z
3376 + e1ze2x)*fact2 - 6.*(e1ye2x + e1xe2y)*fact3 + fact8*fact7)
3377 + I*(-3.*(e1ye1z - e2ye2z)*fact1 - 3.*(e1xe1z - e2xe2z)*fact2
3378 + 6.*(e1xe1y - e2xe2y)*fact3 + 2.*(e1xe2x - e1ye2y)*fact7));
3379 *hcross += fact9*((-3.*(e1ze2x + e1xe2z)*fact1 + 3.*(e1ze2y
3380 + e1ye2z)*fact2 + 6.*(e1xe2x - e1ye2y)*fact3 + 2.*(e1xe1y
3381 - e2xe2y)*fact7) + I*(3.*(e1xe1z - e2xe2z)*fact1 - 3.*(e1ye1z
3382 - e2ye2z)*fact2 - 3.*fact8*fact3 + 2.*(e1ye2x + e1xe2y)*fact7));
3383 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3388 fact5 = -1. + 3.*eta;
3389 fact1 = -13. + eta + (6.*e2ze2z + 2.*e1ze1z)*fact5;
3390 fact2 = -13. + eta + (6.*e1ze1z + 2.*e2ze2z)*fact5;
3391 fact3 = e1ze2z*fact5;
3392 fact4 = -13. + eta + 4.*(e1ze1z + e2ze2z)*fact5;
3395 *hplus += fact6*((((e1ye1y - e1xe1x)*fact1 + (e2xe2x
3396 - e2ye2y)*fact2)*0.5) + I*(2.*(e1xe1x - e1ye1y + e2xe2x
3397 - e2ye2y)*fact3 + (e1ye2y - e1xe2x)*fact4));
3398 *hcross += fact6*((-e1xe1y*fact1 + e2xe2y*fact2) + I*(4.*(e1xe1y
3399 + e2xe2y)*fact3 - (e1ye2x + e1xe2y)*fact4));
3400 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3405 *hplus += v2*(0.5*(e1ye1y - e2ye2y + e2xe2x - e1xe1x) + I*(e1ye2y
3407 *hcross += v2*((e2xe2y - e1xe1y) - I*(e1ye2x + e1xe2y));
3410 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3420 fact1 = v5*dm*9./256.;
3421 fact2 = 1. - 2.*eta;
3422 fact3 = 48. + fact2*(4. + 33.*e1ze1z + 9.*e2ze2z);
3423 fact4 = 48. + fact2*(4. + 15.*e1ze1z + 15.*e2ze2z);
3424 fact5 = 48. + fact2*(4. - 3.*e1ze1z + 21.*e2ze2z);
3425 fact6 = 48. + fact2*(4. + 33.*e2ze2z + 9.*e1ze1z);
3426 fact7 = 48. + fact2*(4. - 3.*e2ze2z + 21.*e1ze1z);
3428 *hplus += fact1*(((e2xe2x - e2ye2y)*e2z*fact3 + 2.*e1z*(e1ye2y
3429 - e1xe2x)*fact4 - (e1xe1x - e1ye1y)*e2z*fact5) + I*(2.*(e1ye2y
3430 - e1xe2x)*e2z*fact4 + (e1xe1x - e1ye1y)*e1z*fact6 - e1z*(e2xe2x
3432 *hcross += fact1*((2.*(e2xe2y*e2z*fact3 - (e1xe2y + e1ye2x)*e1z*fact4
3433 - e1xe1y*e2z*fact5)) + I*(2.*(-e1z*e2xe2y*fact7 + e1xe1y*e1z*fact6
3434 - (e1xe2y + e1ye2x)*e2z*fact4)));
3435 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3440 fact1 = v3*dm*9./16.;
3441 fact2 = 2.*(e1xe2x - e1ye2y);
3442 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3443 fact4 = 2.*(e1xe2y + e1ye2x);
3444 fact5 = 2.*(e1xe1y - e2xe2y);
3446 *hplus += fact1*((e1z*fact2 + e2z*fact3) - I*(e1z*fact3 - e2z*fact2));
3447 *hcross += fact1*((e1z*fact4 + e2z*fact5) + I*(-e1z*fact5
3449 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3455 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3466 fact1 = v4*4.*(1. - 3.*eta)/3.;
3467 fact2 = e1xe2x - e1ye2y;
3468 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3469 fact4 = e1ze1z - e2ze2z;
3470 fact5 = e1xe1y - e2xe2y;
3471 fact6 = e1ye2x + e1xe2y;
3473 *hplus = fact1*((0.5*fact4*fact3 - 2.*e1ze2z*fact2) + I*(fact4*fact2
3475 *hcross = fact1*((fact4*fact5 - 2.*e1ze2z*fact6) + I*(fact4*fact6
3476 + 2.*e1ze2z*fact5));
3477 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3484 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3494 fact1 = -v5*dm*(1. - 2.*eta)*625./384.;
3495 fact2 = e1xe2x - e1ye2y;
3496 fact3 = e1xe1x - e1ye1y - (e2xe2x - e2ye2y);
3497 fact4 = e1z*(e1ze1z - 3.*e2ze2z);
3498 fact5 = e2z*(e2ze2z - 3.*e1ze1z);
3499 fact6 = e1ye2x + e1xe2y;
3500 fact7 = e1xe1y - e2xe2y;
3502 *hplus += (fact1)*((fact4*fact2 - 0.5*fact5*fact3) - I*(fact5*fact2
3503 + 0.5*fact4*fact3));
3504 *hcross += (fact1)*((fact4*fact6 - fact5*fact7) - I*(fact4*fact7
3506 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
3514 XLALPrintError(
"XLAL Error - %s: Invalid amp. PN order %d, highest is %d\n", __func__, ampO, 3 );
3595 const REAL8 thetaJN,
3611 XLALPrintError(
"XLAL Error - %s: fRef=0 is invalid. Please pass in the starting GW frequency instead.\n", __func__);
3614 if( (chi1<0.) || (chi1>1.) || (chi2<0.) || (chi2>1.) )
3616 XLALPrintError(
"XLAL Error - %s: chi1,2=0 must be between 0 and 1, values %8.4f -- %8.4f passed.\n", __func__,chi1,chi2);
3620 REAL8 m1, m2, eta, v0, theta0, phi0, Jnorm,
tmp1, tmp2;
3621 REAL8 Jhatx, Jhaty, Jhatz, LNhx, LNhy, LNhz, Jx, Jy, Jz, Lmag;
3622 REAL8 s1hatx,s1haty,s1hatz,s2hatx,s2haty,s2hatz;
3623 REAL8 s1x, s1y, s1z, s2x, s2y, s2z;
3640 s1hatx = sin(theta1)*cos(phiRef);
3641 s1haty = sin(theta1)*sin(phiRef);
3642 s1hatz = cos(theta1);
3643 s2hatx = sin(theta2) * cos(phi12+phiRef);
3644 s2haty = sin(theta2) * sin(phi12+phiRef);
3645 s2hatz = cos(theta2);
3650 eta=m1*m2/(m1+m2)/(m1+m2);
3656 s1x = m1 * m1 * chi1 * s1hatx;
3657 s1y = m1 * m1 * chi1 * s1haty;
3658 s1z = m1 * m1 * chi1 * s1hatz;
3659 s2x = m2 * m2 * chi2 * s2hatx;
3660 s2y = m2 * m2 * chi2 * s2haty;
3661 s2z = m2 * m2 * chi2 * s2hatz;
3664 Jz = Lmag + s1z + s2z;
3667 Jnorm = sqrt( Jx*Jx + Jy*Jy + Jz*Jz);
3671 theta0 = acos(Jhatz);
3672 phi0 = atan2(Jhaty, Jhatx);
3675 ROTATEZ(-phi0, s1hatx, s1haty, s1hatz);
3676 ROTATEZ(-phi0, s2hatx, s2haty, s2hatz);
3684 ROTATEY(-theta0, LNhx, LNhy, LNhz);
3685 ROTATEY(-theta0, s1hatx, s1haty, s1hatz);
3686 ROTATEY(-theta0, s2hatx, s2haty, s2hatz);
3705 REAL8 Ny=sin(thetaJN);
3706 REAL8 Nz=cos(thetaJN);
3707 *incl=acos(Nx*LNhx+Ny*LNhy+Nz*LNhz);
3713 REAL8 thetaLJ = acos(LNhz);
3714 REAL8 phiL = atan2(LNhy, LNhx);
3716 ROTATEZ(-phiL, s1hatx, s1haty, s1hatz);
3717 ROTATEZ(-phiL, s2hatx, s2haty, s2hatz);
3723 ROTATEY(-thetaLJ, s1hatx, s1haty, s1hatz);
3724 ROTATEY(-thetaLJ, s2hatx, s2haty, s2hatz);
3725 ROTATEY(-thetaLJ, Nx, Ny, Nz);
3733 REAL8 phiN = atan2(Ny, Nx);
3831 XLALPrintError(
"XLAL Error - %s: fRef=0 is invalid. Please pass in the starting GW frequency instead.\n", __func__);
3836 REAL8 Jhatx, Jhaty, Jhatz, LNhx, LNhy, LNhz, Jx, Jy, Jz, Lmag;
3837 REAL8 s1hatx,s1haty,s1hatz,s2hatx,s2haty,s2hatz;
3838 REAL8 phi1, phi2, thetaJL, phiJ;
3839 REAL8 s1x, s1y, s1z, s2x, s2y, s2z;
3840 REAL8 Nx, Ny, Nz, phiO, phiN;
3849 *chi1 = sqrt(S1x*S1x + S1y*S1y + S1z*S1z);
3850 *chi2 = sqrt(S2x*S2x + S2y*S2y + S2z*S2z);
3852 s1hatx = S1x/(*chi1);
3853 s1haty = S1y/(*chi1);
3854 s1hatz = S1z/(*chi1);
3862 s2hatx = S2x/(*chi2);
3863 s2haty = S2y/(*chi2);
3864 s2hatz = S2z/(*chi2);
3871 phi1 = atan2(s1haty, s1hatx);
3872 phi2 = atan2(s2haty, s2hatx);
3874 *phi12 = phi2 - phi1;
3878 *theta1 = acos(s1hatz);
3879 *theta2 = acos(s2hatz);
3881 eta=m1*m2/(m1+m2)/(m1+m2);
3887 s1x = m1 * m1 * S1x;
3888 s1y = m1 * m1 * S1y;
3889 s1z = m1 * m1 * S1z;
3890 s2x = m2 * m2 * S2x;
3891 s2y = m2 * m2 * S2y;
3892 s2z = m2 * m2 * S2z;
3895 Jz = Lmag * LNhz + s1z + s2z;
3898 Jnorm = sqrt( Jx*Jx + Jy*Jy + Jz*Jz);
3903 thetaJL = acos(Jhatz);
3904 phiJ = atan2(Jhaty, Jhatx);
3906 phiO = 0.5*
LAL_PI - phiRef;
3907 Nx = sin(incl)*cos(phiO);
3908 Ny = sin(incl)*sin(phiO);
3911 *thetaJN = acos(Jhatx*Nx + Jhaty*Ny + Jhatz*Nz);
3916 ROTATEY(-thetaJL, Nx, Ny, Nz);
3918 ROTATEZ(-phiJ, LNhx, LNhy, LNhz);
3919 ROTATEY(-thetaJL, LNhx, LNhy, LNhz);
3924 phiN = atan2(Ny, Nx);
3930 *phiJL = atan2(LNhy, LNhx);
4137 int found_approximant, found_order, found_axis;
4145 #define DELETE_SUBSTRING_IN_LIST_FROM_STRING(string, list) delete_substring_in_list_from_string(string, list, sizeof(list)/sizeof(*list))
4149 #undef DELETE_SUBSTRING_IN_LIST_FROM_STRING
4155 if (found_approximant < 0)
4159 *order = found_order;
4161 if (found_order < 0)
4172 if (strspn(
string,
"\b") != strlen(
string))
4309 for (
i = 0;
i < size; ++
i)
4351 for (
i = 0;
i < size; ++
i)
4577 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4581 return spin_support;
4699 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4727 return allow_zero_fmin;
4858 XLALPrintError(
"Approximant not supported by lalsimulation TD/FD routines \n");
4861 return testGR_accept;
4880 Mc =
M*pow(eta, 0.6);
4881 len = (*hptilde)->data->length;
4887 if ((*hctilde)->data->length != len) {
4888 XLALPrintError(
"Lengths of plus and cross polarization series do not agree \n");
4892 f0 = (*hptilde)->f0;
4893 if ((*hctilde)->f0 != f0) {
4894 XLALPrintError(
"Starting frequencies of plus and cross polarization series do not agree \n");
4898 df = (*hptilde)->deltaF;
4899 if ((*hctilde)->deltaF != df) {
4900 XLALPrintError(
"Frequency steps of plus and cross polarization series do not agree \n");
4908 if (nonGR_alpha == 1) {
4911 for (
i=k;
i<len;
i++) {
4913 tmpExp = cexp(I*(dPhiPref +
zeta*log(f)));
4914 hplus = (*hptilde)->data->data[
i] * tmpExp;
4915 (*hptilde)->data->data[
i] = hplus;
4916 hcross = (*hctilde)->data->data[
i] * tmpExp;
4917 (*hctilde)->data->data[
i] = hcross;
4921 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)));
4923 for (
i=k;
i<len;
i++) {
4925 tmpVal = pow(f, (nonGR_alpha - 1.));
4926 tmpExp=cexp(-I*dPhiPref*tmpVal);
4927 hplus = (*hptilde)->data->data[
i] * tmpExp;
4928 (*hptilde)->data->data[
i] = hplus;
4929 hcross = (*hctilde)->data->data[
i] * tmpExp;
4930 (*hctilde)->data->data[
i] = hcross;
4962 double mu = m1 * m2 /
M;
4963 double eta =
mu /
M;
4965 double chi = fabs(fabs(s1) > fabs(s2) ? s1 : s2);
4975 double c3 = (226.0/15.0) * chi;
4979 return c0 * pow(v, -8) * (1.0 + (
c2 + (c3 + c4 * v) * v) * v * v);
5000 const double norbits = 1;
5004 return norbits * (2.0 *
LAL_PI *
r / v);
5025 const double nefolds = 11;
5028 const double f1 = +1.5251;
5029 const double f2 = -1.1568;
5030 const double f3 = +0.1292;
5031 const double q1 = +0.7000;
5032 const double q2 = +1.4187;
5033 const double q3 = -0.4990;
5036 double Q =
q1 +
q2 * pow(1.0 -
s,
q3);
5037 double tau = 2.0 *
Q / omega;
5038 return nefolds *
tau;
5059 const double maximum_black_hole_spin = 0.998;
5068 s = 0.686 + 0.15 * (S1z + S2z);
5075 if (
s > maximum_black_hole_spin)
5076 s = maximum_black_hole_spin;
5097 double mu = m1 * m2 /
M;
5098 double eta =
mu /
M;
5128 UINT4 SpinAlignedEOBVersion;
5186 XLALPrintError(
"Non-zero spins were given, but EOBNRv2 ringdown frequencies do not depend on spin.\n");
5188 spin1[0] = 0.; spin1[1] = 0.; spin1[2] = 0.;
5189 spin2[0] = 0.; spin2[1] = 0.; spin2[2] = 0.;
5194 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
5195 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
5199 modefreqVec.
data = &modeFreq;
5205 freq = creal(modeFreq) / (2 *
LAL_PI);
5212 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
5213 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
5215 modefreqVec.
data = &modeFreq;
5221 freq = creal(modeFreq) / (2 *
LAL_PI);
5233 SpinAlignedEOBVersion);
5237 fprintf(stdout,
"Final frequency for TEOBResumS not implemented yet.\n");
5278 XLALPrintError(
"Non-zero spins were given, but this is a non-spinning approximant.\n");
5295 XLALPrintError(
"Non-zero transverse spins were given, but this is a non-precessing approximant.\n");
5381 XLALPrintError(
"I don't know how to calculate final freq. for this approximant, sorry!\n");
5442 ntaper = round(textra / hplus->
deltaT);
5443 for (j = 0; j < ntaper; ++j) {
5444 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5496 const size_t min_taper_samples = 4;
5502 if (hplus->
data->
length < 2 * min_taper_samples) {
5503 XLAL_PRINT_WARNING(
"waveform is too shorter than %zu samples: no final tapering applied", 2 * min_taper_samples);
5511 if (ntaper < min_taper_samples)
5512 ntaper = min_taper_samples;
5513 for (j = 1; j < ntaper; ++j) {
5514 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5523 if (ntaper < min_taper_samples)
5524 ntaper = min_taper_samples;
5525 for (j = 0; j < ntaper; ++j) {
5526 double w = 0.5 - 0.5 * cos(j *
LAL_PI / ntaper);
5553 if (ampOrder == -1) {
5561 fStart = fLow * 2./(ampOrder+2);
5584 const REAL8 distance,
5585 const REAL8 inclination,
5587 const REAL8 longAscNodes,
5588 const REAL8 eccentricity,
5589 const REAL8 UNUSED meanPerAno,
5594 const REAL8 lambda1,
5595 const REAL8 lambda2,
5596 const REAL8 dQuadParam1,
5597 const REAL8 dQuadParam2,
5598 LALSimInspiralWaveformFlags *waveFlags,
5605 LALDict *LALparams = NULL;
5606 REAL8 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z;
5607 char *numrel_data_path;
5615 REAL8 v0 = 1., quadparam1 = 1.+dQuadParam1, quadparam2 = 1.+dQuadParam2;
5624 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
5631 UINT4 PrecEOBversion;
5634 UINT4 SpinAlignedEOBversion;
5635 REAL8 spin1x,spin1y,spin1z;
5636 REAL8 spin2x,spin2y,spin2z;
5637 REAL8 polariz=longAscNodes;
5642 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaT = %e requested.\nPerhaps sample rate and time step size were swapped?\n", __func__,
deltaT);
5644 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaT = %e requested.\nCheck for errors, this could create very large time series.\n", __func__,
deltaT);
5646 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);
5648 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);
5650 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);
5651 if( S1x*S1x + S1y*S1y + S1z*S1z > 1.000001 )
5652 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);
5653 if( S2x*S2x + S2y*S2y + S2z*S2z > 1.000001 )
5654 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);
5656 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested.\nCheck for errors, this could create a very long waveform.\n", __func__,
f_min);
5657 if(
f_min > 40.000001 )
5658 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested.\nCheck for errors, the signal will start in band.\n", __func__,
f_min);
5671 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5675 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5677 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5680 deltaT, m1, m2,
f_min, distance, inclination, amplitudeO, phaseO);
5686 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5688 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5690 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5695 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5696 0, amplitudeO, phaseO);
5702 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5704 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5706 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5711 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5712 0, amplitudeO, phaseO);
5718 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5720 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5722 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5727 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5728 0, amplitudeO, phaseO);
5734 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5736 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5738 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5743 deltaT, m1, m2,
f_min, f_ref, distance, inclination, lambda1, lambda2,
5744 0, amplitudeO, phaseO);
5750 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
5752 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
5754 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralSpinOrder provided, but this approximant does not use that flag.");
5758 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5761 deltaT, m1, m2,
f_min, f_ref, distance, inclination, eccentricity,
5762 amplitudeO, phaseO);
5770 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5774 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5776 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5780 m1, m2,
f_min, 0., distance, inclination);
5786 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5790 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5792 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5796 m1, m2,
f_min, distance, inclination);
5802 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5806 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5808 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5811 m1, m2,
f_min, distance, inclination);
5818 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5832 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5833 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, NULL);
5845 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5859 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5860 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2,
5861 quadparam1, quadparam2, NULL,
5862 phaseO, amplitudeO);
5868 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5882 m1, m2,
f_min, f_ref, distance, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, LNhatx, LNhaty, LNhatz, E1x, E1y, E1z, lambda1, lambda2,
5883 quadparam1, quadparam2, NULL,
5884 phaseO, amplitudeO);
5889 if (S2x != 0. || S2y != 0. || S2z != 0.){
5890 XLALPrintError(
"XLAL Error : The spindominatedwf approximant is only for 1 spin case.\n");
5894 if (amplitudeO > 3) {
5895 XLALPrintError(
"XLAL Error : Foe the spindominatedwf approximant maximal amplitude correction is 1.5 PN\n");
5899 XLALPrintError(
"XLAL Error : For the spindominatedwf approximant maximal phase correction is 2 PN\n");
5907 ret =
XLALSimInspiralSpinDominatedWaveformInterfaceTD(hplus, hcross,
deltaT, m1, m2,
f_min, f_ref, distance, S1x, S1y, S1z, LNhatx, LNhaty, LNhatz, incl, phaseO, amplitudeO, phiRef);
5914 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5916 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
5918 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5920 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5925 f_min, 0., distance, inclination);
5931 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5933 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
5936 deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
5937 phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2, NULL);
5943 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5945 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
5947 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5949 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
5954 f_min, 0., distance, inclination, NULL);
5959 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
5961 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
5963 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
5968 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);
5974 const REAL8 cfac=cos(inclination);
5975 const REAL8 pfac = 0.5 * (1. + cfac*cfac);
5977 for (loopi=hp->
data->
length - 1; loopi > -1; loopi--)
5981 if (ampsqr > maxamp)
5995 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);
6001 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6003 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at the start.\n", __func__);
6005 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6008 deltaT, m1, m2,
f_min, f_ref, distance, incl, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z,
6009 phaseO, amplitudeO, lambda1, lambda2, quadparam1, quadparam2, NULL);
6015 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6017 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6019 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6021 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6023 SpinAlignedEOBversion = 1;
6025 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6031 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6033 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6035 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6037 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6039 SpinAlignedEOBversion = 2;
6041 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6047 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6049 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6051 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6053 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6055 SpinAlignedEOBversion = 4;
6057 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6063 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6065 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6067 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6069 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6071 SpinAlignedEOBversion = 200;
6073 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6079 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6081 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6083 XLALPrintWarning(
"XLAL Warning - %s: This approximant does use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6085 REAL8 spin1[3], spin2[3];
6086 spin1[0] = S1x; spin1[1] = S1y; spin1[2] = S1z;
6087 spin2[0] = S2x; spin2[1] = S2y; spin2[2] = S2z;
6090 deltaT, m1, m2,
f_min, distance, inclination, spin1, spin2, PrecEOBversion);
6096 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6098 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6100 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6102 XLALPrintWarning(
"XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
6104 SpinAlignedEOBversion = 400;
6106 deltaT, m1, m2,
f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
6112 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6114 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
6124 phiRef, inclination,
deltaT, m1, m2, distance,
f_min, f_ref, S1x, S1y, S1z,
6125 S2x, S2y, S2z, numrel_data_path, NULL);
6131 XLALPrintError(
"TD version of approximant not implemented in lalsimulation\n");
6137 REAL8 cp=cos(2.*polariz);
6138 REAL8 sp=sin(2.*polariz);
6139 for (
UINT4 idx=0;idx<(*hplus)->data->length;idx++) {
6140 tmpP=(*hplus)->data->data[idx];
6141 tmpC=(*hcross)->data->data[idx];
6142 (*hplus)->data->data[idx] =cp*tmpP+sp*tmpC;
6143 (*hcross)->data->data[idx]=cp*tmpC-sp*tmpP;
6169 const REAL8 distance,
6170 const REAL8 inclination,
6172 const REAL8 longAscNodes,
6173 const REAL8 eccentricity,
6174 const REAL8 UNUSED meanPerAno,
6180 const REAL8 lambda1,
6181 const REAL8 lambda2,
6182 const REAL8 dQuadParam1,
6183 const REAL8 dQuadParam2,
6184 LALSimInspiralWaveformFlags *waveFlags,
6191 REAL8 LNhatx, LNhaty, LNhatz;
6193 REAL8 E1x, E1y, E1z;
6199 REAL8 quadparam1 = 1.+dQuadParam1, quadparam2 = 1.+dQuadParam2;
6204 REAL8 spin1x,spin1y,spin1z;
6205 REAL8 spin2x,spin2y,spin2z;
6208 REAL8 chi1_l, chi2_l, chip, thetaJ, alpha0;
6216 XLALPrintError(
"XLAL Error - %s: Passed in non-NULL pointer to LALSimInspiralTestGRParam for an approximant that does not use LALSimInspiralTestGRParam\n", __func__);
6222 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);
6223 if( deltaF < 1./4096. )
6224 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);
6226 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);
6228 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);
6230 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);
6231 if( S1x*S1x + S1y*S1y + S1z*S1z > 1.000001 )
6232 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);
6233 if( S2x*S2x + S2y*S2y + S2z*S2z > 1.000001 )
6234 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);
6236 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
6237 if(
f_min > 40.000001 )
6238 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
6251 cfac = cos(inclination);
6252 pfac = 0.5 * (1. + cfac*cfac);
6261 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6264 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6266 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6276 eccentricity, phaseO);
6284 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6287 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6289 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6290 XLAL_PRINT_DEPRECATION_WARNING(
"Calling TF2 via old interface, setting to default values tidal lambdas, quad-monopole pars, amplitude and phase order");
6298 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6299 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6300 for(j = 0; j < (*hptilde)->data->length; j++) {
6301 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6302 (*hptilde)->data->data[j] *=
pfac;
6310 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6313 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6315 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6316 XLAL_PRINT_DEPRECATION_WARNING(
"Calling TF2 via old interface, setting to default values tidal lambdas, quad-monopole pars, amplitude and phase order");
6327 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6328 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6329 for(j = 0; j < (*hptilde)->data->length; j++) {
6330 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6331 (*hptilde)->data->data[j] *=
pfac;
6339 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6343 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6350 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6351 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6352 for(j = 0; j < (*hptilde)->data->length; j++) {
6353 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6354 (*hptilde)->data->data[j] *=
pfac;
6364 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6367 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6369 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero CO spin given, but this approximant does not support this case.");
6373 ROTATEY(inclination, spin1x, spin1y, spin1z);
6374 LNhatx = sin(inclination);
6376 LNhatz = cos(inclination);
6383 m1, m2, spin1x, spin1y, spin1z, LNhatx, LNhaty, LNhatz,
6385 NULL, phaseO, amplitudeO);
6404 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6406 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6408 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6416 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6417 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6418 for(j = 0; j < (*hptilde)->data->length; j++) {
6419 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6420 (*hptilde)->data->data[j] *=
pfac;
6427 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6429 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6433 lambda1, lambda2,
f_min,
f_max, distance, phaseO, amplitudeO);
6437 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6438 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6439 for(j = 0; j < (*hptilde)->data->length; j++) {
6440 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6441 (*hptilde)->data->data[j] *=
pfac;
6449 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6451 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6453 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6461 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6462 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6463 for(j = 0; j < (*hptilde)->data->length; j++) {
6464 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6465 (*hptilde)->data->data[j] *=
pfac;
6472 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6474 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6476 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6484 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6485 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6486 for(j = 0; j < (*hptilde)->data->length; j++) {
6487 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6488 (*hptilde)->data->data[j] *=
pfac;
6495 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6497 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6499 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6507 &((*hptilde)->epoch), (*hptilde)->f0, (*hptilde)->deltaF,
6508 &((*hptilde)->sampleUnits), (*hptilde)->data->length);
6509 for(j = 0; j < (*hptilde)->data->length; j++) {
6510 (*hctilde)->data->data[j] = -I*cfac * (*hptilde)->data->data[j];
6511 (*hptilde)->data->data[j] *=
pfac;
6518 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6522 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6525 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 0);
6531 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6535 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6538 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, 1);
6544 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6546 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6548 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6550 XLALPrintError(
"XLAL Error - %s: SEOBNRv1ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__,S1z,S2z);
6555 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
6561 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6563 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6565 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6568 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
6574 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6576 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6578 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6580 XLALPrintError(
"XLAL Error - %s: SEOBNRv2ROM Effective Spin model called with unequal aligned spins: %lf, %lf.\n", __func__,S1z,S2z);
6585 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2,
XLALSimIMRPhenomBComputeChi(m1, m2, S1z, S2z));
6591 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6593 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6595 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6598 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z);
6604 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralWaveformFlags given, but this approximant does not support this case.");
6606 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero transverse spins were given, but this is a non-precessing approximant.");
6608 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6611 phiRef, deltaF,
f_min,
f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, -1);
6617 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6620 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6622 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6630 &chi1_l, &chi2_l, &chip, &thetaJ, &alpha0,
6632 LNhatx, LNhaty, LNhatz,
6633 spin1x, spin1y, spin1z,
6637 chi1_l, chi2_l, chip, thetaJ,
6638 m1, m2, distance, alpha0, phiRef, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv1_V,
NoNRT_V, NULL);
6644 XLALSimInspiralInitialConditionsPrecessingApproxs(&incl,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,inclination,S1x,S1y,S1z,S2x,S2y,S2z,m1,m2,f_ref,phiRef,
XLALSimInspiralGetFrameAxis(waveFlags));
6647 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6649 XLAL_ERROR(
XLAL_EINVAL,
"Non-zero tidal parameters were given, but this is approximant doe not have tidal corrections.");
6657 &chi1_l, &chi2_l, &chip, &thetaJ, &alpha0,
6659 LNhatx, LNhaty, LNhatz,
6660 spin1x, spin1y, spin1z,
6664 chi1_l, chi2_l, chip, thetaJ,
6665 m1, m2, distance, alpha0, phiRef, deltaF,
f_min,
f_max, f_ref,
IMRPhenomPv2_V,
NoNRT_V, NULL);
6673 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6676 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6683 ROTATEY(inclination,spin1x,spin1y,spin1z);
6684 ROTATEY(inclination,spin2x,spin2y,spin2z);
6685 LNhatx = sin(inclination);
6687 LNhatz = cos(inclination);
6707 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);
6715 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralFrameAxis provided, but this approximant does not use that flag.");
6718 XLAL_ERROR(
XLAL_EINVAL,
"Non-default LALSimInspiralModesChoice provided, but this approximant does not use that flag.");
6725 ROTATEY(inclination,spin1x,spin1y,spin1z);
6726 ROTATEY(inclination,spin2x,spin2y,spin2z);
6727 LNhatx = sin(inclination);
6729 LNhatz = cos(inclination);
6749 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 XLALPrintError(
"FD version of approximant not implemented in lalsimulation\n");
6759 REAL8 polariz=longAscNodes;
6762 for (
UINT4 idx=0;idx<(*hptilde)->data->length;idx++) {
6763 tmpP=(*hptilde)->data->data[idx];
6764 tmpC=(*hctilde)->data->data[idx];
6765 (*hptilde)->data->data[idx] =cos(2.*polariz)*tmpP+sin(2.*polariz)*tmpC;
6766 (*hctilde)->data->data[idx]=cos(2.*polariz)*tmpC-sin(2.*polariz)*tmpP;
6791 if ((lambda1 > 0) && (quadparam1 == 0)) {
6796 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)
int XLALDictRemove(LALDict *dict, const char *key)
void XLALDestroyDict(LALDict *dict)
LALDict * XLALDictDuplicate(LALDict *old)
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.
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.
const char * XLALGetStringFromApproximant(Approximant approximant)
int XLALSimInspiralGetSpinFreqFromApproximant(Approximant approx)
const char * XLALSimInspiralGetStringFromFrameAxis(LALSimInspiralFrameAxis axis)
Returns a string associated with a LALSimInspiralFrameAxis enum value.
int XLALSimInspiralApproximantAcceptTestGRParams(Approximant approx)
const char * XLALSimInspiralGetStringFromApproximant(Approximant approximant)
Returns a string associated with an Approximant enum value.
#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)
const char * XLALSimInspiralGetStringFromPNOrder(LALPNOrder order)
Returns a string associated with a LALPNOrder enum value.
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.
const char * XLALSimInspiralGetStringFromTaper(LALSimInspiralApplyTaper taper)
Returns a string associated with a LALSimInspiralApplyTaper enum value.
#define MAX_PRECESSING_AMP_PN_ORDER
(Twice) the highest known PN order of amplitude correction for precessing binaries.
int XLALGetHigherModesFromString(const char *string)
int XLALGetFrameAxisFromString(const char *waveform)
static const char * lalSimulationFrameAxisNames[]
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 * XLALSimInspiralGetStringFromModesChoice(LALSimInspiralModesChoice modes)
Returns a string associated with a LALSimInspiralModesChoice 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.
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.
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 lalSEOBNRv4_ROMGeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv1GeneratorTemplate
const LALSimInspiralGenerator lalLackey_Tidal_2013_SEOBNRv2_ROMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomDGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv3GeneratorTemplate
const LALSimInspiralGenerator lalSpinTaylorT5FourierGeneratorTemplate
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 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
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
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 lalTaylorT4GeneratorTemplate
const LALSimInspiralGenerator lalSEOBNRv2_ROM_DoubleSpin_HIGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomTHMGeneratorTemplate
const LALSimInspiralGenerator lalIMRPhenomPv2_NRTidalv2GeneratorTemplate
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 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
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 * 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)
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
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'.
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...
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+...
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...
LALSimInspiralGenerator * XLALSimInspiralChooseGenerator(Approximant approx, LALDict *params)
Returns LALSimInspiralGenerator object from approximant.
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.
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...
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...
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.
const char * XLALSimInspiralGeneratorName(LALSimInspiralGenerator *generator)
Return approximant name from generator object.
void XLALSimInspiralParseDictionaryToChooseFDModes(REAL8 *m1, REAL8 *m2, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 *deltaF, REAL8 *f_min, REAL8 *f_max, REAL8 *f_ref, REAL8 *phiRef, REAL8 *distance, REAL8 *inclination, LALDict *params)
Insert all the input arguments needed by XLALSimInspiralChooseFDModes() into a laldictionary.
int 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+...
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...
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...
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...
LALSimInspiralGenerator * XLALCreateSimInspiralGenerator(const LALSimInspiralGenerator *generator, LALDict *params)
Create LALSimInspiralGenerator object.
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...
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.
void XLALDestroySimInspiralGenerator(LALSimInspiralGenerator *generator)
Destroy LALSimInspiralGenerator object.
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...
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....
@ 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.
@ 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).
@ 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...
@ 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 * XLALSphHarmTimeSeriesAddMode(SphHarmTimeSeries *appended, const COMPLEX16TimeSeries *inmode, UINT4 l, INT4 m)
Prepend a node to a linked list of SphHarmTimeSeries, or create a new head.
COMPLEX16TimeSeries * XLALSphHarmTimeSeriesGetMode(SphHarmTimeSeries *ts, UINT4 l, INT4 m)
Get the time series of a waveform's (l,m) spherical harmonic mode from a SphHarmTimeSeries linked lis...
SphHarmTimeSeries * XLALResizeSphHarmTimeSeries(SphHarmTimeSeries *ts, int first, size_t length)
For every (l,m) node in the SphHarmTimeSeries linked list, call XLALResizeCOMPLEX16TimeSeries(ts->mod...
void XLALDestroySphHarmFrequencySeries(SphHarmFrequencySeries *ts)
Delete list from current pointer to the end of the list.
int XLALStringCaseCompare(const char *s1, const char *s2)
char char * XLALStringDuplicate(const char *s)
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 * 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)
void XLALDestroyCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
REAL8TimeSeries * XLALShrinkREAL8TimeSeries(REAL8TimeSeries *series, size_t first, size_t length)
COMPLEX16TimeSeries * XLALCreateCOMPLEX16TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
const LALUnit lalStrainUnit
#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 * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
LIGOTimeGPS * XLALGPSSetREAL8(LIGOTimeGPS *epoch, REAL8 t)
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.