21 #include <lal/Units.h>
22 #include <lal/LALConstants.h>
23 #include <lal/LALSimInspiral.h>
24 #include <lal/LALAdaptiveRungeKuttaIntegrator.h>
25 #include <lal/TimeSeries.h>
26 #include <lal/FrequencySeries.h>
29 #include <lal/XLALGSL.h>
31 #define XLAL_BEGINGSL \
33 gsl_error_handler_t *saveGSLErrorHandler_; \
34 saveGSLErrorHandler_ = gsl_set_error_handler_off();
37 gsl_set_error_handler( saveGSLErrorHandler_ ); \
41 #define LALSIMINSPIRAL_ST_TEST_ENERGY 1025
42 #define LALSIMINSPIRAL_ST_TEST_OMEGADOUBLEDOT 1026
43 #define LALSIMINSPIRAL_ST_TEST_COORDINATE 1027
44 #define LALSIMINSPIRAL_ST_TEST_OMEGANAN 1028
45 #define LALSIMINSPIRAL_ST_TEST_FREQBOUND 1029
46 #define LALSIMINSPIRAL_ST_DERIVATIVE_OMEGANONPOS 1030
47 #define LALSIMINSPIRAL_ST_TEST_LARGEV 1031
50 #define LAL_MAX_PN_ORDER 8
52 #define LAL_NUM_ST4_VARIABLES 14
58 #define LAL_ST4_ABSOLUTE_TOLERANCE 1.e-12
59 #define LAL_ST4_RELATIVE_TOLERANCE 1.e-12
62 #define ROTATEZ(angle, vx, vy, vz)\
63 tmp1 = vx*cos(angle) - vy*sin(angle);\
64 tmp2 = vx*sin(angle) + vy*cos(angle);\
68 #define ROTATEY(angle, vx, vy, vz)\
69 tmp1 = vx*cos(angle) + vz*sin(angle);\
70 tmp2 = - vx*sin(angle) + vz*cos(angle);\
76 (*vout) = (
double *)
LALMalloc(
sizeof(
double) * 3);
77 (*vout)[0]=v1y*v2z-v1z*v2y;
78 (*vout)[1]=v1z*v2x-v1x*v2z;
79 (*vout)[2]=v1x*v2y-v1y*v2x;
84 return v1x*v2x+v1y*v2y+v1z*v2z;
94 const double values[],
double dvalues[],
void *mparams);
96 const double values[],
double dvalues[],
void *mparams);
98 const double values[],
double dvalues[],
void *mparams);
123 UINT4 len2 =
end->dimLength->data[1];
128 if(
end->dimLength->data[0] != nParams)
130 XLALPrintError(
"XLAL Error - %s: cannot append series with different numbers of parameters %d and %d.\n", __func__, nParams,
end->dimLength->data[0]);
137 if(start->
data[len1-1] !=
end->data[0])
140 lenTot = len1 + len2;
145 lenTot = len1 + len2 - 1;
149 for(
i = 0;
i < nParams;
i++)
151 memcpy(&(combined->
data[
i*lenTot]), &(start->
data[
i*len1]),
sizeof(
REAL8)*len1);
154 memcpy(&(combined->
data[
i*lenTot + len1]), &(
end->data[
i*len2+1]),
sizeof(
REAL8)*(len2-1));
155 if(
i && start->
data[
i*len1 + len1-1] !=
end->data[
i*len2])
157 XLALPrintWarning(
"XLAL Warning - %s: time series inconsistent: parameter %d is %f or %f at the same time.\n", __func__,
i, start->
data[
i*len1 + len1-1],
end->data[
i*len2]);
162 memcpy(&(combined->
data[
i*lenTot + len1]), &(
end->data[
i*len2]),
sizeof(
REAL8)*(len2));
178 UINT4 newLen = lenTot;
186 XLALPrintError(
"XLAL Error - %s: bad time series, has %d parameters.\n", __func__, nParams);
196 for(
i = 0, k = 0;
i < lenTot;
i++, k++)
199 if(i < lenTot && series->
data[
i] == series->
data[
i+1])
201 for(j = 1; j < nParams; j++)
203 mean->
data[j] = series->
data[j*lenTot +
i];
205 while(i < lenTot && series->
data[
i] == series->
data[
i+1])
210 for(j = 1; j < nParams; j++)
212 mean->
data[j] += series->
data[j*lenTot +
i];
215 for(j = 1; j < nParams; j++)
217 mean->
data[j] /= nDuplicates+1;
219 newLen -= nDuplicates;
220 for(j = 0; j < nParams; j++)
222 temp->
data[j*lenTot + k] = mean->
data[j];
227 for(j = 0; j < nParams; j++)
229 temp->
data[j*lenTot + k] = series->
data[j*lenTot +
i];
238 for(j = 0; j < nParams; j++)
240 memcpy(&series->
data[j*newLen], &temp->
data[j*lenTot],
sizeof(
REAL8)*newLen);
264 const REAL8 quadparam1,
265 const REAL8 quadparam2,
267 const INT4 phenomtp )
278 (*params)->Mchirp =
M*pow(eta,0.6);
279 (*params)->m1M = m1M;
280 (*params)->m2M = m2M;
281 (*params)->eta = eta;
282 (*params)->fStart = fStart;
283 (*params)->fEnd = fEnd;
284 (*params)->phaseO = phaseO;
285 (*params)->spinO = spinO;
286 (*params)->tideO = tideO;
287 (*params)->lscorr = lscorr;
288 (*params)->phenomtp = phenomtp;
293 switch( (*params)->phaseO ) {
298 (*params)->Ecoeff[7] = 0.;
299 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
305 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
310 (*params)->Ecoeff[5] = 0.;
311 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
317 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
322 (*params)->Ecoeff[3] = 0.;
323 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
329 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
334 (*params)->Ecoeff[1] = 0.;
335 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
340 (*params)->Ecoeff[0] = 1.;
344 __func__, (*params)->phaseO );
352 switch( (*params)->spinO )
366 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
396 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
406 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
431 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
439 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
448 __func__, (*params)->spinO );
453 switch( (*params)->tideO )
458 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
463 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
470 __func__, (*params)->tideO );
508 const REAL8 LNhdotS1,
509 const REAL8 LNhdotS2,
532 const REAL8 LN0mag=eta/v;
549 const REAL8 omega=v2*v;
550 const REAL8 v5=omega*v2;
554 const REAL8 dS1xL =
params->S1dot3 * v5 * LNhcS1[0];
555 const REAL8 dS1yL =
params->S1dot3 * v5 * LNhcS1[1];
556 const REAL8 dS1zL =
params->S1dot3 * v5 * LNhcS1[2];
560 const REAL8 dS2xL =
params->S2dot3 * v5 * LNhcS2[0];
561 const REAL8 dS2yL =
params->S2dot3 * v5 * LNhcS2[1];
562 const REAL8 dS2zL =
params->S2dot3 * v5 * LNhcS2[2];
572 const REAL8 dLxL=-(dS1xL+ dS2xL) ;
573 const REAL8 dLyL=-(dS1yL+ dS2yL);
574 const REAL8 dLzL=-(dS1zL+ dS2zL);
584 REAL8 omega2=omega*omega;
588 REAL8 dS1xNL = omega2 * (-
params->S1dot4S2Avg * S1cS2[0] +
params->S1dot4S2OAvg * LNhdotS2 * LNhcS1[0]);
589 REAL8 dS1yNL = omega2 * (-
params->S1dot4S2Avg * S1cS2[1] +
params->S1dot4S2OAvg * LNhdotS2 * LNhcS1[1]);
590 REAL8 dS1zNL = omega2 * (-
params->S1dot4S2Avg * S1cS2[2] +
params->S1dot4S2OAvg * LNhdotS2 * LNhcS1[2]);
591 REAL8 dS2xNL = omega2 * (
params->S1dot4S2Avg * S1cS2[0] +
params->S1dot4S2OAvg * LNhdotS1 * LNhcS2[0]);
592 REAL8 dS2yNL = omega2 * (
params->S1dot4S2Avg * S1cS2[1] +
params->S1dot4S2OAvg * LNhdotS1 * LNhcS2[1]);
593 REAL8 dS2zNL = omega2 * (
params->S1dot4S2Avg * S1cS2[2] +
params->S1dot4S2OAvg * LNhdotS1 * LNhcS2[2]);
596 dS1xNL += omega2 *
params->S1dot4QMS1OAvg * LNhdotS1 * LNhcS1[0];
597 dS1yNL += omega2 *
params->S1dot4QMS1OAvg * LNhdotS1 * LNhcS1[1];
598 dS1zNL += omega2 *
params->S1dot4QMS1OAvg * LNhdotS1 * LNhcS1[2];
601 dS2xNL += omega2 *
params->S2dot4QMS2OAvg * LNhdotS2 * LNhcS2[0];
602 dS2yNL += omega2 *
params->S2dot4QMS2OAvg * LNhdotS2 * LNhcS2[1];
603 dS2zNL += omega2 *
params->S2dot4QMS2OAvg * LNhdotS2 * LNhcS2[2];
613 const REAL8 dLxNL = -(dS1xNL+dS2xNL);
614 const REAL8 dLyNL = -(dS1yNL+dS2yNL);
615 const REAL8 dLzNL = -(dS1zNL+dS2zNL);
634 LNmag+=LN0mag*v2*L1PN;
637 const REAL8 dS1xNNL =
params->S1dot5 * v7 * LNhcS1[0];
638 const REAL8 dS1yNNL =
params->S1dot5 * v7 * LNhcS1[1];
639 const REAL8 dS1zNNL =
params->S1dot5 * v7 * LNhcS1[2];
641 const REAL8 dS2xNNL =
params->S2dot5 * v7 * LNhcS2[0];
642 const REAL8 dS2yNNL =
params->S2dot5 * v7 * LNhcS2[1];
643 const REAL8 dS2zNNL =
params->S2dot5 * v7 * LNhcS2[2];
653 dLNhatx-= dS1xNNL + dS2xNNL;
654 dLNhaty-= dS1yNNL + dS2yNNL;
655 dLNhatz-= dS1zNNL + dS2zNNL;
663 dLNhatx -= eta*v2*( cS1*dS1xL + cS2*dS2xL);
664 dLNhaty -= eta*v2*( cS1*dS1yL + cS2*dS2yL);
665 dLNhatz -= eta*v2*( cS1*dS1zL + cS2*dS2zL);
670 if (!(
params->phenomtp)) {
674 REAL8 dS1xN3L=v8*(-
params->S1dot6S2Avg*S1cS2[0] + (
params->S1dot6S1OAvg*LNhdotS1 +
params->S1dot6S2OAvg*LNhdotS2)*LNhcS1[0]);
675 REAL8 dS1yN3L=v8*(-
params->S1dot6S2Avg*S1cS2[1] + (
params->S1dot6S1OAvg*LNhdotS1 +
params->S1dot6S2OAvg*LNhdotS2)*LNhcS1[1]);
676 REAL8 dS1zN3L=v8*(-
params->S1dot6S2Avg*S1cS2[2] + (
params->S1dot6S1OAvg*LNhdotS1 +
params->S1dot6S2OAvg*LNhdotS2)*LNhcS1[2]);
677 REAL8 dS2xN3L=v8*(
params->S2dot6S1Avg*S1cS2[0] + (
params->S2dot6S1OAvg*LNhdotS1 +
params->S2dot6S2OAvg*LNhdotS2)*LNhcS2[0]);
678 REAL8 dS2yN3L=v8*(
params->S2dot6S1Avg*S1cS2[1] + (
params->S2dot6S1OAvg*LNhdotS1 +
params->S2dot6S2OAvg*LNhdotS2)*LNhcS2[1]);
679 REAL8 dS2zN3L=v8*(
params->S2dot6S1Avg*S1cS2[2] + (
params->S2dot6S1OAvg*LNhdotS1 +
params->S2dot6S2OAvg*LNhdotS2)*LNhcS2[2]);
682 dS1xN3L += v8*(
params->S1dot6QMS1OAvg * LNhdotS1 * LNhcS1[0] );
683 dS1yN3L += v8*(
params->S1dot6QMS1OAvg * LNhdotS1 * LNhcS1[1] );
684 dS1zN3L += v8*(
params->S1dot6QMS1OAvg * LNhdotS1 * LNhcS1[2] );
687 dS2xN3L += v8*(
params->S2dot6QMS2OAvg * LNhdotS2 * LNhcS2[0] );
688 dS2yN3L += v8*(
params->S2dot6QMS2OAvg * LNhdotS2 * LNhcS2[1] );
689 dS2zN3L += v8*(
params->S2dot6QMS2OAvg * LNhdotS2 * LNhcS2[2] );
699 dLNhatx -= dS1xN3L + dS2xN3L;
700 dLNhaty -= dS1yN3L + dS2yN3L;
701 dLNhatz -= dS1zN3L + dS2zN3L;
709 dLNhatx-=eta*v2*( cS1*dS1xNL + cS2*dS2xNL + (cS1L*LNhdotS1+cS2L*LNhdotS2)*dLxL/LN0mag );
710 dLNhaty-=eta*v2*( cS1*dS1yNL + cS2*dS2yNL + (cS1L*LNhdotS1+cS2L*LNhdotS2)*dLyL/LN0mag );
711 dLNhatz-=eta*v2*( cS1*dS1zNL + cS2*dS2zNL + (cS1L*LNhdotS1+cS2L*LNhdotS2)*dLzL/LN0mag );
722 const REAL8 v4=v2*v2;
723 LNmag+=LN0mag*v4*L2PN;
724 const REAL8 omega3=omega2*omega;
727 const REAL8 dS1xN4L =
params->S1dot7S2 * omega3 * LNhcS1[0];
728 const REAL8 dS1yN4L =
params->S1dot7S2 * omega3 * LNhcS1[1];
729 const REAL8 dS1zN4L =
params->S1dot7S2 * omega3 * LNhcS1[2];
731 const REAL8 dS2xN4L =
params->S2dot7S1 * omega3 * LNhcS2[0];
732 const REAL8 dS2yN4L =
params->S2dot7S1 * omega3 * LNhcS2[1];
733 const REAL8 dS2zN4L =
params->S2dot7S1 * omega3 * LNhcS2[2];
743 dLNhatx -= dS1xN4L + dS2xN4L;
744 dLNhaty -= dS1yN4L + dS2yN4L;
745 dLNhatz -= dS1zN4L + dS2zN4L;
772 *dLNhx = -Om[2]*LNhy + Om[1]*LNhz;
773 *dLNhy = -Om[0]*LNhz + Om[2]*LNhx;
774 *dLNhz = -Om[1]*LNhx + Om[0]*LNhy;
777 *dE1x = -Om[2]*E1y + Om[1]*E1z;
778 *dE1y = -Om[0]*E1z + Om[2]*E1x;
779 *dE1z = -Om[1]*E1x + Om[0]*E1y;
798 const REAL8 quadparam1,
799 const REAL8 quadparam2,
809 int errCode=
XLALSimSpinTaylorEnergySpinDerivativeSetup(
params,m1_SI,m2_SI,fStart,fEnd,spinO,tideO,phaseO,lambda1,lambda2,quadparam1,quadparam2,lscorr,phenomtp);
811 if ( (lscorr) && (phenomtp) ) {
812 XLALPrintError(
"XLAL Error - %s: Flag for spin corrections to orbital angular momentum is incompatible with IMRPhenomTP setup\n",__func__);
816 REAL8 eta=(*params)->eta;
817 REAL8 m1M=(*params)->m1M;
818 REAL8 m2M=(*params)->m2M;
842 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
849 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
855 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
861 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
867 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
873 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
878 (*params)->wdotcoeff[1] = 0.;
879 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
884 (*params)->wdotcoeff[0] = 1.;
904 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
922 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
928 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
953 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
959 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
984 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
989 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1013 const REAL8 lambda1,
1014 const REAL8 lambda2,
1015 const REAL8 quadparam1,
1016 const REAL8 quadparam2,
1025 int errCode=
XLALSimSpinTaylorEnergySpinDerivativeSetup(
params,m1_SI,m2_SI,fStart,fEnd,spinO,tideO,phaseO,lambda1,lambda2,quadparam1,quadparam2,lscorr,0);
1027 REAL8 eta=(*params)->eta;
1028 REAL8 m1M=(*params)->m1M;
1029 REAL8 m2M=(*params)->m2M;
1055 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1062 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1068 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1074 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1080 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1086 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1091 (*params)->Fcoeff[1] = 0.;
1092 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1097 (*params)->Fcoeff[0] = 1.;
1112 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1128 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1141 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1159 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1165 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1189 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1194 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1220 const REAL8 lambda1,
1221 const REAL8 lambda2,
1222 const REAL8 quadparam1,
1223 const REAL8 quadparam2,
1232 int errCode=
XLALSimSpinTaylorEnergySpinDerivativeSetup(
params,m1_SI,m2_SI,fStart,fEnd,spinO,tideO,phaseO,lambda1,lambda2,quadparam1,quadparam2,lscorr,0);
1233 REAL8 eta=(*params)->eta;
1234 REAL8 m1M=(*params)->m1M;
1235 REAL8 m2M=(*params)->m2M;
1259 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1266 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1272 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1278 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1284 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1290 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1295 (*params)->wdotcoeff[1] = 0.;
1296 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1301 (*params)->wdotcoeff[0] = 1.;
1318 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1341 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1347 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1365 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1373 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1399 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1405 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
1464 REAL8 fS, fE, phiShift;
1480 XLALPrintError(
"XLAL Error - %s: kMax = %d not implemented. Must be <= 10\n",
1494 if( fRef != 0. && fRef < fStart )
1496 XLALPrintError(
"XLAL Error - %s: fRef = %f must be > fStart = %f\n",
1497 __func__, fRef, fStart);
1502 XLALPrintError(
"XLAL Error - %s: fRef = %f must be < Schwar. ISCO=%f\n",
1503 __func__, fRef, fISCO);
1515 m1, m2, fS, fE, s1x, s1y, s1z, s2x, s2y, s2z,
1516 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
1517 quadparam1, quadparam2, spinO, tideO, phaseO, approx);
1522 iRefPhi = ((
y->dimLength->data[1])<<1)-1;
1523 phiShift = phiRef -
y->data[iRefPhi];
1524 for(
i =
y->dimLength->data[1];
i <= iRefPhi;
i++)
1526 y->data[
i] += phiShift;
1536 m1, m2, fS, fE, s1x, s1y, s1z, s2x, s2y, s2z,
1537 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
1538 quadparam1, quadparam2, spinO, tideO, phaseO, approx);
1543 iRefPhi = ((
y->dimLength->data[1])<<1)-1;
1544 phiShift = phiRef -
y->data[
y->dimLength->data[1]];
1545 for(
i =
y->dimLength->data[1];
i <= iRefPhi;
i++)
1547 y->data[
i] += phiShift;
1558 m1, m2, fS, fE, s1x, s1y, s1z, s2x, s2y,
1559 s2z, lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
1560 quadparam1, quadparam2, spinO, tideO, phaseO, approx);
1564 phiShift = phiRef - yStart->
data[iRefPhi];
1567 yStart->
data[
i] += phiShift;
1574 m1, m2, fS, fE, s1x, s1y, s1z, s2x, s2y,
1575 s2z, lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
1576 quadparam1, quadparam2, spinO, tideO, phaseO, approx);
1579 iRefPhi = ((yEnd->dimLength->data[1])<<1)-1;
1580 phiShift = phiRef - yEnd->data[yEnd->dimLength->data[1]];
1581 for(
i = yEnd->dimLength->data[1];
i <= iRefPhi;
i++)
1583 yEnd->data[
i] += phiShift;
1593 iRefPhi = ((
y->dimLength->data[1])<<1)-1;
1594 phiShift = phiRef -
y->data[iRefPhi];
1595 for(
i =
y->dimLength->data[1];
i <= iRefPhi;
i++)
1597 y->data[
i] += phiShift;
1607 Msec =
M*
LAL_G_SI/(cSiDbl*cSiDbl*cSiDbl);
1609 UINT4 length =
y->dimLength->data[1];
1610 UINT4 nParams =
y->dimLength->data[0];
1613 const INT4 iMinKMax[11] = {
1634 -1./8. + I*(1./24.),
1635 -1./6. + I*(17./18.),
1636 13./16. + I*(-7./16.),
1637 -1./4. + I*(-1./20.),
1638 1./48. + I*(11./720.),
1639 -23./96. + I*(185./288.),
1640 209./240. + I*(-47./240.),
1641 -67./240. + I*(-41./240.),
1642 7./240. + I*(251./5040.),
1643 -1./960. + I*(-29./6720.),
1644 -23./120. + I*(1669./3600.),
1645 2393./2880. + I*(-3./64.),
1646 -323./1260. + I*(-43./168.),
1647 277./13440. + I*(659./8064.),
1648 13./15120. + I*(-23./2016.),
1649 -23./120960. + I*(143./201600.),
1650 -683./5400. + I*(16003./43200.),
1651 26041./33600. + I*(19./576.),
1652 -31./140. + I*(-4933./16128.),
1653 1847./362880. + I*(7541./72576.),
1654 139./25200. + I*(-437./24192.),
1655 -209./201600. + I*(12769./6652800.),
1656 1./14175. + I*(-23./228096.),
1657 -2153./30240. + I*(341101./1058400.),
1658 878963./1209600. + I*(36349./483840.),
1659 -343247./1814400. + I*(-121187./362880.),
1660 -40043./3628800. + I*(171209./1451520.),
1661 113557./9979200. + I*(-46247./1995840.),
1662 -19979./7983360. + I*(255173./79833600.),
1663 5909./19958400. + I*(-15427./51891840.),
1664 -643./39916800. + I*(20389./1452971520.),
1665 -1940303./67737600. + I*(6696113./22579200.),
1666 13123063./19051200. + I*(426691./4354560.),
1667 -17712403./108864000. + I*(-1523929./4354560.),
1668 -2542391./99792000. + I*(20431./161280.),
1669 8333153./479001600. + I*(-2568281./95800320.),
1670 -3389161./778377600. + I*(13435997./3113510400.),
1671 5033293./7264857600. + I*(-4129./7687680.),
1672 -235007./3405402000. + I*(200537./4358914560.),
1673 2882417./871782912000. + I*(-181./90574848.),
1674 662159./182891520. + I*(387137501./1371686400.),
1675 4022350847./6096384000. + I*(15021619./135475200.),
1676 -593412859./4191264000. + I*(-16734271./46569600.),
1677 -181044539./4790016000. + I*(379801511./2874009600.),
1678 359342129./15567552000. + I*(-461261./15724800.),
1679 -778483./121927680. + I*(50534819./9686476800.),
1680 6114053./4953312000. + I*(-12709559./16345929600.),
1681 -297352897./1743565824000. + I*(320849./3522355200.),
1682 511381./33530112000. + I*(-601231./82335052800.),
1683 -3471163./5230697472000. + I*(15721091./53353114214400.),
1684 1110580187./39191040000. + I*(1503012587./5486745600.),
1685 76930217647./120708403200. + I*(529444847./4470681600.),
1686 -10037362331./80472268800. + I*(-543929527./1490227200.),
1687 -12597360953./261534873600. + I*(35472685841./261534873600.),
1688 7393112329./261534873600. + I*(-50167081./1614412800.),
1689 -55307796493./6538371840000. + I*(578597./97843200.),
1690 3938740549./2092278988800. + I*(-94645351./95103590400.),
1691 -820761239./2540624486400. + I*(93730183./658680422400.),
1692 2169874009./53353114214400. + I*(-15647627./988020633600.),
1693 -178160027./53353114214400. + I*(1209449069/1013709170073600.),
1694 356885411./2667655710720000. + I*(-1686571./37544784076800.)
1705 gsl_spline *interp[nParams-1];
1706 gsl_interp_accel *accel = NULL;
1707 gsl_interp_accel *accel_k = NULL;
1708 gsl_spline* interp_t_of_f;
1711 INT4 kMaxCur = kMax;
1720 REAL8 dydt, T, phiOrb;
1726 REAL8 vCur, lnhatxCur, lnhatyCur, lnhatzCur, s1xCur, s1yCur, s1zCur, s2xCur,
1727 s2yCur, s2zCur, E1xCur, E1yCur, E1zCur, TCur;
1729 INT4 nHarmonic, minHarmonic, maxHarmonic;
1731 COMPLEX16 htPlusHarmonic, htCrossHarmonic, htPlusTemp, htCrossTemp, cPhase;
1734 REAL8 omegaHatISCO = 1./sqrt(216.);
1759 __func__, amplitudeO );
1769 UINT4 weHadAProblem = 0;
1771 accel = gsl_interp_accel_alloc();
1772 accel_k = gsl_interp_accel_alloc();
1773 interp_t_of_f = gsl_spline_alloc(gsl_interp_cspline,
1775 status = gsl_spline_init(interp_t_of_f, &
y->data[length*2],
1777 if(
status != GSL_SUCCESS)
1783 for(
i = 1;
i < nParams;
i++) {
1784 interp[
i-1] = gsl_spline_alloc(gsl_interp_cspline,
1786 status = gsl_spline_init(interp[
i-1],
y->data,
1787 &
y->data[length*
i], length);
1788 if(
status != GSL_SUCCESS)
1797 length =
y->dimLength->data[1];
1799 gsl_spline_free(interp_t_of_f);
1801 for(
i = 0;
i < nParams-1;
i++) {
1802 gsl_spline_free(interp[
i]);
1805 interp_t_of_f = gsl_spline_alloc(gsl_interp_cspline,
1807 status = gsl_spline_init(interp_t_of_f, &
y->data[length*2],
1809 if(
status != GSL_SUCCESS)
1811 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
1817 for(
i = 1;
i < nParams;
i++) {
1818 interp[
i-1] = gsl_spline_alloc(gsl_interp_cspline,
1820 status = gsl_spline_init(interp[
i-1],
y->data,
1821 &
y->data[length*
i], length);
1822 if(
status != GSL_SUCCESS)
1824 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
1832 status = gsl_spline_eval_e(interp_t_of_f, omegaHatISCO,
1834 if(
status != GSL_SUCCESS)
1837 tISCO =
y->data[length-1];
1844 status = gsl_spline_eval_e(interp_t_of_f, omegaHatMin,
1852 UINT4 nFreqSamples, iFirstSample;
1853 fMin = deltaF*floor(nextafter(fMin, INFINITY)/deltaF);
1856 nFreqSamples = (
UINT4)ceil((fMax - fMin)/deltaF);
1860 nFreqSamples = (
UINT4)ceil((fISCO - fMin)/deltaF);
1862 iFirstSample = fMin/deltaF;
1874 memset(hplustilde->
data->
data, 0,
sizeof(
COMPLEX16)*(iFirstSample+nFreqSamples));
1875 memset(hcrosstilde->
data->
data, 0,
sizeof(
COMPLEX16)*(iFirstSample+nFreqSamples));
1879 if(nFreqSamples < length)
1883 for(
i = 0, j = iFirstSample;
i < nFreqSamples;
i++, j++)
1887 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
1889 htPlusHarmonic = 0.;
1890 htCrossHarmonic = 0.;
1892 omegaHatCur = freqToOmegaHat*fCur/nHarmonic;
1894 status = gsl_spline_eval_e(interp_t_of_f, omegaHatCur,
1897 if(
status == GSL_SUCCESS)
1899 status = gsl_spline_eval_e(interp[14], tCur, accel,
1901 status = gsl_spline_eval_e(interp[0], tCur, accel,
1904 T = 1./sqrt(fabs(nHarmonic*dydt));
1907 iK = iMinKMax[kMaxCur];
1909 status = gsl_spline_eval_e(interp[1], tCur, accel_k,
1911 if(
status != GSL_SUCCESS)
1915 status = gsl_spline_eval_e(interp[2], tCur, accel_k,
1917 status = gsl_spline_eval_e(interp[3], tCur, accel_k,
1919 status = gsl_spline_eval_e(interp[4], tCur, accel_k,
1922 if(amplitudeO > 1 || amplitudeO == -1)
1924 status = gsl_spline_eval_e(interp[5], tCur, accel_k,
1926 status = gsl_spline_eval_e(interp[6], tCur, accel_k,
1928 status = gsl_spline_eval_e(interp[7], tCur, accel_k,
1930 status = gsl_spline_eval_e(interp[8], tCur, accel_k,
1932 status = gsl_spline_eval_e(interp[9], tCur, accel_k,
1934 status = gsl_spline_eval_e(interp[10], tCur,
1937 status = gsl_spline_eval_e(interp[11], tCur, accel_k,
1939 status = gsl_spline_eval_e(interp[12], tCur, accel_k,
1941 status = gsl_spline_eval_e(interp[13], tCur, accel_k,
1944 vCur = cbrt(omegaHatCur);
1947 &htCrossTemp, vCur, s1xCur, s1yCur, s1zCur, s2xCur, s2yCur, s2zCur,
1948 lnhatxCur, lnhatyCur, lnhatzCur, E1xCur, E1yCur, E1zCur, dm, eta,
1949 v0, nHarmonic, amplitudeO);
1951 htPlusHarmonic += akCsts[iK]*T*htPlusTemp;
1952 htCrossHarmonic += akCsts[iK]*T*htCrossTemp;
1954 for(k = 1, iK++; k <= kMaxCur; k++, iK++)
1958 status = gsl_spline_eval_e(interp[1], tK, accel_k,
1961 if(
status == GSL_SUCCESS)
1963 status = gsl_spline_eval_e(interp[2], tK, accel_k,
1965 status = gsl_spline_eval_e(interp[3], tK, accel_k,
1967 status = gsl_spline_eval_e(interp[4], tK, accel_k,
1970 if(amplitudeO > 1 || amplitudeO == -1)
1972 status = gsl_spline_eval_e(interp[5], tK,
1974 status = gsl_spline_eval_e(interp[6], tK,
1976 status = gsl_spline_eval_e(interp[7], tK,
1978 status = gsl_spline_eval_e(interp[8], tK,
1980 status = gsl_spline_eval_e(interp[9], tK,
1982 status = gsl_spline_eval_e(interp[10], tK,
1985 status = gsl_spline_eval_e(interp[11], tK,
1987 status = gsl_spline_eval_e(interp[12], tK,
1989 status = gsl_spline_eval_e(interp[13], tK,
1991 status = gsl_spline_eval_e(interp[14], tK,
1994 vCur = cbrt(omegaHatCur);
1995 TCur = 1./sqrt(fabs(nHarmonic*dydt));
1998 &htPlusTemp, &htCrossTemp, vCur, s1xCur, s1yCur, s1zCur,
1999 s2xCur, s2yCur, s2zCur, lnhatxCur, lnhatyCur, lnhatzCur, E1xCur,
2000 E1yCur, E1zCur, dm, eta, v0, nHarmonic, amplitudeO);
2002 htPlusHarmonic += akCsts[iK]*TCur*htPlusTemp;
2003 htCrossHarmonic += akCsts[iK]*TCur*htCrossTemp;
2008 status = gsl_spline_eval_e(interp[1], tK, accel_k,
2011 if(
status == GSL_SUCCESS)
2013 status = gsl_spline_eval_e(interp[2], tK,
2014 accel_k, &lnhatxCur);
2015 status = gsl_spline_eval_e(interp[3], tK,
2016 accel_k, &lnhatyCur);
2017 status = gsl_spline_eval_e(interp[4], tK,
2018 accel_k, &lnhatzCur);
2020 if(amplitudeO > 1 || amplitudeO == -1)
2022 status = gsl_spline_eval_e(interp[5], tK,
2024 status = gsl_spline_eval_e(interp[6], tK,
2026 status = gsl_spline_eval_e(interp[7], tK,
2028 status = gsl_spline_eval_e(interp[8], tK,
2030 status = gsl_spline_eval_e(interp[9], tK,
2032 status = gsl_spline_eval_e(interp[10], tK,
2035 status = gsl_spline_eval_e(interp[11], tK,
2037 status = gsl_spline_eval_e(interp[12], tK,
2039 status = gsl_spline_eval_e(interp[13], tK,
2041 status = gsl_spline_eval_e(interp[14], tK,
2044 vCur = cbrt(omegaHatCur);
2045 TCur = 1./sqrt(fabs(nHarmonic*dydt));
2048 &htPlusTemp, &htCrossTemp, vCur, s1xCur, s1yCur, s1zCur, s2xCur,
2049 s2yCur, s2zCur, lnhatxCur, lnhatyCur, lnhatzCur, E1xCur, E1yCur,
2050 E1zCur, dm, eta, v0, nHarmonic, amplitudeO);
2052 htPlusHarmonic += akCsts[iK]*TCur*htPlusTemp;
2053 htCrossHarmonic += akCsts[iK]*TCur*htCrossTemp;
2058 cPhase = prefac*cexp(I*(freqToOmegaHat*fCur*(tCur - tISCO) - nHarmonic*phiOrb
2060 hplustilde->
data->
data[j] += conj(htPlusHarmonic*cPhase);
2061 hcrosstilde->
data->
data[j] += conj(htCrossHarmonic*cPhase);
2079 gsl_spline *interpHPlusRe[5];
2080 gsl_spline *interpHPlusIm[5];
2081 gsl_spline *interpHCrossRe[5];
2082 gsl_spline *interpHCrossIm[5];
2083 gsl_spline *interpPhase[5];
2084 gsl_spline *interpT[5];
2086 for(
i = 0;
i < length;
i++)
2089 omegaHatCur =
y->data[2*length+
i];
2090 vCur = cbrt(omegaHatCur);
2091 phiOrb =
y->data[length+
i];
2092 dydt =
y->data[15*length+
i];
2095 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
2097 freq->
data[length*(nHarmonic-1)+
i] = nHarmonic*omegaHatCur/
2099 phase->
data[length*(nHarmonic-1)+
i] = nHarmonic*(omegaHatCur*(tCur - tISCO)
2101 TArray->
data[length*(nHarmonic-1)+
i] = 1./sqrt(fabs(nHarmonic*dydt));
2104 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
2106 lnhatxCur =
y->data[3*length+
i];
2107 lnhatyCur =
y->data[4*length+
i];
2108 lnhatzCur =
y->data[5*length+
i];
2110 if(amplitudeO > 1 || amplitudeO == -1)
2112 s1xCur =
y->data[6*length+
i];
2113 s1yCur =
y->data[7*length+
i];
2114 s1zCur =
y->data[8*length+
i];
2115 s2xCur =
y->data[9*length+
i];
2116 s2yCur =
y->data[10*length+
i];
2117 s2zCur =
y->data[11*length+
i];
2119 E1xCur =
y->data[12*length+
i];
2120 E1yCur =
y->data[13*length+
i];
2121 E1zCur =
y->data[14*length+
i];
2124 &htCrossTemp, vCur, s1xCur, s1yCur, s1zCur, s2xCur, s2yCur, s2zCur,
2125 lnhatxCur, lnhatyCur, lnhatzCur, E1xCur, E1yCur, E1zCur, dm, eta, v0,
2126 nHarmonic, amplitudeO);
2128 htPlusHarmonic = (prefac*TArray->
data[length*(nHarmonic-1)+
i])*
2130 htCrossHarmonic = (prefac*TArray->
data[length*(nHarmonic-1)+
i])*
2134 hPlusAmpRe->
data[length*(nHarmonic-1)+
i] = creal(htPlusHarmonic);
2135 hPlusAmpIm->
data[length*(nHarmonic-1)+
i] = cimag(htPlusHarmonic);
2136 hCrossAmpRe->
data[length*(nHarmonic-1)+
i] = creal(htCrossHarmonic);
2137 hCrossAmpIm->
data[length*(nHarmonic-1)+
i] = cimag(htCrossHarmonic);
2142 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
2144 interpHPlusRe[nHarmonic-1] =
2145 gsl_spline_alloc(gsl_interp_cspline, length);
2146 status = gsl_spline_init(interpHPlusRe[nHarmonic-1],
2147 y->data, &hPlusAmpRe->
data[length*(nHarmonic-1)], length);
2148 if(
status != GSL_SUCCESS)
2150 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2155 interpHPlusIm[nHarmonic-1] =
2156 gsl_spline_alloc(gsl_interp_cspline, length);
2157 status = gsl_spline_init(interpHPlusIm[nHarmonic-1],
2158 y->data, &hPlusAmpIm->
data[length*(nHarmonic-1)], length);
2159 if(
status != GSL_SUCCESS)
2161 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2166 interpHCrossRe[nHarmonic-1] =
2167 gsl_spline_alloc(gsl_interp_cspline, length);
2168 status = gsl_spline_init(interpHCrossRe[nHarmonic-1],
2169 y->data, &hCrossAmpRe->
data[length*(nHarmonic-1)], length);
2170 if(
status != GSL_SUCCESS)
2172 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2177 interpHCrossIm[nHarmonic-1] =
2178 gsl_spline_alloc(gsl_interp_cspline, length);
2179 status = gsl_spline_init(interpHCrossIm[nHarmonic-1],
2180 y->data, &hCrossAmpIm->
data[length*(nHarmonic-1)], length);
2181 if(
status != GSL_SUCCESS)
2183 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2188 interpPhase[nHarmonic-1] =
2189 gsl_spline_alloc(gsl_interp_cspline, length);
2190 status = gsl_spline_init(interpPhase[nHarmonic-1],
2191 &freq->
data[length*(nHarmonic-1)], &phase->
data[length*(nHarmonic-1)],
2193 if(
status != GSL_SUCCESS)
2195 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2200 interpT[nHarmonic-1] =
2201 gsl_spline_alloc(gsl_interp_cspline, length);
2202 status = gsl_spline_init(interpT[nHarmonic-1],
2203 &freq->
data[length*(nHarmonic-1)], &TArray->
data[length*(nHarmonic-1)],
2205 if(
status != GSL_SUCCESS)
2207 XLALPrintError(
"XLAL Error - %s: spline interpolation returned with error code %d\n",
2214 REAL8 htPlusRe = 0.;
2215 REAL8 htPlusIm = 0.;
2216 REAL8 htCrossRe = 0.;
2217 REAL8 htCrossIm = 0.;
2219 for(
i = 0, j = iFirstSample;
i < nFreqSamples;
i++, j++)
2223 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
2225 omegaHatCur = freqToOmegaHat*fCur/nHarmonic;
2227 status = gsl_spline_eval_e(interp_t_of_f, omegaHatCur,
2230 if(
status == GSL_SUCCESS)
2232 status = gsl_spline_eval_e(interpPhase[nHarmonic-1],
2234 status = gsl_spline_eval_e(interpT[nHarmonic-1],
2238 iK = iMinKMax[kMaxCur];
2240 status = gsl_spline_eval_e(interpHPlusRe[nHarmonic-1], tCur,
2241 accel_k, &htPlusRe);
2242 status = gsl_spline_eval_e(interpHPlusIm[nHarmonic-1], tCur,
2243 accel_k, &htPlusIm);
2244 status = gsl_spline_eval_e(interpHCrossRe[nHarmonic-1], tCur,
2245 accel_k, &htCrossRe);
2246 status = gsl_spline_eval_e(interpHCrossIm[nHarmonic-1], tCur,
2247 accel_k, &htCrossIm);
2249 htPlusHarmonic = akCsts[iK]*(htPlusRe + I*htPlusIm);
2250 htCrossHarmonic = akCsts[iK]*(htCrossRe + I*htCrossIm);
2252 for(k = 1, iK++; k <= kMaxCur; k++, iK++)
2257 gsl_spline_eval_e(interpHPlusRe[nHarmonic-1], tK,
2258 accel_k, &htPlusRe);
2260 if(
status == GSL_SUCCESS)
2263 gsl_spline_eval_e(interpHPlusIm[nHarmonic-1], tK,
2264 accel_k, &htPlusIm);
2266 gsl_spline_eval_e(interpHCrossRe[nHarmonic-1], tK, accel_k,
2269 gsl_spline_eval_e(interpHCrossIm[nHarmonic-1], tK, accel_k,
2272 htPlusHarmonic += akCsts[iK]*(htPlusRe + I*htPlusIm);
2273 htCrossHarmonic += akCsts[iK]*(htCrossRe + I*htCrossIm);
2278 status = gsl_spline_eval_e(interpHPlusRe[nHarmonic-1], tK,
2279 accel_k, &htPlusRe);
2281 if(
status == GSL_SUCCESS)
2283 status = gsl_spline_eval_e(interpHPlusIm[nHarmonic-1], tK,
2284 accel_k, &htPlusIm);
2285 status = gsl_spline_eval_e(interpHCrossRe[nHarmonic-1], tK,
2286 accel_k, &htCrossRe);
2287 status = gsl_spline_eval_e(interpHCrossIm[nHarmonic-1], tK,
2288 accel_k, &htCrossIm);
2290 htPlusHarmonic += akCsts[iK]*(htPlusRe + I*htPlusIm);
2291 htCrossHarmonic += akCsts[iK]*(htCrossRe + I*htCrossIm);
2295 cPhase = cexp(I*Psi);
2297 hplustilde->
data->
data[j] += conj(htPlusHarmonic*cPhase);
2298 hcrosstilde->
data->
data[j] += conj(htCrossHarmonic*cPhase);
2303 for(nHarmonic = minHarmonic; nHarmonic <= maxHarmonic; nHarmonic++)
2305 gsl_spline_free(interpHPlusRe[nHarmonic-1]);
2306 gsl_spline_free(interpHPlusIm[nHarmonic-1]);
2307 gsl_spline_free(interpHCrossRe[nHarmonic-1]);
2308 gsl_spline_free(interpHCrossIm[nHarmonic-1]);
2309 gsl_spline_free(interpT[nHarmonic-1]);
2310 gsl_spline_free(interpPhase[nHarmonic-1]);
2324 gsl_interp_accel_free(accel);
2325 gsl_interp_accel_free(accel_k);
2326 gsl_spline_free(interp_t_of_f);
2328 for(
i = 0;
i < nParams-1;
i++) {
2329 gsl_spline_free(interp[
i]);
2346 const REAL8 LNhdotS1,
2347 const REAL8 LNhdotS2,
2350 const REAL8 S1dotS2)
2357 switch(
params->spinO ) {
2360 *Espin7 +=
params->E7S1O * LNhdotS1 +
params->E7S2O * LNhdotS2;
2361 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2365 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2370 *Espin6 +=
params->E6S1S2Avg*S1dotS2 +
params->E6S1OS2OAvg*LNhdotS1*LNhdotS2
2373 + (
params->E6S1OS1OAvg +
params->E6QMS1OS1OAvg)*LNhdotS1*LNhdotS1 +
2374 + (
params->E6S2OS2OAvg +
params->E6QMS2OS2OAvg)*LNhdotS2*LNhdotS2;
2375 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2383 *Espin5 +=
params->E5S1O * LNhdotS1 +
params->E5S2O * LNhdotS2;
2384 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2389 *Espin4 +=
params->E4S1S2Avg * S1dotS2 +
params->E4S1OS2OAvg * LNhdotS1 * LNhdotS2;
2393 *Espin4 +=
params->E4QMS1S1Avg * S1sq +
params->E4QMS2S2Avg * S2sq
2394 +
params->E4QMS1OS1OAvg * LNhdotS1 * LNhdotS1
2395 +
params->E4QMS2OS2OAvg * LNhdotS2 * LNhdotS2;
2396 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2401 *Espin3 +=
params->E3S1O * LNhdotS1 +
params->E3S2O * LNhdotS2;
2402 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2411 __func__,
params->spinO );
2429 const double values[],
2434 REAL8 omega, v, test, omegaStart, omegaEnd, ddomega;
2435 REAL8 LNhx, LNhy, LNhz, S1x, S1y, S1z, S2x, S2y, S2z;
2436 REAL8 LNhdotS1, LNhdotS2, S1dotS2, S1sq, S2sq;
2448 LNhx = values[2]; LNhy = values[3]; LNhz = values[4] ;
2449 S1x = values[5]; S1y = values[6]; S1z = values[7] ;
2450 S2x = values[8]; S2y = values[9]; S2z = values[10];
2451 LNhdotS1 =
cdot(LNhx,LNhy,LNhz,S1x,S1y,S1z);
2452 LNhdotS2 =
cdot(LNhx,LNhy,LNhz,S2x,S2y,S2z);
2453 S1sq =
normsq(S1x,S1y,S1z);
2454 S2sq =
normsq(S2x,S2y,S2z);
2455 S1dotS2 =
cdot(S1x,S1y,S1z,S2x,S2y,S2z);
2462 XLALSimInspiralSetEnergyPNTermsAvg(&Espin3,&Espin4,&Espin5,&Espin6,&Espin7,
params,LNhdotS1,LNhdotS2,S1sq,S2sq,S1dotS2);
2471 test = 2. + v * v * ( 4. *
params->Ecoeff[2]
2472 + v * ( 5. * (
params->Ecoeff[3] + Espin3)
2473 + v * ( 6. * (
params->Ecoeff[4] + Espin4)
2474 + v * ( 7. * (
params->Ecoeff[5] + Espin5)
2475 + v * ( 8. * (
params->Ecoeff[6] + Espin6)
2476 + v * ( 9. * (
params->Ecoeff[7] + Espin7)
2477 + v * v * v * ( 12. *
params->Etidal10
2478 + v * v * ( 14. *
params->Etidal12 ) ) ) ) ) ) ) );
2480 ddomega = dvalues[1] -
params->prev_domega;
2483 &&
params->prev_domega != 0.)
2486 params->prev_domega = dvalues[1];
2489 && omega > omegaEnd)
2491 else if( fabs(omegaEnd) >
LAL_REAL4_EPS && omegaEnd < omegaStart
2492 && omega < omegaEnd)
2494 else if (test < 0.0)
2496 else if (isnan(omega))
2500 else if (ddomega <= 0.)
2525 return -0.25*(OmS1*OmS1*(S1sq-LNhS1*LNhS1)+OmS2*OmS2*(S2sq-LNhS2*LNhS2)+2.*OmS1*OmS2*(S1S2-LNhS1*LNhS2));
2542 const REAL8 values[],
2548 REAL8 LNhx, LNhy, LNhz, E1x, E1y, E1z, S1x, S1y, S1z, S2x, S2y, S2z;
2549 REAL8 omega, domega, dLNhx, dLNhy, dLNhz, dE1x, dE1y, dE1z;
2550 REAL8 dS1x, dS1y, dS1z, dS2x, dS2y, dS2z;
2553 REAL8 LNhdotS1, LNhdotS2, S1dotS2, S1sq, S2sq;
2554 REAL8 wspin3 = 0., wspin4Avg = 0., wspin5 = 0., wspin6Avg=0.;
2561 LNhx = values[2] ; LNhy = values[3] ; LNhz = values[4] ;
2562 S1x = values[5] ; S1y = values[6] ; S1z = values[7] ;
2563 S2x = values[8] ; S2y = values[9] ; S2z = values[10];
2564 E1x = values[11]; E1y = values[12] ; E1z = values[13];
2573 v11= omega*omega*omega*v2;
2575 LNhdotS1 =
cdot(LNhx,LNhy,LNhz,S1x,S1y,S1z);
2576 LNhdotS2 =
cdot(LNhx,LNhy,LNhz,S2x,S2y,S2z);
2577 S1dotS2 =
cdot(S1x,S1y,S1z,S2x,S2y,S2z);
2578 S1sq =
cdot(S1x,S1y,S1z,S1x,S1y,S1z);
2579 S2sq =
cdot(S2x,S2y,S2z,S2x,S2y,S2z);
2599 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2603 wspin6Avg =
params->wdot6S1O * LNhdotS1 +
params->wdot6S2O * LNhdotS2
2604 +
params->wdot6S1OS2OAvg*LNhdotS1*LNhdotS2 +
params->wdot6S1S2Avg*S1dotS2
2606 + (
params->wdot6S1OS1OAvg +
params->wdot6QMS1OS1OAvg)*LNhdotS1*LNhdotS1
2607 + (
params->wdot6S2OS2OAvg +
params->wdot6QMS2OS2OAvg)*LNhdotS2*LNhdotS2;
2608 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2616 wspin5 =
params->wdot5S1O*LNhdotS1 +
params->wdot5S2O*LNhdotS2;
2617 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2621 wspin4Avg =
params->wdot4S1S2Avg * S1dotS2 +
params->wdot4S1OS2OAvg * LNhdotS1 * LNhdotS2;
2624 wspin4Avg += (
params->wdot4S1S1Avg +
params->wdot4QMS1S1Avg) * S1sq
2625 + (
params->wdot4S2S2Avg +
params->wdot4QMS2S2Avg) * S2sq
2626 + (
params->wdot4S1OS1OAvg +
params->wdot4QMS1OS1OAvg) * LNhdotS1 * LNhdotS1
2627 + (
params->wdot4S2OS2OAvg +
params->wdot4QMS2OS2OAvg) * LNhdotS2 * LNhdotS2;
2628 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2633 wspin3 =
params->wdot3S1O*LNhdotS1 +
params->wdot3S2O*LNhdotS2;
2634 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2643 __func__,
params->spinO );
2648 domega =
params->wdotnewt * v11 * (
params->wdotcoeff[0]
2649 + v * (
params->wdotcoeff[1]
2650 + v * (
params->wdotcoeff[2]
2651 + v * (
params->wdotcoeff[3] + wspin3
2652 + v * (
params->wdotcoeff[4] + wspin4Avg
2653 + v * (
params->wdotcoeff[5] + wspin5
2654 + v * (
params->wdotcoeff[6] + wspin6Avg
2655 +
params->wdotlogcoeff * log(v)
2656 + v * (
params->wdotcoeff[7]
2657 + omega * (
params->wdottidal10
2658 + v2 * (
params->wdottidal12 ) ) ) ) ) ) ) ) ) );
2660 XLALSimInspiralSpinDerivativesAvg(&dLNhx,&dLNhy,&dLNhz,&dE1x,&dE1y,&dE1z,&dS1x,&dS1y,&dS1z,&dS2x,&dS2y,&dS2z,v,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,LNhdotS1,LNhdotS2,
params);
2663 dvalues[0] = omega*(1.+omega*omega*
omegashift(S1sq,S2sq,S1dotS2,LNhdotS1,LNhdotS2,
params->omegashiftS1,
params->omegashiftS2));
2664 dvalues[1] = domega;
2665 dvalues[2] = dLNhx; dvalues[3] = dLNhy ; dvalues[4] = dLNhz;
2666 dvalues[5] = dS1x ; dvalues[6] = dS1y ; dvalues[7] = dS1z ;
2667 dvalues[8] = dS2x ; dvalues[9] = dS2y ; dvalues[10] = dS2z ;
2668 dvalues[11] = dE1x ; dvalues[12] = dE1y ; dvalues[13] = dE1z ;
2687 const double values[],
2693 REAL8 LNhx, LNhy, LNhz, S1x, S1y, S1z, S2x, S2y, S2z,E1x,E1y,E1z;
2694 REAL8 omega, domega, dLNhx, dLNhy, dLNhz, dE1x, dE1y, dE1z;
2695 REAL8 dS1x, dS1y, dS1z, dS2x, dS2y, dS2z;
2698 REAL8 v, v2, v3, v4, v7, v11;
2699 REAL8 LNhdotS1, LNhdotS2, S1dotS2, S1sq, S2sq;
2700 REAL8 Fspin3 = 0., Fspin4Avg = 0., Fspin5 = 0., Fspin6Avg = 0.;
2701 REAL8 Espin3 = 0., Espin4Avg = 0., Espin5 = 0., Espin6Avg = 0., Espin7 = 0.;
2708 LNhx = values[2] ; LNhy = values[3] ; LNhz = values[4] ;
2709 S1x = values[5] ; S1y = values[6] ; S1z = values[7] ;
2710 S2x = values[8] ; S2y = values[9] ; S2z = values[10];
2711 E1x = values[11]; E1y = values[12]; E1z = values[13];
2719 v2 = v * v; v3 = v2 * v; v4 = v3 * v;
2720 v7 = v4 * v3; v11 = v7 * v4;
2722 LNhdotS1 = (LNhx*S1x + LNhy*S1y + LNhz*S1z);
2723 LNhdotS2 = (LNhx*S2x + LNhy*S2y + LNhz*S2z);
2724 S1dotS2 = (S1x*S2x + S1y*S2y + S1z*S2z );
2725 S1sq = (S1x*S1x + S1y*S1y + S1z*S1z);
2726 S2sq = (S2x*S2x + S2y*S2y + S2z*S2z);
2727 S1dotS2 = (S1x*S2x + S1y*S2y + S1z*S2z);
2747 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2751 Fspin6Avg =
params->F6S1S2Avg*S1dotS2 +
params->F6S1OS2OAvg * LNhdotS1*LNhdotS2;
2752 Fspin6Avg+= (
params->F6S1S1Avg +
params->F6QMS1S1Avg) * S1sq
2754 + (
params->F6S1OS1OAvg +
params->F6QMS1OS1OAvg)* LNhdotS1 * LNhdotS1
2755 + (
params->F6S2OS2OAvg +
params->F6QMS2OS2OAvg)* LNhdotS2 * LNhdotS2;
2756 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2764 Fspin5 +=
params->F5S1O*LNhdotS1 +
params->F5S2O*LNhdotS2;
2765 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2769 Fspin4Avg +=
params->F4S1S2Avg*S1dotS2 +
params->F4S1OS2OAvg * LNhdotS1*LNhdotS2;
2771 Fspin4Avg += (
params->F4S1S1Avg +
params->F4QMS1S1Avg) * S1sq
2773 + (
params->F4S1OS1OAvg +
params->F4QMS1OS1OAvg)* LNhdotS1 * LNhdotS1
2774 + (
params->F4S2OS2OAvg +
params->F4QMS2OS2OAvg)* LNhdotS2 * LNhdotS2;
2775 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2780 Fspin3 =
params->F3S1O*LNhdotS1 +
params->F3S2O*LNhdotS2;
2781 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2790 __func__,
params->spinO );
2794 XLALSimInspiralSetEnergyPNTermsAvg(&Espin3,&Espin4Avg,&Espin5,&Espin6Avg,&Espin7,
params,LNhdotS1,LNhdotS2,S1sq,S2sq,S1dotS2);
2796 XLALSimInspiralSpinDerivativesAvg(&dLNhx,&dLNhy,&dLNhz,&dE1x,&dE1y,&dE1z,&dS1x,&dS1y,&dS1z,&dS2x,&dS2y,&dS2z,v,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,LNhdotS1,LNhdotS2,
params);
2799 (((( 1. + v * v * (
params->Fcoeff[2]
2800 + v * ( (
params->Fcoeff[3] + Fspin3 )
2801 + v * ( (
params->Fcoeff[4] + Fspin4Avg )
2802 + v * ( (
params->Fcoeff[5] + Fspin5)
2803 + v * ( (
params->Fcoeff[6] + Fspin6Avg+
params->Flogcoeff*log(v))
2804 + v * ( (
params->Fcoeff[7])
2805 + v * v * v * (
params->Ftidal10
2806 + v * v * (
params->Ftidal12 ) ) )))))))))/
2807 ( 2. + v * v * ( 4. *
params->Ecoeff[2]
2808 + v * (( 5. * (
params->Ecoeff[3] + Espin3 ))
2809 + v * (( 6. * (
params->Ecoeff[4] + Espin4Avg ))
2810 + v * (( 7. * (
params->Ecoeff[5] + Espin5 ))
2811 + v * (( 8. * (
params->Ecoeff[6] + Espin6Avg ))
2812 + v * ( (9. * (
params->Ecoeff[7] ) )
2813 + v * v * v * (( 12. *
params->Etidal10)
2814 + v * v * ( 14. *
params->Etidal12 ) )
2818 dvalues[0] = omega*(1.+omega*omega*
omegashift(S1sq,S2sq,S1dotS2,LNhdotS1,LNhdotS2,
params->omegashiftS1,
params->omegashiftS2));
2819 dvalues[1] = domega;
2820 dvalues[2] = dLNhx; dvalues[3] = dLNhy ; dvalues[4] = dLNhz;
2821 dvalues[5] = dS1x ; dvalues[6] = dS1y ; dvalues[7] = dS1z ;
2822 dvalues[8] = dS2x ; dvalues[9] = dS2y ; dvalues[10] = dS2z ;
2823 dvalues[11] = dE1x ; dvalues[12] = dE1y ; dvalues[13] = dE1z ;
2842 const double values[],
2848 REAL8 LNhx, LNhy, LNhz, S1x, S1y, S1z, S2x, S2y, S2z, E1x, E1y, E1z;
2849 REAL8 omega, domega, dLNhx, dLNhy, dLNhz,dE1x,dE1y,dE1z;
2850 REAL8 dS1x, dS1y, dS1z, dS2x, dS2y, dS2z;
2854 REAL8 LNhdotS1, LNhdotS2, S1dotS2, S1sq, S2sq;
2855 REAL8 wspin3 = 0., wspin4Avg = 0., wspin5 = 0., wspin6Avg = 0.;
2862 LNhx = values[2] ; LNhy = values[3] ; LNhz = values[4] ;
2863 S1x = values[5] ; S1y = values[6] ; S1z = values[7] ;
2864 S2x = values[8] ; S2y = values[9] ; S2z = values[10];
2865 E1x = values[11]; E1y = values[12]; E1z = values[13];
2873 v11=omega*omega*omega*v*v;
2875 LNhdotS1 = (LNhx*S1x + LNhy*S1y + LNhz*S1z);
2876 LNhdotS2 = (LNhx*S2x + LNhy*S2y + LNhz*S2z);
2877 S1dotS2 = (S1x*S2x + S1y*S2y + S1z*S2z );
2878 S1sq = (S1x*S1x + S1y*S1y + S1z*S1z);
2879 S2sq = (S2x*S2x + S2y*S2y + S2z*S2z);
2899 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2903 wspin6Avg =
params->wdot6S1O*LNhdotS1 +
params->wdot6S2O*LNhdotS2
2904 +
params->wdot6S1S2Avg*S1dotS2 +
params->wdot6S1OS2OAvg*LNhdotS1*LNhdotS2
2907 + (
params->wdot6S1OS1OAvg +
params->wdot6QMS1OS1OAvg)*LNhdotS1*LNhdotS1 +
2908 + (
params->wdot6S2OS2OAvg +
params->wdot6QMS2OS2OAvg)*LNhdotS2*LNhdotS2;
2909 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2917 wspin5 =
params->wdot5S1O*LNhdotS1 +
params->wdot5S2O*LNhdotS2;
2918 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2922 wspin4Avg =
params->wdot4S1S2Avg *S1dotS2 +
params->wdot4S1OS2OAvg *LNhdotS1 * LNhdotS2;
2926 wspin4Avg += (
params->wdot4S1S1Avg +
params->wdot4QMS1S1Avg) * S1sq
2927 + (
params->wdot4S2S2Avg +
params->wdot4QMS2S2Avg) * S2sq
2928 + (
params->wdot4S1OS1OAvg +
params->wdot4QMS1OS1OAvg) * LNhdotS1 * LNhdotS1
2929 + (
params->wdot4S2OS2OAvg +
params->wdot4QMS2OS2OAvg) * LNhdotS2 * LNhdotS2;
2930 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2935 wspin3 =
params->wdot3S1O*LNhdotS1 +
params->wdot3S2O*LNhdotS2;
2936 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
2945 __func__,
params->spinO );
2950 domega =
params->wdotnewt * v11 / (
params->wdotcoeff[0]
2951 + v * (
params->wdotcoeff[1]
2952 + v * (
params->wdotcoeff[2]
2953 + v * (
params->wdotcoeff[3] + wspin3
2954 + v * (
params->wdotcoeff[4] + wspin4Avg
2955 + v * (
params->wdotcoeff[5] + wspin5
2956 + v * (
params->wdotcoeff[6] + wspin6Avg
2957 +
params->wdotlogcoeff * log(v)
2958 + v * (
params->wdotcoeff[7]
2959 + omega * (
params->wdottidal10
2960 + v*v * (
params->wdottidal12 ) ) ) ) ) ) ) ) ) );
2962 XLALSimInspiralSpinDerivativesAvg(&dLNhx,&dLNhy,&dLNhz,&dE1x,&dE1y,&dE1z,&dS1x,&dS1y,&dS1z,&dS2x,&dS2y,&dS2z,v,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,LNhdotS1,LNhdotS2,
params);
2965 dvalues[0] = omega*(1.+omega*omega*
omegashift(S1sq,S2sq,S1dotS2,LNhdotS1,LNhdotS2,
params->omegashiftS1,
params->omegashiftS2));
2966 dvalues[1] = domega;
2967 dvalues[2] = dLNhx; dvalues[3] = dLNhy ; dvalues[4] = dLNhz;
2968 dvalues[5] = dS1x ; dvalues[6] = dS1y ; dvalues[7] = dS1z ;
2969 dvalues[8] = dS2x ; dvalues[9] = dS2y ; dvalues[10] = dS2z ;
2970 dvalues[11] = dE1x ; dvalues[12] = dE1y ; dvalues[13] = dE1z ;
2984 memcpy(start->
data->
data + origlen,
end->data->data+1,
2985 (
end->data->length-1)*
sizeof(
REAL8));
3069 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*h+) is expected to be NULL; got %p\n",*hplus);
3074 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*hx) is expected to be NULL; got %p\n",*hcross);
3079 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*Phiout) is expected to be NULL; got %p\n",*Phiout);
3084 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S1xout) is expected to be NULL; got %p\n",*S1xout);
3089 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S1yout) is expected to be NULL; got %p\n",*S1yout);
3094 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S1zout) is expected to be NULL; got %p\n",*S1zout);
3099 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S2xout) is expected to be NULL; got %p\n",*S2xout);
3104 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S2yout) is expected to be NULL; got %p\n",*S2yout);
3109 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*S2zout) is expected to be NULL; got %p\n",*S2zout);
3114 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*LNhxout) is expected to be NULL; got %p\n",*LNhxout);
3119 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*LNhyout) is expected to be NULL; got %p\n",*LNhyout);
3124 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*LNhzout) is expected to be NULL; got %p\n",*LNhzout);
3129 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*E1xout) is expected to be NULL; got %p\n",*E1xout);
3134 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*E1yout) is expected to be NULL; got %p\n",*E1yout);
3139 XLALPrintError(
"** LALSimIMRPSpinInspiralRD ERROR **: (*E1zout) is expected to be NULL; got %p\n",*E1zout);
3147 REAL8 fS, fE, phiShift;
3165 REAL8 e1xp,e1yp,e1zp,e1xphi,e1yphi,e1zphi,lxy;
3173 REAL8 iota=atan2(lxy,lnhatz);
3175 e1xp=e1xtmp*cos(iota)-e1ztmp*sin(iota);
3176 e1zp=e1ztmp*cos(iota)+e1xtmp*sin(iota);
3180 e1xp=e1xtmp*cos(phiRef)-e1ytmp*sin(phiRef);
3181 e1yp=e1ytmp*cos(phiRef)+e1xtmp*sin(phiRef);
3185 e1xp=e1xtmp*cos(iota)+e1ztmp*sin(iota);
3186 e1zp=e1ztmp*cos(iota)-e1xtmp*sin(iota);
3197 if( fRef != 0. && fRef < fStart )
3199 XLALPrintError(
"XLAL Error - %s: fRef = %f must be > fStart = %f\n",
3200 __func__, fRef, fStart);
3205 XLALPrintError(
"XLAL Error - %s: fRef = %f must be < Schwar. ISCO=%f\n",
3206 __func__, fRef, fISCO);
3216 &S1x, &S1y, &S1z, &S2x, &S2y, &S2z,
3217 &LNhatx, &LNhaty, &LNhatz, &E1x, &E1y, &E1z,
3218 deltaT, m1_SI, m2_SI, fS, fE, s1x, s1y, s1z, s2x, s2y, s2z,
3219 lnhatx, lnhaty, lnhatz, e1xphi, e1yphi, e1zphi, lambda1, lambda2,
3220 quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, approx);
3236 &S1x, &S1y, &S1z, &S2x, &S2y, &S2z,
3237 &LNhatx, &LNhaty, &LNhatz, &E1x, &E1y, &E1z,
3238 deltaT, m1_SI, m2_SI, fS, fE, s1x, s1y, s1z, s2x, s2y, s2z,
3239 lnhatx, lnhaty, lnhatz, e1xphi, e1yphi, e1zphi, lambda1, lambda2,
3240 quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, approx);
3259 &S1x, &S1y, &S1z, &S2x, &S2y, &S2z,
3260 &LNhatx, &LNhaty, &LNhatz, &E1x, &E1y, &E1z,
3261 deltaT, m1_SI, m2_SI, fS, fE, s1x, s1y, s1z, s2x, s2y, s2z,
3262 lnhatx, lnhaty, lnhatz, e1xphi, e1yphi, e1zphi, lambda1, lambda2,
3263 quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, approx);
3277 REAL8TimeSeries *V1=NULL, *Phi1=NULL, *S1x1=NULL, *S1y1=NULL, *S1z1=NULL, *S2x1=NULL, *S2y1=NULL, *S2z1=NULL;
3278 REAL8TimeSeries *LNhatx1=NULL, *LNhaty1=NULL, *LNhatz1=NULL, *E1x1=NULL, *E1y1=NULL, *E1z1=NULL;
3279 REAL8TimeSeries *V2=NULL, *Phi2=NULL, *S1x2=NULL, *S1y2=NULL, *S1z2=NULL, *S2x2=NULL, *S2y2=NULL, *S2z2=NULL;
3280 REAL8TimeSeries *LNhatx2=NULL, *LNhaty2=NULL, *LNhatz2=NULL, *E1x2=NULL, *E1y2=NULL, *E1z2=NULL;
3286 &S1x1, &S1y1, &S1z1, &S2x1, &S2y1, &S2z1,
3287 &LNhatx1, &LNhaty1, &LNhatz1, &E1x1, &E1y1, &E1z1,
3288 deltaT, m1_SI, m2_SI, fS, fE, s1x, s1y, s1z, s2x, s2y,
3289 s2z, lnhatx, lnhaty, lnhatz, e1xphi, e1yphi, e1zphi, lambda1, lambda2,
3290 quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, approx);
3297 phiShift = - Phi1->data->data[Phi1->data->length-1];
3299 for(
i=0;
i < Phi1->data->length;
i++)
3301 Phi1->data->data[
i] += phiShift;
3308 &S1x2, &S1y2, &S1z2, &S2x2, &S2y2, &S2z2,
3309 &LNhatx2, &LNhaty2, &LNhatz2, &E1x2, &E1y2, &E1z2,
3310 deltaT, m1_SI, m2_SI, fS, fE, s1x, s1y, s1z, s2x, s2y,
3311 s2z, lnhatx, lnhaty, lnhatz, e1xphi, e1yphi, e1zphi, lambda1, lambda2,
3312 quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, approx);
3319 phiShift = - Phi2->data->data[0];
3321 for(
i=0;
i < Phi2->data->length;
i++)
3323 Phi2->data->data[
i] += phiShift;
3344 if (hplus && hcross) {
3346 V, Phi, S1x, S1y, S1z, S2x, S2y, S2z, LNhatx, LNhaty, LNhatz,
3347 E1x, E1y, E1z, m1_SI, m2_SI,
r, ampO);
3460 return XLALSimInspiralSpinTaylorDriver(NULL,NULL,Vout,Phiout,S1xout,S1yout,S1zout,S2xout,S2yout,S2zout,LNhxout,LNhyout,LNhzout,E1xout,E1yout,E1zout,phiRef,
deltaT,m1_SI,m2_SI,fStart,fRef,1.,s1x,s1y,s1z,s2x,s2y,s2z,lnhatx,lnhaty,lnhatz,e1x,e1y,e1z,LALparams,approx);
3482 LALValue *modearray )
3489 INT4 act, errCode=0;
3490 if ( modearray == NULL )
3491 for (
l=2;
l<=lmax;
l++)
3494 for (
l=2;
l <= lmax;
l++) {
3500 }
while ( (
m<(
INT4)
l) && (act==0) );
3504 for (
l=2;
l<=lmax;
l++) {
3508 errCode=
XLALSimInspiralSpinPNMode2m(&hlm_tmp,
V,Phi,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,m1_SI,m2_SI,dist_SI,ampO);
3510 errCode=
XLALSimInspiralSpinPNMode3m(&hlm_tmp,
V,Phi,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,m1_SI,m2_SI,dist_SI,ampO);
3512 errCode=
XLALSimInspiralSpinPNMode4m(&hlm_tmp,
V,Phi,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,m1_SI,m2_SI,dist_SI,ampO);
3542 LALValue *modearray,
3562 int err_code=
XLALSimInspiralSpinTaylorDriver(NULL,NULL,&
V,&Phi,&S1x,&S1y,&S1z,&S2x,&S2y,&S2z,&LNhx,&LNhy,&LNhz,&E1x,&E1y,&E1z,phiRef,dT,m1_SI,m2_SI,fStart,fRef,dist_SI,s1x,s1y,s1z,s2x,s2y,s2z,lnhatx,lnhaty,lnhatz,e1x,e1y,e1z,LALparams,approx);
3566 return XLALSimInspiralSpinTaylorHlmModesFromOrbit(hlm,
V,Phi,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,m1_SI,m2_SI,dist_SI,ampO,modearray);
3631 REAL8 norm, dtStart, dtEnd, lengths, m1sec, m2sec, Msec, Mcsec, fTerm;
3652 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, 0, 0);
3653 params = (
void *) ¶msT4;
3659 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, 0);
3660 params = (
void *) ¶msT5;
3666 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, 0);
3667 params = (
void *) ¶msT1;
3671 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
3678 Msec = m1sec + m2sec;
3679 Mcsec = Msec * pow( m1sec*m2sec/Msec/Msec, 0.6);
3683 dtStart = (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
3684 * pow(Mcsec * fStart,-5.0/3.0) / fStart;
3686 dtEnd = (fEnd == 0. ? 0. : (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
3687 * pow(Mcsec * fEnd,-5.0/3.0) / fEnd);
3689 lengths = dtStart - dtEnd;
3693 yinit[1] =
LAL_PI * Msec * fStart;
3699 norm = m1sec * m1sec / Msec / Msec;
3700 yinit[5] = norm * s1x;
3701 yinit[6] = norm * s1y;
3702 yinit[7] = norm * s1z;
3704 norm = m2sec * m2sec / Msec / Msec;
3705 yinit[8] = norm * s2x;
3706 yinit[9] = norm * s2y;
3707 yinit[10]= norm * s2z;
3731 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
3748 0.0, lengths/Msec, &
y);
3755 XLALPrintError(
"XLAL Error - %s: integration failed with errorcode %d.\n", __func__, intreturn);
3763 XLALPrintWarning(
"XLAL Warning - %s: integration terminated with code %d.\n Waveform parameters were m1 = %e, m2 = %e, s1 = (%e,%e,%e), s2 = (%e,%e,%e), inc = %e.\n",
3766 s2y, s2z, acos(lnhatz));
3773 fTerm =
y->data[2*len+cutlen-1] /
LAL_PI / Msec;
3774 XLALPrintInfo(
"XLAL Info - %s: integration terminated with code %d. The final GW frequency reached was %g\n", __func__, intreturn, fTerm);
3852 XLALPrintError(
"XLAL Error - %s: fRef=0 is invalid. Please pass in the starting GW frequency instead.\n", __func__);
3856 REAL8 omega0,
M, eta, theta0, phi0, Jnorm,
tmp1, tmp2;
3857 REAL8 Jhatx, Jhaty, Jhatz, LNhx, LNhy, LNhz, Jx, Jy, Jz, LNmag;
3858 REAL8 s1hatx, s1haty, s1hatz, s2hatx, s2haty, s2hatz;
3859 REAL8 s1x, s1y, s1z, s2x, s2y, s2z;
3869 s1hatx = sin(theta1);
3871 s1hatz = cos(theta1);
3872 s2hatx = sin(theta2) * cos(phi12);
3873 s2haty = sin(theta2) * sin(phi12);
3874 s2hatz = cos(theta2);
3881 eta = m1 * m2 /
M /
M;
3884 LNmag = pow(
M, 5./3.) * eta * pow(omega0, -1./3.);
3885 s1x = m1 * m1 * chi1 * s1hatx;
3886 s1y = m1 * m1 * chi1 * s1haty;
3887 s1z = m1 * m1 * chi1 * s1hatz;
3888 s2x = m2 * m2 * chi2 * s2hatx;
3889 s2y = m2 * m2 * chi2 * s2haty;
3890 s2z = m2 * m2 * chi2 * s2hatz;
3893 Jz = LNmag * LNhz + s1z + s2z;
3896 Jnorm = sqrt( Jx*Jx + Jy*Jy + Jz*Jz);
3900 theta0 = acos(Jhatz);
3901 phi0 = atan2(Jhaty, Jhatx);
3904 ROTATEZ(-phi0, LNhx, LNhy, LNhz);
3905 ROTATEZ(-phi0, s1hatx, s1haty, s1hatz);
3906 ROTATEZ(-phi0, s2hatx, s2haty, s2hatz);
3907 ROTATEZ(-phi0, Jhatx, Jhaty, Jhatz);
3912 ROTATEY(-theta0, LNhx, LNhy, LNhz);
3913 ROTATEY(-theta0, s1hatx, s1haty, s1hatz);
3914 ROTATEY(-theta0, s2hatx, s2haty, s2hatz);
3915 ROTATEY(-theta0, Jhatx, Jhaty, Jhatz);
3930 ROTATEY(-thetaJN, LNhx, LNhy, LNhz);
3931 ROTATEY(-thetaJN, s1hatx, s1haty, s1hatz);
3932 ROTATEY(-thetaJN, s2hatx, s2haty, s2hatz);
3933 ROTATEY(-thetaJN, Jhatx, Jhaty, Jhatz);
3940 phi0 = atan2(LNhy, LNhx);
3941 ROTATEZ(-phi0, LNhx, LNhy, LNhz);
3942 ROTATEZ(-phi0, s1hatx, s1haty, s1hatz);
3943 ROTATEZ(-phi0, s2hatx, s2haty, s2hatz);
3944 ROTATEZ(-phi0, Jhatx, Jhaty, Jhatz);
4039 REAL8 Lx,Ly,Lxy2,Lz;
4040 REAL8 LNhx,LNhy,LNhz;
4041 REAL8 v0,mass1,mass2,eta;
4045 switch (frameChoice) {
4053 eta=mass1*mass2/(mass1+mass2)/(mass1+mass2);
4056 Lx = -(*S1x)*mass1*mass1-(*S2x)*mass2*mass2;
4057 Ly = -(*S1y)*mass1*mass1-(*S2y)*mass2*mass2;
4059 if (Lmag*Lmag>=Lxy2) {
4060 Lz=sqrt(Lmag*Lmag-Lxy2);
4061 if ( Lz<(S1zIn*mass1*mass1+S2zIn*mass2*mass2) ) {
4062 XLALPrintError(
"** XLALSimInspiralInitialConditionsPrecessingApproxs ERROR *** for s1 (%12.4e %12.4e %12.4e)\n",S1xIn,S1yIn,S1zIn);
4063 XLALPrintError(
" s2 (%12.4e %12.4e %12.4e)\n",S2xIn,S2yIn,S2zIn);
4064 XLALPrintError(
" wrt to J for m: (%12.4e %12.4e) and v= %12.4e\n",mass1,mass2,v0);
4065 XLALPrintError(
" it is impossible to determine the sign of Lhz\n");
4070 XLALPrintError(
"** XLALSimInspiralInitialConditionsPrecessingApproxs ERROR *** unphysical values of s1 (%12.4e %12.4e %12.4e)\n",S1xIn,S1yIn,S1zIn);
4071 XLALPrintError(
" s2 (%12.4e %12.4e %12.4e)\n",S2xIn,S2yIn,S2zIn);
4072 XLALPrintError(
" wrt to J for m: (%12.4e %12.4e) and v= %12.4e\n",mass1,mass2,v0);
4085 REAL8 phiLJ=atan2(LNhy,LNhx);
4086 ROTATEZ(-phiLJ,*S1x,*S1y,*S1z);
4087 ROTATEZ(-phiLJ,*S2x,*S2y,*S2z);
4089 ROTATEZ(-phiLJ,LNhx,LNhy,LNhz);
4091 REAL8 thetaLJ=acos(LNhz);
4092 ROTATEY(-thetaLJ,*S1x,*S1y,*S1z);
4093 ROTATEY(-thetaLJ,*S2x,*S2y,*S2z);
4094 ROTATEY(-thetaLJ,Nhx,Nhy,Nhz);
4095 ROTATEY(-thetaLJ,LNhx,LNhy,LNhz);
4097 ROTATEZ(phiRef,*S1x,*S1y,*S1z);
4098 ROTATEZ(phiRef,*S2x,*S2y,*S2z);
4101 REAL8 phiN=atan2(Nhy,Nhx);
4102 ROTATEZ(-phiN,*S1x,*S1y,*S1z);
4103 ROTATEZ(-phiN,*S2x,*S2y,*S2z);
4104 ROTATEZ(-phiN,LNhx,LNhy,LNhz);
4107 REAL8 thetaN=acos(Nhz);
4108 ROTATEY(-thetaN,*S1x,*S1y,*S1z);
4109 ROTATEY(-thetaN,*S2x,*S2y,*S2z);
4110 ROTATEY(-thetaN,LNhx,LNhy,LNhz);
4114 REAL8 phiL=atan2(LNhy,LNhx);
4115 ROTATEZ(-phiL,*S1x,*S1y,*S1z);
4116 ROTATEZ(-phiL,*S2x,*S2y,*S2z);
4117 ROTATEZ(-phiL,LNhx,LNhy,LNhz);
4145 ROTATEY(-inclIn,*S1x,*S1y,*S1z);
4146 ROTATEY(-inclIn,*S2x,*S2y,*S2z);
4147 ROTATEZ(phiRef,*S1x,*S1y,*S1z);
4148 ROTATEZ(phiRef,*S2x,*S2y,*S2z);
4149 ROTATEY(inclIn,*S1x,*S1y,*S1z);
4150 ROTATEY(inclIn,*S2x,*S2y,*S2z);
4185 ROTATEY(-inclIn,*S1x,*S1y,*S1z);
4186 ROTATEY(-inclIn,*S2x,*S2y,*S2z);
4302 const REAL8 lambda1,
4303 const REAL8 lambda2,
4304 const REAL8 quadparam1,
4305 const REAL8 quadparam2,
4320 REAL8 norm1, norm2, dtStart, dtEnd, lengths, wEnd, m1sec, m2sec, Msec, Mcsec, fTerm;
4323 if ( !
V || !Phi || !S1x || !S1y || !S1z || !S2x || !S2y || !S2z
4324 || !LNhatx || !LNhaty || !LNhatz || !E1x || !E1y || !E1z )
4326 XLALPrintError(
"XLAL Error - %s: NULL(s) in output parameters\n",
4332 XLALPrintError(
"XLAL Error - %s: Averaged-orbit dynamics incompatible with spin order %d chosen.\n",__func__, spinO);
4351 if( fEnd < fStart && fEnd != 0. )
4361 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, 0);
4367 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr);
4372 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr);
4376 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
4383 Msec = m1sec + m2sec;
4384 Mcsec = Msec * pow( m1sec*m2sec/Msec/Msec, 0.6);
4388 dtStart = (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
4389 * pow(Mcsec * fStart,-5.0/3.0) / fStart;
4391 dtEnd = (fEnd == 0. ? 0. : (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
4392 * pow(Mcsec * fEnd,-5.0/3.0) / fEnd);
4394 lengths = dtStart - dtEnd;
4398 yinit[1] =
LAL_PI * Msec * fStart;
4404 norm1 = m1sec * m1sec / Msec / Msec;
4405 yinit[5] = norm1 * s1x;
4406 yinit[6] = norm1 * s1y;
4407 yinit[7] = norm1 * s1z;
4409 norm2 = m2sec * m2sec / Msec / Msec;
4410 yinit[8] = norm2 * s2x;
4411 yinit[9] = norm2 * s2y;
4412 yinit[10]= norm2 * s2z;
4436 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
4453 0.0, lengths/Msec, sgn*
deltaT/Msec, &yout);
4457 XLALPrintError(
"XLAL Error - %s: integration failed (yout == NULL)\n",
4468 XLALPrintError(
"XLAL Error - %s: integration failed with errorcode %d.\n", __func__, intreturn);
4476 XLALPrintWarning(
"XLAL Warning - %s: integration terminated with code %d.\n Waveform parameters were m1 = %e, m2 = %e, s1 = (%e,%e,%e), s2 = (%e,%e,%e), inc = %e.\n", __func__, intreturn, m1_SI /
LAL_MSUN_SI, m2_SI /
LAL_MSUN_SI, s1x, s1y, s1z, s2x, s2y, s2z, acos(lnhatz));
4488 if( fEnd != 0. && fEnd < fStart )
4490 wEnd =
LAL_PI * Msec * fEnd;
4494 while( yout->
data[2*len+cutlen-1] < wEnd )
4499 else if( fEnd > fStart )
4501 wEnd =
LAL_PI * Msec * fEnd;
4505 while( yout->
data[2*len+cutlen-1] > wEnd )
4516 fTerm = yout->
data[2*len+cutlen-1] /
LAL_PI / Msec;
4517 XLALPrintInfo(
"XLAL Info - %s: integration terminated with code %d. The final GW frequency reached was %g\n", __func__, intreturn, fTerm);
4548 if ( !*
V || !*Phi || !*S1x || !*S1y || !*S1z || !*S2x || !*S2y || !*S2z
4549 || !*LNhatx || !*LNhaty || !*LNhatz || !*E1x || !*E1y || !*E1z )
4556 if( fEnd < fStart && fEnd != 0. )
4566 for(
i = 0;
i < cutlen;
i++ )
4568 int j = sgn*
i+offset;
4569 (*Phi)->data->data[j] = yout->
data[len+
i];
4570 (*V)->data->data[j] = cbrt(yout->
data[2*len+
i]);
4571 (*LNhatx)->data->data[j] = yout->
data[3*len+
i];
4572 (*LNhaty)->data->data[j] = yout->
data[4*len+
i];
4573 (*LNhatz)->data->data[j] = yout->
data[5*len+
i];
4575 (*S1x)->data->data[j] = yout->
data[6*len+
i]/norm1;
4576 (*S1y)->data->data[j] = yout->
data[7*len+
i]/norm1;
4577 (*S1z)->data->data[j] = yout->
data[8*len+
i]/norm1;
4578 (*S2x)->data->data[j] = yout->
data[9*len+
i]/norm2;
4579 (*S2y)->data->data[j] = yout->
data[10*len+
i]/norm2;
4580 (*S2z)->data->data[j] = yout->
data[11*len+
i]/norm2;
4581 (*E1x)->data->data[j] = yout->
data[12*len+
i];
4582 (*E1y)->data->data[j] = yout->
data[13*len+
i];
4583 (*E1z)->data->data[j] = yout->
data[14*len+
i];
4649 const REAL8 lambda1,
4650 const REAL8 lambda2,
4651 const REAL8 quadparam1,
4652 const REAL8 quadparam2,
4666 REAL8 norm1, norm2, dtStart, dtEnd, lengths, m1sec, m2sec, Msec, Mcsec;
4669 if ( !
V || !Phi || !S1x || !S1y || !S1z || !S2x || !S2y || !S2z
4670 || !LNhatx || !LNhaty || !LNhatz || !E1x || !E1y || !E1z )
4672 XLALPrintError(
"XLAL Error - %s: NULL(s) in output parameters\n",
4678 XLALPrintError(
"XLAL Error - %s: Averaged-orbit dynamics incompatible with spin order %d chosen.\n",__func__, spinO);
4697 if( fEnd < fStart && fEnd != 0. )
4707 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr, 0);
4713 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr);
4718 lambda1, lambda2, quadparam1, quadparam2, spinO, tideO, phaseO, lscorr);
4722 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
4729 Msec = m1sec + m2sec;
4730 Mcsec = Msec * pow( m1sec*m2sec/Msec/Msec, 0.6);
4734 dtStart = (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
4735 * pow(Mcsec * fStart,-5.0/3.0) / fStart;
4737 dtEnd = (fEnd == 0. ? 0. : (5.0/256.0) * pow(
LAL_PI,-8.0/3.0)
4738 * pow(Mcsec * fEnd,-5.0/3.0) / fEnd);
4740 lengths = dtStart - dtEnd;
4744 yinit[1] =
LAL_PI * Msec * fStart;
4750 norm1 = m1sec * m1sec / Msec / Msec;
4751 yinit[5] = norm1 * s1x;
4752 yinit[6] = norm1 * s1y;
4753 yinit[7] = norm1 * s1z;
4755 norm2 = m2sec * m2sec / Msec / Msec;
4756 yinit[8] = norm2 * s2x;
4757 yinit[9] = norm2 * s2y;
4758 yinit[10]= norm2 * s2z;
4782 XLALPrintError(
"XLAL Error - %s: Approximant must be one of SpinTaylorT1, SpinTaylorT5, SpinTaylorT4, but %i provided\n",
4799 0.0, lengths/Msec,
LAL_PI * Msec * fEnd, sgn*
deltaT/Msec);
4807 XLALPrintError(
"XLAL Error - %s: integration failed with errorcode %d.\n", __func__, intreturn);
4815 XLALPrintError(
"XLAL Error - %s: integration terminated with code %d.\n Waveform parameters were m1 = %e, m2 = %e, s1 = (%e,%e,%e), s2 = (%e,%e,%e), inc = %e.\n", __func__, intreturn, m1_SI /
LAL_MSUN_SI, m2_SI /
LAL_MSUN_SI, s1x, s1y, s1z, s2x, s2y, s2z, acos(lnhatz));
4848 if ( !*
V || !*Phi || !*S1x || !*S1y || !*S1z || !*S2x || !*S2y || !*S2z
4849 || !*LNhatx || !*LNhaty || !*LNhatz || !*E1x || !*E1y || !*E1z )
4856 (*Phi)->data->data[0] = yinit[0];
4857 (*V)->data->data[0] = cbrt(yinit[1]);
4858 (*LNhatx)->data->data[0] = yinit[2];
4859 (*LNhaty)->data->data[0] = yinit[3];
4860 (*LNhatz)->data->data[0] = yinit[4];
4861 (*S1x)->data->data[0] = yinit[5]/norm1;
4862 (*S1y)->data->data[0] = yinit[6]/norm1;
4863 (*S1z)->data->data[0] = yinit[7]/norm1;
4864 (*S2x)->data->data[0] = yinit[8]/norm2;
4865 (*S2y)->data->data[0] = yinit[9]/norm2;
4866 (*S2z)->data->data[0] = yinit[10]/norm2;
4867 (*E1x)->data->data[0] = yinit[11];
4868 (*E1y)->data->data[0] = yinit[12];
4869 (*E1z)->data->data[0] = yinit[13];
4943 n =
XLALSimInspiralSpinTaylorDriver(hplus, hcross, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4945 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
4946 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, LALparams, approx);
4977 int n =
XLALSimInspiralSpinTaylorDriver(hplus, hcross, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4979 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
4980 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, LALparams, approx);
5053 n =
XLALSimInspiralSpinTaylorDriver(hplus, hcross, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
5055 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
5056 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, LALparams, approx);
5087 int n =
XLALSimInspiralSpinTaylorDriver(hplus, hcross, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
5089 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
5090 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, LALparams, approx);
5150 int n =
XLALSimInspiralSpinTaylorDriver(hplus, hcross, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
5152 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
5153 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, LALparams, approx);
5196 REAL8 lnhx, lnhy, lnhz;
5197 REAL8 e1x, e1y, e1z, e2x, e2y, e2z,
nx,
ny,
nz, lx, ly, lz;
5198 REAL8 nx2, ny2, nz2, lx2, ly2, lz2;
5199 REAL8 q1tmp, q2tmp, q3tmp, q4tmp, q5tmp;
5200 REAL8 M, eta, phi, v, v2, dist, ampfac;
5202 REAL8 sqrt_three = pow(3,0.5);
5246 if ( ! Q1 || ! Q2 || !Q3 || !Q4 || !Q5 )
5248 memset((*Q1)->data->data, 0,
5249 (*Q1)->data->length*
sizeof(*(*Q1)->data->data));
5250 memset((*Q2)->data->data, 0,
5251 (*Q2)->data->length*
sizeof(*(*Q2)->data->data));
5252 memset((*Q3)->data->data, 0,
5253 (*Q3)->data->length*
sizeof(*(*Q3)->data->data));
5254 memset((*Q4)->data->data, 0,
5255 (*Q4)->data->length*
sizeof(*(*Q4)->data->data));
5256 memset((*Q5)->data->data, 0,
5257 (*Q5)->data->length*
sizeof(*(*Q5)->data->data));
5260 eta = m1 * m2 /
M /
M;
5266 len =
V->data->length;
5267 for(idx = 0; idx < len; idx++)
5270 phi = Phi->
data->
data[idx]; v =
V->data->data[idx]; v2 = v * v;
5276 e2x = lnhy*e1z - lnhz*e1y;
5277 e2y = lnhz*e1x - lnhx*e1z;
5278 e2z = lnhx*e1y - lnhy*e1x;
5281 nx = e1x*cos(phi) + e2x*sin(phi);
5282 ny = e1y*cos(phi) + e2y*sin(phi);
5283 nz = e1z*cos(phi) + e2z*sin(phi);
5286 lx = e2x*cos(phi) - e1x*sin(phi);
5287 ly = e2y*cos(phi) - e1y*sin(phi);
5288 lz = e2z*cos(phi) - e1z*sin(phi);
5292 lx2 = lx*lx; ly2 = ly*ly; lz2 = lz*lz;
5303 q1tmp = lx2 - ly2 - nx2 + ny2;
5304 q2tmp = 2*lx*ly - 2*
nx*
ny;
5305 q3tmp = 2*lx*lz - 2*
nx*
nz;
5306 q4tmp = 2*ly*lz - 2*
ny*
nz;
5307 q5tmp = sqrt_three * (nz2 - lz2);
5310 (*Q1)->data->data[idx] = ampfac * v2 * q1tmp;
5311 (*Q2)->data->data[idx] = ampfac * v2 * q2tmp;
5312 (*Q3)->data->data[idx] = ampfac * v2 * q3tmp;
5313 (*Q4)->data->data[idx] = ampfac * v2 * q4tmp;
5314 (*Q5)->data->data[idx] = ampfac * v2 * q5tmp;
5353 REAL8 fRef = 0., quadparam1 = 1., quadparam2 = 1.;
5355 REAL8 s1x = chi1 * pow((1 - kappa1*kappa1),0.5);
5356 REAL8 s1z = chi1 * kappa1;
5357 REAL8 s1y,s2x,s2y,s2z,lnhatx,lnhaty,lnhatz,e1x,e1y,e1z;
5358 s1y = s2x = s2y = s2z = lnhatx = lnhaty = e1y = e1z = 0;
5367 &S2x, &S2y, &S2z, &LNhatx, &LNhaty, &LNhatz, &E1x, &E1y, &E1z,
5368 deltaT, m1, m2, fStart, fRef, s1x, s1y, s1z, s2x, s2y,
5369 s2z, lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
5370 quadparam1, quadparam2, spinO, tideO, phaseO, 0, approx);
5376 V, Phi, S1x, S1y, S1z, S2x, S2y, S2z, LNhatx, LNhaty, LNhatz,
5377 E1x, E1y, E1z, m1, m2,
r);
5472 deltaF, kMax, phiRef, v0,
5473 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
5474 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
5475 quadparam1, quadparam2, LALparams, phaseO, amplitudeO, approx, phiRefAtEnd);
5554 fMax, deltaF, kMax, phiRef, v0,
5555 m1, m2, fStart, fRef,
r, s1x, s1y, s1z, s2x, s2y, s2z,
5556 lnhatx, lnhaty, lnhatz, e1x, e1y, e1z, lambda1, lambda2,
5557 quadparam1, quadparam2, LALparams, phaseO, amplitudeO, approx, phiRefAtEnd);
INT4 XLALSimInspiralSpinPNMode4m(SphHarmTimeSeries **hlm, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *LNhx, REAL8TimeSeries *LNhy, REAL8TimeSeries *LNhz, REAL8TimeSeries *e1x, REAL8TimeSeries *e1y, REAL8TimeSeries *e1z, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8 m1, REAL8 m2, REAL8 distance, int ampO)
static const REAL8 UNUSED XLALSimInspiralSpinDot_4PNS2OCoeffAvg
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_12PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_3PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_5PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_0PNCoeff(REAL8 eta)
Computes the flux PN Coefficients.
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_10PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_12PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_5PNCoeff(REAL8 eta)
static const REAL8 UNUSED XLALSimInspiralSpinDot_4PNS2CoeffAvg
static REAL8 UNUSED XLALSimInspiralPNEnergy_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_0PNCoeff(REAL8 eta)
Computes the PN Coefficients for using in the TaylorT4 frequency equation.
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_7PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralSpinDot_6PNS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralSpinDot_4PNQMSOCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_12PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralL_4PN(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralSpinDot_6PNS2OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_7PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_0PNCoeff(REAL8 eta)
Computes the PN Coefficients for using in the PN energy equation.
static REAL8 UNUSED XLALSimInspiralPNFlux_10PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralSpinDot_6PNQMSOCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralLN(REAL8 M, REAL8 eta, REAL8 v)
static REAL8 UNUSED XLALSimInspiralPNFlux_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_7PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_3PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_5PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_3PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_10PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_12PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralL_3PNSiLcoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_7PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralL_3PNSicoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralSpinDot_3PNCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNS1OS2OCoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralSpinDot_7PNCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNLogCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNQMS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_5PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralSpinDot_5PNCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_3PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_10PNTidalCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralL_2PN(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNQMS1OS1OCoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_5PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_6PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNS1S2CoeffAvg(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralLDot_3PNSOCoeff(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT2dtdv_4PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralSpinDot_6PNS2CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_4PNS1S1CoeffAvg(REAL8 mByM)
static REAL8 UNUSED XLALSimInspiralTaylorT4wdot_6PNS1OS2OCoeffAvg(REAL8 eta)
static int XLALSimInspiralVectorCrossProduct(REAL8 **vout, REAL8 v1x, REAL8 v1y, REAL8 v1z, REAL8 v2x, REAL8 v2y, REAL8 v2z)
static REAL8 omegashift(REAL8 S1sq, REAL8 S2sq, REAL8 S1S2, REAL8 LNhS1, REAL8 LNhS2, REAL8 OmS1, REAL8 OmS2)
INT4 XLALSimInspiralSpinTaylorT4DerivativesAvg(REAL8 UNUSED t, const REAL8 values[], REAL8 dvalues[], void *mparams)
#define LAL_ST4_RELATIVE_TOLERANCE
static int XLALSimInspiralSpinTaylorStoppingTest(double t, const double values[], double dvalues[], void *mparams)
int XLALSimInspiralSpinTaylorT5Setup(XLALSimInspiralSpinTaylorTxCoeffs **params, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const INT4 lscorr)
See arXiv:1107.1267 for TaylorT5 approximant definition.
INT4 XLALSimInspiralSpinTaylorHlmModesFromOrbit(SphHarmTimeSeries **hlm, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *LNhx, REAL8TimeSeries *LNhy, REAL8TimeSeries *LNhz, REAL8TimeSeries *E1x, REAL8TimeSeries *E1y, REAL8TimeSeries *E1z, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8 m1_SI, REAL8 m2_SI, REAL8 dist_SI, int ampO, LALValue *modearray)
#define ROTATEZ(angle, vx, vy, vz)
static REAL8Array * removeDuplicates(REAL8Array *series)
INT4 XLALSimInspiralSpinDerivativesAvg(REAL8 *dLNhx, REAL8 *dLNhy, REAL8 *dLNhz, REAL8 *dE1x, REAL8 *dE1y, REAL8 *dE1z, REAL8 *dS1x, REAL8 *dS1y, REAL8 *dS1z, REAL8 *dS2x, REAL8 *dS2y, REAL8 *dS2z, const REAL8 v, const REAL8 LNhx, const REAL8 LNhy, const REAL8 LNhz, const REAL8 E1x, const REAL8 E1y, const REAL8 E1z, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, const REAL8 LNhdotS1, const REAL8 LNhdotS2, XLALSimInspiralSpinTaylorTxCoeffs *params)
Function computing spin precession equations, common to all member of the SpinTaylor family.
#define LALSIMINSPIRAL_ST_TEST_ENERGY
static REAL8TimeSeries * appendTSandFree(REAL8TimeSeries *start, REAL8TimeSeries *end)
int XLALSimInspiralSpinTaylorDriver(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8TimeSeries **Vout, REAL8TimeSeries **Phiout, REAL8TimeSeries **S1xout, REAL8TimeSeries **S1yout, REAL8TimeSeries **S1zout, REAL8TimeSeries **S2xout, REAL8TimeSeries **S2yout, REAL8TimeSeries **S2zout, REAL8TimeSeries **LNhxout, REAL8TimeSeries **LNhyout, REAL8TimeSeries **LNhzout, REAL8TimeSeries **E1xout, REAL8TimeSeries **E1yout, REAL8TimeSeries **E1zout, const REAL8 phiRef, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fRef, const REAL8 r, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 e1x, const REAL8 e1y, const REAL8 e1z, LALDict *LALparams, const Approximant approx)
Driver function to generate any of SpinTaylorT1/T5/T4 If the output entries are not null the relative...
static REAL8Array * appendTAandFree(REAL8Array *start, REAL8Array *end, REAL8Array *combined)
INT4 XLALSimInspiralSpinTaylorT4Setup(XLALSimInspiralSpinTaylorTxCoeffs **params, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const INT4 lscorr, const INT4 phenomtp)
See arXiv:0907.0700 for TaylorT4 definition.
#define LALSIMINSPIRAL_ST_DERIVATIVE_OMEGANONPOS
static int XLALSimInspiralSpinTaylorDriverFourier(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, Approximant approx, INT4 phiRefAtEnd)
#define LAL_ST4_ABSOLUTE_TOLERANCE
#define LALSIMINSPIRAL_ST_TEST_LARGEV
INT4 XLALSimSpinTaylorEnergySpinDerivativeSetup(XLALSimInspiralSpinTaylorTxCoeffs **params, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const INT4 lscorr, const INT4 phenomtp)
#define LALSIMINSPIRAL_ST_TEST_OMEGANAN
INT4 XLALSimInspiralSetEnergyPNTermsAvg(REAL8 *Espin3, REAL8 *Espin4, REAL8 *Espin5, REAL8 *Espin6, REAL8 *Espin7, XLALSimInspiralSpinTaylorTxCoeffs *params, const REAL8 LNhdotS1, const REAL8 LNhdotS2, const REAL8 S1sq, const REAL8 S2sq, const REAL8 S1dotS2)
#define ROTATEY(angle, vx, vy, vz)
static REAL8 normsq(REAL8 vx, REAL8 vy, REAL8 vz)
static int XLALSimInspiralSpinTaylorT1DerivativesAvg(double t, const double values[], double dvalues[], void *mparams)
#define LAL_NUM_ST4_VARIABLES
int XLALSimInspiralSpinTaylorOrbitalDriver(REAL8TimeSeries **Vout, REAL8TimeSeries **Phiout, REAL8TimeSeries **S1xout, REAL8TimeSeries **S1yout, REAL8TimeSeries **S1zout, REAL8TimeSeries **S2xout, REAL8TimeSeries **S2yout, REAL8TimeSeries **S2zout, REAL8TimeSeries **LNhxout, REAL8TimeSeries **LNhyout, REAL8TimeSeries **LNhzout, REAL8TimeSeries **E1xout, REAL8TimeSeries **E1yout, REAL8TimeSeries **E1zout, const REAL8 phiRef, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fRef, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 e1x, const REAL8 e1y, const REAL8 e1z, LALDict *LALparams, const Approximant approx)
Driver function wrapper for XLALSimInspiralSpinTaylorDriver() with the same output except for h+ and ...
#define LALSIMINSPIRAL_ST_TEST_FREQBOUND
static int XLALSimInspiralSpinTaylorT5DerivativesAvg(double t, const double values[], double dvalues[], void *mparams)
int XLALSimInspiralSpinTaylorT1Setup(XLALSimInspiralSpinTaylorTxCoeffs **params, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const INT4 lscorr)
See arXiv:0907.0700 for TaylorT1 definition.
static int XLALSimInspiralSpinTaylorPNEvolveOrbitIrregularIntervals(REAL8Array **yout, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fEnd, 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, LALSimInspiralSpinOrder spinO, LALSimInspiralTidalOrder tideO, INT4 phaseO, Approximant approx)
This function evolves the orbital equations for a precessing binary using the "TaylorT5/T4" approxima...
static REAL8 cdot(REAL8 v1x, REAL8 v1y, REAL8 v1z, REAL8 v2x, REAL8 v2y, REAL8 v2z)
#define LALSIMINSPIRAL_ST_TEST_OMEGADOUBLEDOT
INT4 XLALSimInspiralSpinTaylorHlmModes(SphHarmTimeSeries **hlm, REAL8 phiRef, REAL8 dT, REAL8 m1_SI, REAL8 m2_SI, REAL8 fStart, REAL8 fRef, REAL8 dist_SI, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, int ampO, LALValue *modearray, LALDict *LALparams, Approximant approx)
#define LAL_CHECK_VALID_SERIES(s, val)
#define LAL_CHECK_CONSISTENT_TIME_SERIES(s1, s2, val)
REAL8Array * XLALCreateREAL8ArrayL(UINT4,...)
void XLALDestroyREAL8Array(REAL8Array *)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALAdaptiveRungeKuttaFree(LALAdaptiveRungeKuttaIntegrator *integrator)
int XLALAdaptiveRungeKutta4IrregularIntervals(LALAdaptiveRungeKuttaIntegrator *integrator, void *params, REAL8 *yinit, REAL8 tinit, REAL8 tend_in, REAL8Array **yout)
int XLALAdaptiveRungeKutta4HermiteOnlyFinal(LALAdaptiveRungeKuttaIntegrator *integrator, void *params, REAL8 *yinit, REAL8 tinit, REAL8 tend_in, REAL8 y1_final, REAL8 deltat)
int XLALAdaptiveRungeKutta4Hermite(LALAdaptiveRungeKuttaIntegrator *integrator, void *params, REAL8 *yinit, REAL8 tinit, REAL8 tend_in, REAL8 deltat, REAL8Array **yout)
LALAdaptiveRungeKuttaIntegrator * XLALAdaptiveRungeKutta4Init(int dim, int(*dydt)(double t, const double y[], double dydt[], void *params), int(*stop)(double t, const double y[], double dydt[], void *params), double eps_abs, double eps_rel)
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 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...
LALSimInspiralSpinOrder
Enumeration of allowed PN orders of spin effects.
LALSimInspiralFrameAxis
Enumerator for choosing the reference frame associated with PSpinInspiralRD waveforms.
LALSimInspiralTidalOrder
Enumeration of allowed PN orders of tidal effects.
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
@ LAL_SIM_INSPIRAL_SPIN_ORDER_0PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_25PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_35PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_ALL
@ LAL_SIM_INSPIRAL_SPIN_ORDER_2PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_15PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_1PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_05PN
@ LAL_SIM_INSPIRAL_SPIN_ORDER_3PN
@ 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.
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_5PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_6PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_ALL
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_0PN
@ SpinTaylorT4
Spinning case T4 models (lalsimulation's equivalent of SpinTaylorFrameless).
@ SpinTaylorT5
Spinning case T5 models, which is a variant of the spinning version of the original TaylorT2 (see ) d...
@ SpinTaylorT1
Spinning case T1 models.
INT4 XLALSimInspiralSpinPNMode2m(SphHarmTimeSeries **hlm, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *LNhx, REAL8TimeSeries *LNhy, REAL8TimeSeries *LNhz, REAL8TimeSeries *e1x, REAL8TimeSeries *e1y, REAL8TimeSeries *e1z, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8 m1, REAL8 m2, REAL8 distance, int ampO)
Computes the 5 l=2 modes of spherical harmonic decomposition of the post-Newtonian inspiral waveform ...
INT4 XLALSimInspiralSpinPNMode3m(SphHarmTimeSeries **hlm, REAL8TimeSeries *V, REAL8TimeSeries *Phi, REAL8TimeSeries *LNhx, REAL8TimeSeries *LNhy, REAL8TimeSeries *LNhz, REAL8TimeSeries *e1x, REAL8TimeSeries *e1y, REAL8TimeSeries *e1z, REAL8TimeSeries *S1x, REAL8TimeSeries *S1y, REAL8TimeSeries *S1z, REAL8TimeSeries *S2x, REAL8TimeSeries *S2y, REAL8TimeSeries *S2z, REAL8 m1, REAL8 m2, REAL8 distance, int ampO)
Computes all l=3 modes of spherical harmonic decomposition of the post-Newtonian inspiral waveform fo...
int XLALSimInspiralSpinTaylorT1OLD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 UNUSED 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)
Driver routine to compute a precessing post-Newtonian inspiral waveform with phasing computed from en...
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 XLALSimInspiralSpinTaylorPNEvolveOrbit(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, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 e1x, const REAL8 e1y, const REAL8 e1z, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const INT4 lscorr, const Approximant approx)
This function evolves the orbital equations for a precessing binary using the "TaylorT1/T5/T4" approx...
int XLALSimInspiralPrecessingPTFQWaveforms(REAL8TimeSeries **Q1, REAL8TimeSeries **Q2, REAL8TimeSeries **Q3, REAL8TimeSeries **Q4, REAL8TimeSeries **Q5, 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)
Compute the physical template family "Q" vectors for a spinning, precessing binary when provided time...
int XLALSimInspiralSpinTaylorT4OLD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 UNUSED 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)
Driver routine to compute a precessing post-Newtonian inspiral waveform with phasing computed from en...
int XLALSimInspiralTransformPrecessingObsoleteInitialConditions(REAL8 *incl, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, REAL8 thetaJN, REAL8 phiJL, REAL8 theta1, REAL8 theta2, REAL8 phi12, REAL8 chi1, REAL8 chi2, REAL8 m1, REAL8 m2, REAL8 fRef)
Function to specify the desired orientation of a precessing binary in terms of several angles and the...
int XLALSimInspiralSpinTaylorPNEvolveOrbitOnlyFinal(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, const REAL8 deltaT, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 fStart, const REAL8 fEnd, const REAL8 s1x, const REAL8 s1y, const REAL8 s1z, const REAL8 s2x, const REAL8 s2y, const REAL8 s2z, const REAL8 lnhatx, const REAL8 lnhaty, const REAL8 lnhatz, const REAL8 e1x, const REAL8 e1y, const REAL8 e1z, const REAL8 lambda1, const REAL8 lambda2, const REAL8 quadparam1, const REAL8 quadparam2, const LALSimInspiralSpinOrder spinO, const LALSimInspiralTidalOrder tideO, const INT4 phaseO, const INT4 lscorr, const Approximant approx)
This function evolves the orbital equations for a precessing binary using the "TaylorT1/T5/T4" approx...
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 frameChoice)
Function to specify the desired orientation of the spin components of a precessing binary.
int XLALSimInspiralSpinTaylorT4(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALparams)
int XLALSimInspiralSpinTaylorT1(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 fStart, REAL8 fRef, REAL8 r, REAL8 s1x, REAL8 s1y, REAL8 s1z, REAL8 s2x, REAL8 s2y, REAL8 s2z, REAL8 lnhatx, REAL8 lnhaty, REAL8 lnhatz, REAL8 e1x, REAL8 e1y, REAL8 e1z, LALDict *LALparams)
int XLALSimInspiralSpinTaylorT4PTFQVecs(REAL8TimeSeries **Q1, REAL8TimeSeries **Q2, REAL8TimeSeries **Q3, REAL8TimeSeries **Q4, REAL8TimeSeries **Q5, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 chi1, REAL8 kappa1, REAL8 fStart, REAL8 lambda1, REAL8 lambda2, LALSimInspiralSpinOrder spinO, LALSimInspiralTidalOrder tideO, int phaseO)
Driver routine to compute the physical template family "Q" vectors using the "T4" method.
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...
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...
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 XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
const LALUnit lalStrainUnit
const LALUnit lalSecondUnit
const LALUnit lalDimensionlessUnit
LALUnit * XLALUnitMultiply(LALUnit *output, const LALUnit *unit1, const LALUnit *unit2)
#define XLAL_ERROR_NULL(...)
int int int XLALPrintInfo(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
Structure to carry a collection of spherical harmonic modes in COMPLEX16 time series.