8#include <lal/LALSQTPNWaveform.h>
9#include <lal/LALSQTPNIntegrator.h>
10#include <lal/LALSQTPNWaveformInterface.h>
18#define SCALAR_PRODUCT3(a1, a2) \
19 ((a1)[0] * (a2)[0] + (a1)[1] * (a2)[1] + (a1)[2] * (a2)[2]);
27#define VECTOR_PRODUCT3(left, right, product)\
28 (product)[0] = ((left)[1] * (right)[2] - (left)[2] * (right)[1]);\
29 (product)[1] = ((left)[2] * (right)[0] - (left)[0] * (right)[2]);\
30 (product)[2] = ((left)[0] * (right)[1] - (left)[1] * (right)[0]);
35 REAL8 thetahat = 1039. / 4620.;
43 for (
i = 0;
i < 2;
i++) {
57 = (-4415./ 4032. +
params->eta * 358675.
58 / 6048. + etaPow2 * 91495. / 1512.) *
LAL_PI;
59#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
65 * 1712. / 105. + piPow2 * 16. / 3.)
66 + (-273811877. / 1088640.+ piPow2 * 451. / 48.
67 - thetahat * 88. / 3.) *
params->eta + etaPow2
68 * 541. / 896. - etaPow3 * 5605. / 2592.;
69 params->coeff.domegaLN = -856. / 105.;
71 + (209323. / 4032. - 205. * piPow2 / 96.
72 + (110. / 9.) * (1987. / 3080.)) *
params->eta
73 - 155. * etaPow2 / 96. - 35. * etaPow3 / 5184.;
74#
if __GNUC__ >= 7 && !defined __INTEL_COMPILER
79 = -(4159. + 15876. *
params->eta)
81#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
86 +
params->eta * 13661. / 2016.
87 + etaPow2 * 59. / 18.;
88 params->coeff.domegaSSselfConst = 0.;
89 params->coeff.domegaQMConst = 0.;
91 params->coeff.dchihSS[0] = spin_MPow2[1] / 2.;
92 params->coeff.dchihSS[1] = spin_MPow2[0] / 2.;
96 params->coeff.domegaSS[1] = -247.
97 *
params->coeff.domegaSS[0] / 721.;
98 params->coeff.mecoSS = -spin_MPow2[0]
102 for (
i = 0;
i < 2;
i++) {
106 params->coeff.domegaSSselfConst -= 7.
107 *
params->coeff.domegaSSself[
i];
111 for (
i = 0;
i < 2;
i++) {
115 *
params->qmParameter[
i] * 7.5;
116 params->coeff.domegaQMConst
127 *
params->eta - etaPow2) / 24.;
128#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
134 if (
params->interaction != 0) {
135 for (
i = 0;
i < 2;
i++) {
136 params->coeff.dchihSO[
i] = (4. + 3.
138 params->coeff.dLNh[
i] = -spin_MPow2[
i]
141 = -spin_MPow2[
i] * (113. + 75.
144 = -spin_MPow2[
i] * 5.
149#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
154 = -(743. + 924. *
params->eta) / 336.;
157#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
162#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
185 REAL8 omegaPowi_3[8];
188 for (
i = 2;
i < 8;
i++) {
189 omegaPowi_3[
i] = omegaPowi_3[
i - 1] * omegaPowi_3[1];
191 REAL8 SS_Omega, SSself_Omega, QM_Omega;
192 SS_Omega = SSself_Omega = QM_Omega = 0.;
193 REAL8 chih1chih2, chih1xchih2[2][3], LNhchih[2], LNhxchih[2][3];
195 for (
i = 0;
i < 2;
i++) {
208 * omegaPowi_3[
i - 1];
217 * log(16. * omegaPowi_3[2])
219#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
227 SS_Omega =
params->coeff.domegaSS[0]
228 * LNhchih[0] * LNhchih[1]
229 +
params->coeff.domegaSS[1]*chih1chih2;
232 * (chih1chih2 - 3 * LNhchih[0]
233 * LNhchih[1]) * omegaPowi_3[3];
235 for (
i = 0;
i < 2;
i++) {
239 for (j = 0; j < 3; j++) {
257 SSself_Omega =
params->coeff.domegaSSselfConst;
258 for (
i = 0;
i < 2;
i++) {
260 +=
params->coeff.domegaSSself[
i]
266 QM_Omega =
params->coeff.domegaQMConst;
267 for (
i = 0;
i < 2;
i++) {
268 QM_Omega +=
params->coeff.domegaQM[
i]
271 for (j = 0; j < 3; j++) {
285 * QM_Omega * omegaPowi_3[3];
289#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
293 if (
params->interaction != 0) {
295 for (
i = 0;
i < 2;
i++) {
302 * LNhchih[
i] * omegaPowi_3[2];
305 for (
i = 0;
i < 3;
i++) {
307 +=
params->coeff.dchihSO[0]
308 * LNhxchih[0][
i] * omegaPowi_3[5];
310 +=
params->coeff.dchihSO[1]
311 * LNhxchih[1][
i] * omegaPowi_3[5];
320#if __GNUC__ >= 7 && !defined __INTEL_COMPILER
328 XLALPrintError(
"XLAL Error - %s: The PN order requested is not implemented for this approximant\n", __func__);
358 if( !
params || !waveform )
364 REAL8 LNhztol = 1.0e-8;
367 const REAL8 freq_Step = geometrized_m_total *
LAL_PI;
368 const REAL8 step =
params->samplingTime / geometrized_m_total;
383 for (
i = 0;
i < 3;
i++) {
401 if (waveform->
hp || waveform->
hc || waveform->
h) {
409 + temp2 * sin(2.*
alpha);
410 waveform->
hc->
data[2*
i+1] = temp1
415 + temp2 * sin(2.*
alpha);
419 - temp2 * cos(2.*
alpha);
436 time =
i++ *
params->samplingTime;
467 <
params->samplingFreq / 2.
470 if (waveform->
hp || waveform->
hc){
472 / (
LAL_PI * geometrized_m_total);
473 params->coalescenceTime = time;
#define ATTATCHSTATUSPTR(statusptr)
#define DETATCHSTATUSPTR(statusptr)
#define INITSTATUS(statusptr)
#define RETURN(statusptr)
@ LAL_INSPIRAL_INTERACTION_QUAD_MONO_2PN
Quadrupole-monopole interaction.
@ LAL_INSPIRAL_INTERACTION_SPIN_SPIN_2PN
Spin-spin interaction.
@ LAL_INSPIRAL_INTERACTION_SPIN_SPIN_SELF_2PN
Spin-spin-self interaction.
int XLALSQTPNIntegratorInit(LALSQTPNIntegratorSystem *integrator, INT2 num, void *params, int(*derivator)(REAL8, const REAL8[], REAL8[], void *))
The function initialize the integration method.
void XLALSQTPNIntegratorFree(LALSQTPNIntegratorSystem *integrator)
The function deallocates the memory allocated for the integrator function.
int XLALSQTPNIntegratorFunc(REAL8 values[], LALSQTPNIntegratorSystem *integrator, REAL8 step)
The function evolves the system with the given time-step.
LAL_PNORDER_TWO_POINT_FIVE
LAL_PNORDER_THREE_POINT_FIVE
LAL_PNORDER_ONE_POINT_FIVE
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
#define XLAL_PRINT_DEPRECATION_WARNING(replacement)
REAL4TimeVectorSeries * a
The structure contains the integration method and its settings.
REAL4VectorSequence * data