21 #define UNUSED __attribute__ ((unused))
32 #include <lal/Units.h>
33 #include <lal/SeqFactories.h>
34 #include <lal/LALConstants.h>
35 #include <lal/XLALError.h>
36 #include <lal/FrequencySeries.h>
37 #include <lal/Sequence.h>
38 #include <lal/LALSimIMR.h>
47 const double b0 = -1424.2;
48 const double b1 = 6423.4;
49 const double b2 = 0.84203;
50 const double c0 = -9.7628;
51 const double c1 = 33.939;
52 const double c2 = 1.0971;
54 const double g0 = -4.6339;
55 const double g1 = 27.719;
56 const double g2 = 10.268;
57 const double g3 = -41.741;
69 *C = exp(
b0 +
b1*eta +
b2*chi_BH)
79 const double MfA = 0.01;
84 double dMf = Mf - MfA;
85 double dMf2 = dMf*dMf;
86 double B = C * dMf*dMf2;
102 double eta2 = eta*eta;
103 double eta3 = eta2*eta;
104 double SqrtOneMinus4Eta = sqrt(1.-4.*eta);
106 *a0 = -12 *
Lambda * ((1 + 7.*eta - 31*eta2)
107 - SqrtOneMinus4Eta * (1 + 9.*eta - 11*eta2));
109 * ((1. + 3775.*eta/234. - 389.*eta2/6. + 1376.*eta3/117.)
110 - SqrtOneMinus4Eta*(1 + 4243.*eta/234. - 6217*eta2/234. - 10.*eta3/9.));
112 *
G = exp(
g0 +
g1*eta +
g2*chi_BH +
g3*eta*chi_BH);
123 double v = cbrt(
LAL_PI * Mf);
127 return 3.*(a0*v5 + a1*v7) / (128.*eta);
138 double v = cbrt(
LAL_PI * Mf);
141 return LAL_PI * (5.*a0*v2 + 7.*a1*v4) / (128.*eta);
154 const double MfP = 0.02;
164 double E =
G * pow(Mf - MfP, 5./3.);
165 double psiFit = eta *
Lambda * E;
166 return psiT + DpsiT - psiFit;
170 struct tagCOMPLEX16FrequencySeries **hptilde,
171 struct tagCOMPLEX16FrequencySeries **hctilde,
185 if(!hptilde || !hctilde)
187 if(*hptilde || *hctilde) {
188 XLALPrintError(
"(*hptilde) and (*hctilde) are supposed to be NULL, but got %p and %p",(*hptilde),(*hctilde));
193 double fLow = freqs_in->
data[0];
194 double fHigh = freqs_in->
data[freqs_in->
length - 1];
200 double M = mBH + mNS;
201 double eta = mBH * mNS / (
M*
M);
208 "eta = %g is not in allowed range 5/36 < eta < 2/9 (5 < q < 2)!", eta);
212 "Dimensionless tidal deformability = %g is not in allowed range [0, 4382]!",
Lambda);
220 phiRef, deltaF, fLow, fHigh, fRef, distance, inclination,
228 phiRef, fRef, distance, inclination,
239 UINT4 iStop = (*hptilde)->
data->length - 1;
242 double deltaF_geom = deltaF * Mtot_sec;
244 freqs->
data[
i-iStart] =
i*deltaF_geom;
252 freqs->
data[
i] = freqs_in->
data[
i] * Mtot_sec;
265 double Mf = freqs->
data[
i];
327 struct tagCOMPLEX16FrequencySeries **hptilde,
328 struct tagCOMPLEX16FrequencySeries **hctilde,
344 phiRef, fRef, distance, inclination, mBH_SI, mNS_SI, chi_BH,
Lambda, freqs, 0);
358 struct tagCOMPLEX16FrequencySeries **hptilde,
359 struct tagCOMPLEX16FrequencySeries **hctilde,
376 freqs->
data[0] = fLow;
377 freqs->
data[1] = fHigh;
380 phiRef, fRef, distance, inclination, mBH_SI, mNS_SI, chi_BH,
Lambda, freqs, deltaF);
static void tidalPNPhaseCoefficients(double *a0, double *a1, double *G, const double eta, const double chi_BH, const double Lambda)
static double tidalCorrectionAmplitude(const double Mf, const double C, const double eta, const double Lambda)
static double tidalPNPhaseDeriv(const double Mf, const double a0, const double a1, const double eta)
static void tidalPNAmplitudeCoefficient(double *C, const double eta, const double chi_BH, const double Lambda)
static double tidalCorrectionPhase(const double Mf, const double a0, const double a1, const double G, const double eta, const double Lambda)
int LackeyTidal2013SEOBNRv2ROMCore(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 mBH_SI, REAL8 mNS_SI, REAL8 chi_BH, REAL8 Lambda, const REAL8Sequence *freqs_in, REAL8 deltaF)
static double tidalPNPhase(const double Mf, const double a0, const double a1, const double eta)
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 XLALSimIMRSEOBNRv2ROMDoubleSpinHIFrequencySequence(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, REAL8 phiRef, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, INT4 nk_max)
Compute waveform in LAL format at specified frequencies for the SEOBNRv2_ROM_DoubleSpin_HI model.
int XLALSimIMRLackeyTidal2013(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 mBH_SI, REAL8 mNS_SI, REAL8 chi_BH, REAL8 Lambda)
Compute waveform in LAL format for the Lackey et al (2013) tidal model based on SEOBNRv2_ROM_DoubleSp...
int XLALSimIMRLackeyTidal2013FrequencySequence(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, REAL8 phiRef, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 mBH_SI, REAL8 mNS_SI, REAL8 chi_BH, REAL8 Lambda)
Compute waveform in LAL format at specified frequencies for the Lackey et al (2013) tidal model based...
void XLALDestroyREAL8Sequence(REAL8Sequence *sequence)
REAL8Sequence * XLALCreateREAL8Sequence(size_t length)
#define XLAL_CHECK(assertion,...)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1