26#include <lal/SphericalHarmonics.h>
27#include <lal/LALConstants.h>
28#include <lal/LALDatatypes.h>
29#include <lal/LALSimInspiral.h>
30#include <lal/LALSimInspiralWaveformParams.h>
31#include <lal/LALSimSphHarmMode.h>
56 REAL8 sample_rate = 8192.;
57 REAL8 dT=1./sample_rate;
87 errCode +=
XLALSimInspiralChooseTDWaveform(&hp_std,&hc_std,m1_SI,m2_SI,s1x,s1y,s1z,s2x,s2y,s2z,dist_SI,incl,phi_ref,0.,0.,0.,dT,f_low,f_ref,
params,apprx);
89 REAL8 inclination,spin1x,spin1y,spin1z,spin2x,spin2y,spin2z;
90 errCode +=
XLALSimInspiralInitialConditionsPrecessingApproxs(&inclination,&spin1x,&spin1y,&spin1z,&spin2x,&spin2y,&spin2z,incl,s1x,s1y,s1z,s2x,s2y,s2z,m1,m2,f_ref,phi_ref,
XLALSimInspiralWaveformParamsLookupFrameAxis(
params));
92 REAL8 lnhx=sin(inclination);
94 REAL8 lnhz=cos(inclination);
101 errCode+=
XLALSimInspiralSpinTaylorDriver(&hp_drv,&hc_drv,&
V,&Phi,&S1x,&S1y,&S1z,&S2x,&S2y,&S2z,&LNhx,&LNhy,&LNhz,&E1x,&E1y,&E1z, phi_ref, dT, m1_SI, m2_SI, f_low, f_ref, dist_SI, spin1x, spin1y, spin1z, spin2x, spin2y, spin2z, lnhx, lnhy, lnhz, e1x, e1y, e1z,
params, apprx);
105 hc_drv->data->data[idx]*=-1.;
111 for (
l=2;
l<=LMAX;
l++)
115 errCode+=
XLALSimInspiralSpinTaylorHlmModesFromOrbit(&Hlms_orb,
V,Phi,LNhx,LNhy,LNhz,E1x,E1y,E1z,S1x,S1y,S1z,S2x,S2y,S2z,m1_SI,m2_SI,dist_SI,ampO,modearray);
131 SphHarmTimeSeries *Hlms_modes=
XLALSimInspiralChooseTDModes(0.,dT, m1_SI, m2_SI, s1x, s1y, s1z, s2x, s2y, s2z, f_low, f_ref, dist_SI,
params, LMAX, apprx);
145 for (
l=2;
l<=lmax;
l++) {
158 for (idx=1; idx<minlen; idx++) {
159 tmp=sqrt((hp_std->
data->
data[idx]*hp_std->
data->
data[idx])+(hc_std->data->data[idx]*hc_std->data->data[idx]));
166 if (fabs(hc_std->data->data[idx]-hc_drv->data->data[idx])>0.01*tmp)
168 if (fabs(hc_std->data->data[idx]-hc_orb->
data->
data[idx])>0.01*tmp)
170 if (fabs(hc_std->data->data[idx]-hc_modes->
data->
data[idx])>0.01*tmp)
174 if ( (ret == 0) && (errCode == 0) ) {
175 fprintf(stdout,
"\n Mode vs. polarization test passed.\n");
178 fprintf(stderr,
"\nFAILURE: %u %u Mode vs. polarization test failed.\n", ret,errCode);
LALDict * XLALCreateDict(void)
int XLALGetApproximantFromString(const char *waveform)
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, REAL8 phiRef, REAL8 deltaT, REAL8 m1_SI, REAL8 m2_SI, 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, Approximant approx)
Driver function to generate any of SpinTaylorT1/T5/T4 If the output entries are not null the relative...
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 distance, int ampO, LALValue *modearray)
int XLALSimInspiralChooseTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 m1, const REAL8 m2, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaT, const REAL8 f_min, REAL8 f_ref, LALDict *params, const Approximant approximant)
Chooses between different approximants when requesting a waveform to be generated For spinning wavefo...
SphHarmTimeSeries * XLALSimInspiralChooseTDModes(UNUSED REAL8 phiRef, REAL8 deltaT, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 f_min, REAL8 f_ref, REAL8 distance, LALDict *params, int lmax, Approximant approximant)
Interface to compute a set of -2 spin-weighted spherical harmonic modes for a binary inspiral for a g...
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
int XLALSimInspiralInitialConditionsPrecessingApproxs(REAL8 *inc, REAL8 *S1x, REAL8 *S1y, REAL8 *S1z, REAL8 *S2x, REAL8 *S2y, REAL8 *S2z, const REAL8 inclIn, const REAL8 S1xIn, const REAL8 S1yIn, const REAL8 S1zIn, const REAL8 S2xIn, const REAL8 S2yIn, const REAL8 S2zIn, const REAL8 m1, const REAL8 m2, const REAL8 fRef, const REAL8 phiRef, LALSimInspiralFrameAxis axisChoice)
Function to specify the desired orientation of the spin components of a precessing binary.
int XLALSimAddMode(REAL8TimeSeries *hplus, REAL8TimeSeries *hcross, COMPLEX16TimeSeries *hmode, REAL8 theta, REAL8 phi, int l, int m, int sym)
Multiplies a mode h(l,m) by a spin-2 weighted spherical harmonic to obtain hplus - i hcross,...
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...
UINT4 XLALSphHarmTimeSeriesGetMaxL(SphHarmTimeSeries *ts)
Get the largest l index of any mode in the SphHarmTimeSeries linked list.
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
const LALUnit lalStrainUnit
Structure to carry a collection of spherical harmonic modes in COMPLEX16 time series.