179 #include <lal/Date.h>
180 #include <lal/LALgetopt.h>
181 #include <lal/Units.h>
182 #include <lal/Sequence.h>
183 #include <lal/TimeSeries.h>
184 #include <lal/FrequencySeries.h>
185 #include <lal/TimeFreqFFT.h>
186 #include <lal/BandPassTimeSeries.h>
187 #include <lal/VectorOps.h>
188 #include <lal/LALConstants.h>
189 #include <lal/LALDatatypes.h>
190 #include <lal/LALError.h>
191 #include <lal/LALString.h>
192 #include <lal/LALDict.h>
193 #include <lal/LALSimInspiral.h>
194 #include <lal/LALSimIMR.h>
197 #define DEFAULT_APPROX "TaylorT1"
198 #define DEFAULT_DOMAIN -1
199 #define DEFAULT_PHASEO -1
200 #define DEFAULT_AMPO -1
201 #define DEFAULT_PHIREF 0.0
202 #define DEFAULT_MEANPERANO 0.0
203 #define DEFAULT_LONGASCNODE 0.0
204 #define DEFAULT_ECCENTRICITY 0.0
205 #define DEFAULT_FREF 0.0
206 #define DEFAULT_SRATE 16384.0
207 #define DEFAULT_M1 1.4
208 #define DEFAULT_M2 1.4
209 #define DEFAULT_F_MIN 40.0
210 #define DEFAULT_DISTANCE 1.0
211 #define DEFAULT_INCLINATION 0.0
212 #define DEFAULT_S1X 0.0
213 #define DEFAULT_S1Y 0.0
214 #define DEFAULT_S1Z 0.0
215 #define DEFAULT_S2X 0.0
216 #define DEFAULT_S2Y 0.0
217 #define DEFAULT_S2Z 0.0
218 #define DEFAULT_LAMBDA1 0.0
219 #define DEFAULT_LAMBDA2 0.0
220 #define DEFAULT_DQUADMON1 0.0
221 #define DEFAULT_DQUADMON2 0.0
262 int main(
int argc,
char *argv[])
275 if (!istd && !isfd) {
276 fprintf(stderr,
"error: approximant not supported\n");
282 fprintf(stderr,
"error: approximant not supported in time domain\n");
288 fprintf(stderr,
"error: approximant not supported in frequency domain\n");
293 switch (
p.freq_dom) {
341 amp->
data[j] = cabs(z);
342 phi->
data[j] = carg(z);
353 for (j = 0; j < phi->
length; ++j)
354 phi->
data[j] -= phi0;
356 fprintf(stdout,
"# time (s)\th_abs (strain)\t h_arg (rad)\n");
363 fprintf(stdout,
"# time (s)\th_+ (strain)\th_x (strain)\n");
393 kref = round((
p.fRef > 0 ?
p.fRef :
p.f_min) / htilde_plus->
deltaF);
394 arg0 = arg_plus->
data[kref];
396 for (k = 0; k < arg_plus->
length; ++k)
397 arg_plus->
data[k] -= arg0;
399 arg0 = arg_cross->
data[kref];
401 for (k = 0; k < arg_cross->
length; ++k)
402 arg_cross->
data[k] -= arg0;
404 fprintf(stdout,
"# freq (s^-1)\tabs_htilde_+ (strain s)\targ_htilde_+ (rad)\tabs_htilde_x (strain s)\targ_htilde_x (rad)\n");
405 for (k = 0; k < htilde_plus->
data->
length; ++k)
406 fprintf(stdout,
"%f\t%.18e\t%.18e\t%.18e\t%.18e\n", k * htilde_plus->
deltaF, abs_plus->
data[k], arg_plus->
data[k],
407 abs_cross->
data[k], arg_cross->
data[k]);
414 fprintf(stdout,
"# freq (s^-1)\treal_htilde_+ (strain s)\timag_htilde_+ (strain s)\treal_htilde_x (strain s)\timag_htilde_x (strain s)\n");
415 for (k = 0; k < htilde_plus->
data->
length; ++k)
416 fprintf(stdout,
"%f\t%.18e\t%.18e\t%.18e\t%.18e\n", k * htilde_plus->
deltaF, creal(htilde_plus->
data->
data[k]),
426 clock_t timer_start = 0;
430 fprintf(stderr,
"generating waveform in time domain using XLALSimInspiralTD...\n");
431 timer_start = clock();
433 XLALSimInspiralTD(h_plus, h_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, 1.0 /
p.srate,
p.f_min,
p.fRef,
p.params,
p.approx);
435 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
439 fprintf(stderr,
"generating waveform in time domain using XLALSimInspiralChooseTDWaveform...\n");
440 timer_start = clock();
442 XLALSimInspiralChooseTDWaveform(h_plus, h_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, 1.0 /
p.srate,
p.f_min,
p.fRef,
p.params,
p.approx);
444 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
449 double chirplen, deltaF;
456 frexp(chirplen, &chirplen_exp);
457 chirplen = ldexp(1.0, chirplen_exp);
458 deltaF =
p.srate / chirplen;
460 fprintf(stderr,
"using frequency resolution deltaF = %g Hz\n", deltaF);
464 fprintf(stderr,
"generating waveform in frequency domain using XLALSimInspiralChooseFDWaveform...\n");
465 timer_start = clock();
467 XLALSimInspiralChooseFDWaveform(&htilde_plus, &htilde_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, deltaF,
p.f_min, 0.5 *
p.srate,
p.fRef,
p.params,
p.approx);
469 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
473 fprintf(stderr,
"transforming waveform to time domain...\n");
474 timer_start = clock();
482 fprintf(stderr,
"transformation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
497 clock_t timer_start = 0;
498 double chirplen, deltaF;
504 frexp(chirplen, &chirplen_exp);
505 chirplen = ldexp(1.0, chirplen_exp);
506 deltaF =
p.srate / chirplen;
508 fprintf(stderr,
"using frequency resolution deltaF = %g Hz\n", deltaF);
512 fprintf(stderr,
"generating waveform in frequency domain using XLALSimInspiralFD...\n");
513 timer_start = clock();
515 XLALSimInspiralFD(htilde_plus, htilde_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, deltaF,
p.f_min, 0.5 *
p.srate,
p.fRef,
p.params,
p.approx);
517 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
520 fprintf(stderr,
"generating waveform in frequency domain using XLALSimInspiralChooseFDWaveform...\n");
521 timer_start = clock();
523 XLALSimInspiralChooseFDWaveform(htilde_plus, htilde_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, deltaF,
p.f_min, 0.5 *
p.srate,
p.fRef,
p.params,
p.approx);
525 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
533 fprintf(stderr,
"generating waveform in time domain using XLALSimInspiralChooseTDWaveform...\n");
534 timer_start = clock();
536 XLALSimInspiralChooseTDWaveform(&h_plus, &h_cross,
p.m1,
p.m2,
p.s1x,
p.s1y,
p.s1z,
p.s2x,
p.s2y,
p.s2z,
p.distance,
p.inclination,
p.phiRef,
p.longAscNodes,
p.eccentricity,
p.meanPerAno, 1.0 /
p.srate,
p.f_min,
p.fRef,
p.params,
p.approx);
538 fprintf(stderr,
"generation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
547 fprintf(stderr,
"transforming waveform to frequency domain...\n");
548 timer_start = clock();
556 fprintf(stderr,
"transformation took %g seconds\n", (
double)(clock() - timer_start) / CLOCKS_PER_SEC);
569 double tchirp, tmerge;
581 return tchirp + tmerge;
595 fprintf(stderr,
"error: unknown frame axis\n");
605 case LAL_SIM_INSPIRAL_MODES_CHOICE_RESTRICTED:
636 fprintf(stderr,
"error: unknown modes choice\n");
654 fprintf(stderr,
"phase post-Newtonian order: highest available\n");
656 fprintf(stderr,
"twice phase post-Newtonian order: %d (%g pN)\n", phaseO, 0.5 * phaseO);
658 fprintf(stderr,
"amplitude post-Newtonian order: highest available\n");
660 fprintf(stderr,
"twice amplitude post-Newtonian order: %d (%g pN)\n", ampO, 0.5 * ampO);
662 fprintf(stderr,
"spin post-Newtonian order: highest available\n");
664 fprintf(stderr,
"twice spin post-Newtonian order: %d (%g pN)\n", spinO, 0.5 * spinO);
666 fprintf(stderr,
"tidal post-Newtonian order: highest available\n");
668 fprintf(stderr,
"twice tidal post-Newtonian order: %d (%g pN)\n", tideO, 0.5 * tideO);
670 fprintf(stderr,
"sample rate: %g Hz\n",
p.srate);
673 fprintf(stderr,
"primary dimensionless spin vector: (%g, %g, %g)\n",
p.s1x,
p.s1y,
p.s1z);
674 fprintf(stderr,
"secondary dimensionless spin vector: (%g, %g, %g)\n",
p.s2x,
p.s2y,
p.s2z);
675 fprintf(stderr,
"starting frequency: %g Hz\n",
p.f_min);
676 fprintf(stderr,
"reference frequency: %g Hz\n",
p.fRef);
678 fprintf(stderr,
"inclination: %g deg, %g rad\n",
p.inclination /
LAL_PI_180,
p.inclination);
700 fprintf(stderr,
"options [default values in brackets]:\n");
701 fprintf(stderr,
"\t-h, --help \tprint this message and exit\n");
702 fprintf(stderr,
"\t-v, --verbose \tverbose output\n");
703 fprintf(stderr,
"\t-C, --radians \tuse radians rather than decimal degrees\n");
704 fprintf(stderr,
"\t-F, --frequency-domain \toutput data in frequency domain\n");
705 fprintf(stderr,
"\t-c, --condition-waveform \tapply waveform conditioning\n");
706 fprintf(stderr,
"\t-P, --amp-phase \toutput data as amplitude and phase\n");
708 fprintf(stderr,
"\t-w WAVEFORM, --waveform=WAVEFORM \n\t\twaveform string giving both approximant and order\n");
709 fprintf(stderr,
"\t-D domain, --domain=DOMAIN \n\t\tdomain for waveform generation when both are available\n\t\t{\"time\", \"freq\"} [use natural domain for output]\n");
710 fprintf(stderr,
"\t-O PHASEO, --phase-order=PHASEO \n\t\ttwice pN order of phase (-1 == highest) [%d]\n",
DEFAULT_PHASEO);
711 fprintf(stderr,
"\t-o AMPO, --amp-order=AMPO \n\t\ttwice pN order of amplitude (-1 == highest) [%d]\n",
DEFAULT_AMPO);
712 fprintf(stderr,
"\t-u PHIREF, --phiRef=PHIREF \n\t\treference phase in degrees [%g]\n",
DEFAULT_PHIREF);
713 fprintf(stderr,
"\t-U PERIANOM, --periastron-anomaly=PERIANOM\n\t\tmean periastron anomaly in degrees [%g]\n",
DEFAULT_MEANPERANO);
714 fprintf(stderr,
"\t-W LONGASC, --longitude-ascending-node=LONGASC\n\t\tlongitude of ascending node in degrees [%g]\n",
DEFAULT_LONGASCNODE);
716 fprintf(stderr,
"\t-R SRATE, --sample-rate=SRATE \n\t\tsample rate in Hertz [%g]\n",
DEFAULT_SRATE);
717 fprintf(stderr,
"\t-M M1, --m1=M1 \n\t\tmass of primary in solar masses [%g]\n",
DEFAULT_M1);
718 fprintf(stderr,
"\t-m M2, --m2=M2 \n\t\tmass of secondary in solar masses [%g]\n",
DEFAULT_M2);
721 fprintf(stderr,
"\t-X S1X, --spin1x=S1X \n\t\tx-component of dimensionless spin of primary [%g]\n",
DEFAULT_S1X);
722 fprintf(stderr,
"\t-Y S1Y, --spin1y=S1Y \n\t\ty-component of dimensionless spin of primary [%g]\n",
DEFAULT_S1Y);
723 fprintf(stderr,
"\t-Z S1Z, --spin1z=S1Z \n\t\tz-component of dimensionless spin of primary [%g]\n",
DEFAULT_S1Z);
724 fprintf(stderr,
"\t-x S2X, --spin2x=S2X \n\t\tx-component of dimensionless spin of secondary [%g]\n",
DEFAULT_S2X);
725 fprintf(stderr,
"\t-y S2Y, --spin2y=S2Y \n\t\ty-component of dimensionless spin of secondary [%g]\n",
DEFAULT_S2Y);
726 fprintf(stderr,
"\t-z S2Z, --spin2z=S2Z \n\t\tz-component of dimensionless spin of secondary [%g]\n",
DEFAULT_S2Z);
727 fprintf(stderr,
"\t-L LAM1, --tidal-lambda1=LAM1 \n\t\tdimensionless tidal deformability of primary [%g]\n",
DEFAULT_LAMBDA1);
728 fprintf(stderr,
"\t-l LAM2, --tidal-lambda2=LAM2 \n\t\tdimensionless tidal deformability of secondary [%g]\n",
DEFAULT_LAMBDA2);
729 fprintf(stderr,
"\t-q DQM1, --delta-quad-mon1=DQM1 \n\t\tdifference in quadrupole-monopole term of primary [%g]\n",
DEFAULT_DQUADMON1);
730 fprintf(stderr,
"\t-Q DQM2, --delta-quad-mon2=DQM2 \n\t\tdifference in quadrupole-monopole term of secondary [%g]\n",
DEFAULT_DQUADMON2);
733 fprintf(stderr,
"\t-f FMIN, --f-min=FMIN \n\t\tfrequency to start waveform in Hertz [%g]\n",
DEFAULT_F_MIN);
734 fprintf(stderr,
"\t-r FREF, --fRef=FREF \n\t\treference frequency in Hertz [%g]\n",
DEFAULT_FREF);
738 "\t-p KEY1=VAL1,KEY2=VAL2,..., --params=KEY1=VAL1,KEY2=VAL2,... \n\t\textra parameters as a key-value pair\n");
739 fprintf(stderr,
"recognized time-domain approximants:");
743 c +=
fprintf(stderr,
"%s%s",
c ?
", " :
"\n\t",
s);
749 fprintf(stderr,
"recognized frequency-domain approximants:");
753 c +=
fprintf(stderr,
"%s%s",
c ?
", " :
"\n\t",
s);
767 char *inclination_string = NULL;
768 char *phiRef_string = NULL;
769 char *meanPerAno_string = NULL;
770 char *longAscNodes_string = NULL;
839 char args[] =
"hvCFcPa:w:D:O:o:u:U:W:e:r:R:M:m:X:x:Y:y:Z:z:L:l:q:Q:s:t:f:d:i:A:n:p:";
842 int option_index = 0;
851 if (long_options[option_index].
flag)
854 fprintf(stderr,
"error parsing option %s with argument %s\n", long_options[option_index].
name, LALoptarg);
878 fprintf(stderr,
"error: invalid value %s for %s\n", LALoptarg, long_options[option_index].
name);
885 fprintf(stderr,
"error: could not parse approximant from %s for %s\n", LALoptarg, long_options[option_index].
name);
890 fprintf(stderr,
"error: could not parse order from %s for %s\n", LALoptarg, long_options[option_index].
name);
893 if (
p.params == NULL)
898 switch (*LALoptarg) {
908 fprintf(stderr,
"error: invalid value %s for %s\n", LALoptarg, long_options[option_index].
name);
913 if (
p.params == NULL)
918 if (
p.params == NULL)
932 p.eccentricity = atof(LALoptarg);
935 p.fRef = atof(LALoptarg);
938 p.srate = atof(LALoptarg);
947 p.s1x = atof(LALoptarg);
950 p.s1y = atof(LALoptarg);
953 p.s1z = atof(LALoptarg);
956 p.s2x = atof(LALoptarg);
959 p.s2y = atof(LALoptarg);
962 p.s2z = atof(LALoptarg);
965 if (
p.params == NULL)
970 if (
p.params == NULL)
975 if (
p.params == NULL)
980 if (
p.params == NULL)
985 if (
p.params == NULL)
990 if (
p.params == NULL)
995 p.f_min = atof(LALoptarg);
998 p.distance = atof(LALoptarg) * 1e6 *
LAL_PC_SI;
1004 if (
p.params == NULL)
1009 if (
p.params == NULL)
1014 if (
p.params == NULL)
1018 if (kv == NULL || key == NULL || *key ==
'\0') {
1019 fprintf(stderr,
"error: invalid key-value pair for %s\n", long_options[option_index].
name);
1027 fprintf(stderr,
"unknown error while parsing options\n");
1031 if (LALoptind < argc) {
1032 fprintf(stderr,
"extraneous command line arguments:\n");
1033 while (LALoptind < argc)
1034 fprintf(stderr,
"%s\n", argv[LALoptind++]);
1039 if (phiRef_string) {
1040 p.phiRef = atof(phiRef_string);
1044 if (inclination_string) {
1045 p.inclination = atof(inclination_string);
1049 if (meanPerAno_string) {
1050 p.meanPerAno = atof(meanPerAno_string);
1054 if (longAscNodes_string) {
1055 p.longAscNodes = atof(longAscNodes_string);
const char * XLALDictEntryGetKey(const LALDictEntry *entry)
LALDictEntry * XLALDictIterNext(LALDictIter *iter)
void XLALDestroyDict(LALDict *dict)
void XLALDictIterInit(LALDictIter *iter, LALDict *dict)
const LALValue * XLALDictEntryGetValue(const LALDictEntry *entry)
LALDict * XLALCreateDict(void)
int XLALDictInsertREAL8Value(LALDict *dict, const char *key, REAL8 value)
void LALCheckMemoryLeaks(void)
REAL8 XLALSimInspiralChirpTimeBound(REAL8 fstart, REAL8 m1, REAL8 m2, REAL8 s1, REAL8 s2)
Routine to compute an overestimate of the inspiral time from a given frequency.
const char * XLALSimInspiralGetStringFromApproximant(Approximant approximant)
Returns a string associated with an Approximant enum value.
REAL8 XLALSimInspiralMergeTimeBound(REAL8 m1, REAL8 m2)
Routine to compute an overestimate of the merger time.
int XLALSimInspiralGetPNOrderFromString(const char *waveform)
Parses a waveform string to determine PN order.
int XLALSimInspiralGetHigherModesFromString(const char *string)
Parses a string to determine the LALSimInspiralModesChoice enum value.
int XLALSimInspiralImplementedFDApproximants(Approximant approximant)
Checks whether the given approximant is implemented in lalsimulation's XLALSimInspiralChooseFDWavefor...
REAL8 XLALSimInspiralRingdownTimeBound(REAL8 M, REAL8 s)
Routine to compute an overestimate of the ringdown time.
int XLALSimInspiralGetFrameAxisFromString(const char *waveform)
Parses a waveform string to determine frame axis.
REAL8 XLALSimInspiralFinalBlackHoleSpinBound(REAL8 S1z, REAL8 S2z)
Routine to compute an overestimate of a final black hole dimensionless spin.
int XLALSimInspiralImplementedTDApproximants(Approximant approximant)
Checks whether the given approximant is implemented in lalsimulation's XLALSimInspiralChooseTDWavefor...
int XLALSimInspiralGetApproximantFromString(const char *waveform)
Parses a waveform string to determine approximant.
void XLALValuePrint(const LALValue *value, int fd)
int LALgetopt_long_only(int argc, char *const *argv, const char *options, const struct LALoption *long_options, int *opt_index)
#define required_argument
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
int XLALSimInspiralChooseFDWaveform(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, const REAL8 m1, const REAL8 m2, const REAL8 S1x, const REAL8 S1y, const REAL8 S1z, const REAL8 S2x, const REAL8 S2y, const REAL8 S2z, const REAL8 distance, const REAL8 inclination, const REAL8 phiRef, const REAL8 longAscNodes, const REAL8 eccentricity, const REAL8 UNUSED meanPerAno, const REAL8 deltaF, const REAL8 f_min, const REAL8 f_max, REAL8 f_ref, LALDict *params, const Approximant approximant)
Chooses between different approximants when requesting a waveform to be generated For spinning wavefo...
int XLALSimInspiralFD(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaF, REAL8 f_min, REAL8 f_max, REAL8 f_ref, LALDict *LALparams, Approximant approximant)
Generates a frequency domain inspiral waveform using the specified approximant; the resulting wavefor...
int 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...
int XLALSimInspiralTD(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 m1, REAL8 m2, REAL8 S1x, REAL8 S1y, REAL8 S1z, REAL8 S2x, REAL8 S2y, REAL8 S2z, REAL8 distance, REAL8 inclination, REAL8 phiRef, REAL8 longAscNodes, REAL8 eccentricity, REAL8 meanPerAno, REAL8 deltaT, REAL8 f_min, REAL8 f_ref, LALDict *LALparams, Approximant approximant)
Generates an time domain inspiral waveform using the specified approximant; the resulting waveform is...
LALSimInspiralModesChoice
Enumerator for choosing which modes to include in IMR models.
#define LAL_SIM_INSPIRAL_FRAME_AXIS_DEFAULT
#define LAL_SIM_INSPIRAL_TIDAL_ORDER_DEFAULT
LALSimInspiralFrameAxis
Enumerator for choosing the reference frame associated with PSpinInspiralRD waveforms.
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
#define LAL_SIM_INSPIRAL_SPIN_ORDER_DEFAULT
Default values for all enumerated flags.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3L
Inlude only l=3 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_DEFAULT
Include only (2,2) or l=2 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_4AND5L
Inlude l=4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_4L
Inlude only l=4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_ALL
Include all available modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3L
Inlude l=2,3 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3AND5L
Inlude l=2,3,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND4L
Include l=3,4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND5L
Inlude l=2,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND5L
Inlude l=3,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_5L
Inlude only l=5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND4AND5L
Inlude l=2,4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND3AND4L
Include l=2,3,4 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_3AND4AND5L
Inlude l=3,4,5 modes.
@ LAL_SIM_INSPIRAL_MODES_CHOICE_2AND4L
Include l=2,4 modes.
@ LAL_SIM_DOMAIN_FREQUENCY
@ 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.
@ NumApproximants
Number of elements in enum, useful for checking bounds.
char * XLALStringToken(char **s, const char *delim, int empty)
void XLALDestroyREAL8FFTPlan(REAL8FFTPlan *plan)
REAL8FFTPlan * XLALCreateReverseREAL8FFTPlan(UINT4 size, int measurelvl)
REAL8FFTPlan * XLALCreateForwardREAL8FFTPlan(UINT4 size, int measurelvl)
void XLALDestroyREAL8Sequence(REAL8Sequence *sequence)
REAL8Sequence * XLALCreateREAL8Sequence(size_t length)
int XLALREAL8TimeFreqFFT(COMPLEX16FrequencySeries *freq, const REAL8TimeSeries *tser, const REAL8FFTPlan *plan)
int XLALREAL8FreqTimeFFT(REAL8TimeSeries *tser, const COMPLEX16FrequencySeries *freq, const REAL8FFTPlan *plan)
REAL8TimeSeries * XLALResizeREAL8TimeSeries(REAL8TimeSeries *series, int first, size_t length)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
const LALUnit lalStrainUnit
const LALUnit lalDimensionlessUnit
int XLALREAL8VectorUnwrapAngle(REAL8Vector *out, const REAL8Vector *in)
int XLALCOMPLEX16VectorArg(REAL8Vector *out, const COMPLEX16Vector *in)
int XLALCOMPLEX16VectorAbs(REAL8Vector *out, const COMPLEX16Vector *in)
void XLALBacktraceErrorHandler(const char *func, const char *file, int line, int errnum)
XLALErrorHandlerType * XLALSetErrorHandler(XLALErrorHandlerType *newHandler)
REAL8 XLALGPSGetREAL8(const LIGOTimeGPS *epoch)
int print_params(struct params params)
int main(int argc, char *argv[])
int output_fd_waveform(COMPLEX16FrequencySeries *htilde_plus, COMPLEX16FrequencySeries *htilde_cross, struct params params)
int usage(const char *program)
int create_td_waveform(REAL8TimeSeries **h_plus, REAL8TimeSeries **h_cross, struct params params)
#define DEFAULT_MEANPERANO
#define DEFAULT_DQUADMON1
#define DEFAULT_LONGASCNODE
#define DEFAULT_DQUADMON2
const char * modes_choice_to_string(LALSimInspiralModesChoice modes)
int create_fd_waveform(COMPLEX16FrequencySeries **htilde_plus, COMPLEX16FrequencySeries **htilde_cross, struct params params)
#define DEFAULT_ECCENTRICITY
#define DEFAULT_INCLINATION
struct params parseargs(int argc, char **argv)
int output_td_waveform(REAL8TimeSeries *h_plus, REAL8TimeSeries *h_cross, struct params params)
const char * frame_axis_to_string(LALSimInspiralFrameAxis axis)
double imr_time_bound(double f_min, double m1, double m2, double s1z, double s2z)