LALSimulation  5.4.0.1-fe68b98
LALSimInspiralTaylorF2Ecc.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 HyunWon Lee, JeongCho Kim, Chunglee Kim, Marc Favata, K.G. Arun
3  * Assembled from code found in:
4  * - LALInspiralStationaryPhaseApproximation2.c
5  * - LALInspiralChooseModel.c
6  * - LALInspiralSetup.c
7  * - LALSimInspiralTaylorF2ReducedSpin.c
8  * - LALSimInspiralTaylorF2.c
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with with program; see the file COPYING. If not, write to the
22  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23  * MA 02110-1301 USA
24  */
25 /*
26 #include <stdlib.h>
27 #include <math.h>
28 #include <lal/Date.h>
29 #include <lal/FrequencySeries.h>
30 #include <lal/LALConstants.h>
31 #include <lal/Sequence.h>
32 #include <lal/LALDatatypes.h>
33 #include <lal/LALSimInspiralEOS.h>
34 #include <lal/LALSimInspiral.h>
35 #include <lal/Units.h>
36 #include <lal/XLALError.h>
37 #include <lal/AVFactories.h>
38 #include "LALSimInspiralPNCoefficients.c"
39 */
40 
41 #ifndef _OPENMP
42 #define omp ignore
43 #endif
44 
45 /**
46  * @addtogroup LALSimInspiralTaylorF2Ecc_c
47  * @brief Routines for generating eccentric TaylorF2 waveforms
48  * @{
49  *
50  * @review TaylorF2Ecc is reviewed, with review statement and git has details available at https://git.ligo.org/waveforms/reviews/taylorf2ecc/wikis/home.
51  *
52  * @name Routines for TaylorF2Ecc Waveforms
53  * @sa
54  * Section IIIF of Alessandra Buonanno, Bala R Iyer, Evan
55  * Ochsner, Yi Pan, and B S Sathyaprakash, "Comparison of post-Newtonian
56  * templates for compact binary inspiral signals in gravitational-wave
57  * detectors", Phys. Rev. D 80, 084043 (2009), arXiv:0907.0700v1
58  *
59  * Section IV of Marc, et al paper Phys. Rev. D 93, 124061 (2016), arXiv:1605.00304.
60  * review page is https://git.ligo.org/waveforms/reviews/taylorf2ecc/wikis/Eccentric-phase-PN-coefficient-form.
61  *
62  * @{
63  */
64 
65 /**
66  * \author Jeongcho Kim, Chunglee Kim, Hyung Won Lee, Marc Favata, K.G. Arun
67  * \file
68  *
69  * \brief Module to compute the eccentric TaylorF2 inspiral waveform for small eccentricity.
70  * Code is based on Section IV of Marc, et al paper Phys. Rev. D 93, 124061 (2016), arXiv:1605.00304.
71  * Code review page is https://git.ligo.org/waveforms/reviews/taylorf2ecc/wikis/Eccentric-phase-PN-coefficient-form.
72  */
73 
75  COMPLEX16FrequencySeries **htilde_out, /**< FD waveform */
76  const REAL8Sequence *freqs, /**< frequency points at which to evaluate the waveform (Hz) */
77  const REAL8 phi_ref, /**< reference orbital phase (rad) */
78  const REAL8 m1_SI, /**< mass of companion 1 (kg) */
79  const REAL8 m2_SI, /**< mass of companion 2 (kg) */
80  const REAL8 f_ref, /**< Reference GW frequency (Hz) - if 0 reference point is coalescence */
81  const REAL8 shft, /**< time shift to be applied to frequency-domain phase (sec)*/
82  const REAL8 r, /**< distance of source (m) */
83  const REAL8 eccentricity, /**< eccentricity effect control < 0 : no eccentricity effect */
84  LALDict *p, /**< Linked list containing the extra parameters >**/
85  PNPhasingSeries *pfaP /**< Phasing coefficients >**/
86  )
87 {
88 
89  if (!htilde_out) XLAL_ERROR(XLAL_EFAULT);
90  if (!freqs) XLAL_ERROR(XLAL_EFAULT);
91  /* external: SI; internal: solar masses */
92  const REAL8 m1 = m1_SI / LAL_MSUN_SI;
93  const REAL8 m2 = m2_SI / LAL_MSUN_SI;
94  const REAL8 m = m1 + m2;
95  const REAL8 m_sec = m * LAL_MTSUN_SI; /* total mass in seconds */
96  const REAL8 eta = m1 * m2 / (m * m);
97  const REAL8 piM = LAL_PI * m_sec;
98  REAL8 amp0;
99  size_t i;
100  COMPLEX16 *data = NULL;
101  LIGOTimeGPS tC = {0, 0};
102  INT4 iStart = 0;
103 
104  COMPLEX16FrequencySeries *htilde = NULL;
105 
106  if (*htilde_out) { //case when htilde_out has been allocated in XLALSimInspiralTaylorF2
107  htilde = *htilde_out;
108  iStart = htilde->data->length - freqs->length; //index shift to fill pre-allocated data
109  if(iStart < 0) XLAL_ERROR(XLAL_EFAULT);
110  }
111  else { //otherwise allocate memory here
112  htilde = XLALCreateCOMPLEX16FrequencySeries("htilde: FD waveform", &tC, freqs->data[0], 0., &lalStrainUnit, freqs->length);
113  if (!htilde) XLAL_ERROR(XLAL_EFUNC);
115  }
116 
117  /* phasing coefficients */
118  PNPhasingSeries pfa = *pfaP;
119 
120  REAL8 pfaN = 0.; REAL8 pfa1 = 0.;
121  REAL8 pfa2 = 0.; REAL8 pfa3 = 0.; REAL8 pfa4 = 0.;
122  REAL8 pfa5 = 0.; REAL8 pfl5 = 0.;
123  REAL8 pfa6 = 0.; REAL8 pfl6 = 0.;
124  REAL8 pfa7 = 0.;
125 
127  switch (phaseO)
128  {
129  case -1:
130  case 7:
131  pfa7 = pfa.v[7];
132 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
133  __attribute__ ((fallthrough));
134 #endif
135  case 6:
136  pfa6 = pfa.v[6];
137  pfl6 = pfa.vlogv[6];
138 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
139  __attribute__ ((fallthrough));
140 #endif
141  case 5:
142  pfa5 = pfa.v[5];
143  pfl5 = pfa.vlogv[5];
144 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
145  __attribute__ ((fallthrough));
146 #endif
147  case 4:
148  pfa4 = pfa.v[4];
149 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
150  __attribute__ ((fallthrough));
151 #endif
152  case 3:
153  pfa3 = pfa.v[3];
154 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
155  __attribute__ ((fallthrough));
156 #endif
157  case 2:
158  pfa2 = pfa.v[2];
159 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
160  __attribute__ ((fallthrough));
161 #endif
162  case 1:
163  pfa1 = pfa.v[1];
164 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
165  __attribute__ ((fallthrough));
166 #endif
167  case 0:
168  pfaN = pfa.v[0];
169  break;
170  default:
171  XLAL_ERROR(XLAL_ETYPE, "Invalid phase PN order %d", phaseO);
172  }
173 
174  /* Validate expansion order arguments.
175  * This must be done here instead of in the OpenMP parallel loop
176  * because when OpenMP parallelization is turned on, early exits
177  * from loops (via return or break statements) are not permitted.
178  */
179 
180  /* Validate amplitude PN order. */
182  switch (amplitudeO)
183  {
184  case -1:
185  case 7:
186  case 6:
187  case 5:
188  case 4:
189  case 3:
190  case 2:
191  case 0:
192  break;
193  default:
194  XLAL_ERROR(XLAL_ETYPE, "Invalid amplitude PN order %d", amplitudeO);
195  }
196 
197  /* Generate tidal terms separately.
198  * Enums specifying tidal order are in LALSimInspiralWaveformFlags.h
199  */
200  REAL8 pft10 = 0.;
201  REAL8 pft12 = 0.;
202  REAL8 pft13 = 0.;
203  REAL8 pft14 = 0.;
204  REAL8 pft15 = 0.;
206  {
209  pft15 = pfa.v[15];
210 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
211  __attribute__ ((fallthrough));
212 #endif
214  pft14 = pfa.v[14];
215 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
216  __attribute__ ((fallthrough));
217 #endif
219  pft13 = pfa.v[13];
220 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
221  __attribute__ ((fallthrough));
222 #endif
224  pft12 = pfa.v[12];
225 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
226  __attribute__ ((fallthrough));
227 #endif
229  pft10 = pfa.v[10];
230 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
231  __attribute__ ((fallthrough));
232 #endif
234  break;
235  default:
237  }
238 
239  /* The flux and energy coefficients below are used to compute SPA amplitude corrections */
240 
241  /* flux coefficients */
242  const REAL8 FTaN = XLALSimInspiralPNFlux_0PNCoeff(eta);
243  const REAL8 FTa2 = XLALSimInspiralPNFlux_2PNCoeff(eta);
244  const REAL8 FTa3 = XLALSimInspiralPNFlux_3PNCoeff(eta);
245  const REAL8 FTa4 = XLALSimInspiralPNFlux_4PNCoeff(eta);
246  const REAL8 FTa5 = XLALSimInspiralPNFlux_5PNCoeff(eta);
247  const REAL8 FTl6 = XLALSimInspiralPNFlux_6PNLogCoeff(eta);
248  const REAL8 FTa6 = XLALSimInspiralPNFlux_6PNCoeff(eta);
249  const REAL8 FTa7 = XLALSimInspiralPNFlux_7PNCoeff(eta);
250 
251  /* energy coefficients */
252  const REAL8 dETaN = 2. * XLALSimInspiralPNEnergy_0PNCoeff(eta);
253  const REAL8 dETa1 = 2. * XLALSimInspiralPNEnergy_2PNCoeff(eta);
254  const REAL8 dETa2 = 3. * XLALSimInspiralPNEnergy_4PNCoeff(eta);
255  const REAL8 dETa3 = 4. * XLALSimInspiralPNEnergy_6PNCoeff(eta);
256 
257 
258  /* Perform some initial checks */
259  if (m1_SI <= 0) XLAL_ERROR(XLAL_EDOM);
260  if (m2_SI <= 0) XLAL_ERROR(XLAL_EDOM);
261  if (f_ref < 0) XLAL_ERROR(XLAL_EDOM);
262  if (r <= 0) XLAL_ERROR(XLAL_EDOM);
263 
264  /* extrinsic parameters */
265  amp0 = -4. * m1 * m2 / r * LAL_MRSUN_SI * LAL_MTSUN_SI * sqrt(LAL_PI/12.L);
266 
267  data = htilde->data->data;
268 
269  REAL8 v_ecc_ref = 0.0;
271  if( eccentricity > 0) {
272  v_ecc_ref = cbrt(piM*f_ecc);
273  }
274 
275  /* Compute the SPA phase at the reference point
276  * N.B. f_ref == 0 means we define the reference time/phase at "coalescence"
277  * when the frequency approaches infinity. In that case,
278  * the integrals Eq. 3.15 of arXiv:0907.0700 vanish when evaluated at
279  * f_ref == infinity. If f_ref is finite, we must compute the SPA phase
280  * evaluated at f_ref, store it as ref_phasing and subtract it off.
281  */
282  REAL8 ref_phasing = 0.;
284  if( f_ref != 0. ) {
285  const REAL8 vref = cbrt(piM*f_ref);
286  const REAL8 logvref = log(vref);
287  const REAL8 v2ref = vref * vref;
288  const REAL8 v3ref = vref * v2ref;
289  const REAL8 v4ref = vref * v3ref;
290  const REAL8 v5ref = vref * v4ref;
291  const REAL8 v6ref = vref * v5ref;
292  const REAL8 v7ref = vref * v6ref;
293  const REAL8 v8ref = vref * v7ref;
294  const REAL8 v9ref = vref * v8ref;
295  const REAL8 v10ref = vref * v9ref;
296  const REAL8 v12ref = v2ref * v10ref;
297  const REAL8 v13ref = vref * v12ref;
298  const REAL8 v14ref = vref * v13ref;
299  const REAL8 v15ref = vref * v14ref;
300  ref_phasing += pfa7 * v7ref;
301  ref_phasing += (pfa6 + pfl6 * logvref) * v6ref;
302  ref_phasing += (pfa5 + pfl5 * logvref) * v5ref;
303  ref_phasing += pfa4 * v4ref;
304  ref_phasing += pfa3 * v3ref;
305  ref_phasing += pfa2 * v2ref;
306  ref_phasing += pfa1 * vref;
307  ref_phasing += pfaN;
308 
309  /* Tidal terms in reference phasing */
310  ref_phasing += pft15 * v15ref;
311  ref_phasing += pft14 * v14ref;
312  ref_phasing += pft13 * v13ref;
313  ref_phasing += pft12 * v12ref;
314  ref_phasing += pft10 * v10ref;
315 
316  /* Eccentricity terms in phasing */
317  if( eccentricity > 0 ) {
318  ref_phasing += eccentricityPhasing_F2(vref, v_ecc_ref, eccentricity, eta, ecc_order);
319  }
320 
321  ref_phasing /= v5ref;
322  } /* End of if(f_ref != 0) block */
323 
324  #pragma omp parallel for
325  for (i = 0; i < freqs->length; i++) {
326  const REAL8 f = freqs->data[i];
327  const REAL8 v = cbrt(piM*f);
328  const REAL8 logv = log(v);
329  const REAL8 v2 = v * v;
330  const REAL8 v3 = v * v2;
331  const REAL8 v4 = v * v3;
332  const REAL8 v5 = v * v4;
333  const REAL8 v6 = v * v5;
334  const REAL8 v7 = v * v6;
335  const REAL8 v8 = v * v7;
336  const REAL8 v9 = v * v8;
337  const REAL8 v10 = v * v9;
338  const REAL8 v12 = v2 * v10;
339  const REAL8 v13 = v * v12;
340  const REAL8 v14 = v * v13;
341  const REAL8 v15 = v * v14;
342  REAL8 phasing = 0.;
343  REAL8 dEnergy = 0.;
344  REAL8 flux = 0.;
345  REAL8 amp;
346 
347  phasing += pfa7 * v7;
348  phasing += (pfa6 + pfl6 * logv) * v6;
349  phasing += (pfa5 + pfl5 * logv) * v5;
350  phasing += pfa4 * v4;
351  phasing += pfa3 * v3;
352  phasing += pfa2 * v2;
353  phasing += pfa1 * v;
354  phasing += pfaN;
355 
356  /* Tidal terms in phasing */
357  phasing += pft15 * v15;
358  phasing += pft14 * v14;
359  phasing += pft13 * v13;
360  phasing += pft12 * v12;
361  phasing += pft10 * v10;
362 
363  /* Eccentricity terms in phasing */
364  if( eccentricity > 0 ) {
365  phasing += eccentricityPhasing_F2(v, v_ecc_ref, eccentricity, eta, ecc_order);
366  }
367  phasing /= v5;
368 
369  /* WARNING! Amplitude orders beyond 0 have NOT been reviewed!
370  * Use at your own risk. The default is to turn them off.
371  * These do not currently include spin corrections.
372  * Note that these are not higher PN corrections to the amplitude.
373  * They are the corrections to the leading-order amplitude arising
374  * from the stationary phase approximation. See for instance
375  * Eq 6.9 of arXiv:0810.5336
376  */
377  switch (amplitudeO)
378  {
379  case 7:
380  flux += FTa7 * v7;
381 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
382  __attribute__ ((fallthrough));
383 #endif
384  case 6:
385  flux += (FTa6 + FTl6*logv) * v6;
386  dEnergy += dETa3 * v6;
387 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
388  __attribute__ ((fallthrough));
389 #endif
390  case 5:
391  flux += FTa5 * v5;
392 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
393  __attribute__ ((fallthrough));
394 #endif
395  case 4:
396  flux += FTa4 * v4;
397  dEnergy += dETa2 * v4;
398 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
399  __attribute__ ((fallthrough));
400 #endif
401  case 3:
402  flux += FTa3 * v3;
403 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
404  __attribute__ ((fallthrough));
405 #endif
406  case 2:
407  flux += FTa2 * v2;
408  dEnergy += dETa1 * v2;
409 #if __GNUC__ >= 7 && !defined __INTEL_COMPILER
410  __attribute__ ((fallthrough));
411 #endif
412  case -1: /* Default to no SPA amplitude corrections */
413  case 0:
414  flux += 1.;
415  dEnergy += 1.;
416  }
417 
418  flux *= FTaN * v10;
419  dEnergy *= dETaN * v;
420  // Note the factor of 2 b/c phi_ref is orbital phase
421  phasing += shft * f - 2.*phi_ref - ref_phasing;
422  amp = amp0 * sqrt(-dEnergy/flux) * v;
423  data[i+iStart] = amp * cos(phasing - LAL_PI_4)
424  - amp * sin(phasing - LAL_PI_4) * 1.0j;
425  }
426 
427  *htilde_out = htilde;
428  return XLAL_SUCCESS;
429 }
430 
431 /**
432  * Computes the stationary phase approximation to the Fourier transform of
433  * a chirp waveform with eccentric correction. The amplitude is given by expanding \f$1/\sqrt{\dot{F}}\f$.
434  * If the PN order is set to -1, then the highest implemented order is used.
435  *
436  * @note f_ref is the GW frequency at which phi_ref is defined. The most common
437  * choice in the literature is to choose the reference point as "coalescence",
438  * when the frequency becomes infinite. This is the behavior of the code when
439  * f_ref==0. If f_ref > 0, phi_ref sets the orbital phase at that GW frequency.
440  *
441  * See arXiv:0810.5336 and arXiv:astro-ph/0504538 for spin corrections
442  * to the phasing.
443  * See arXiv:1303.7412 for spin-orbit phasing corrections at 3 and 3.5PN order
444  * See Phys. Rev. Lett. 112, 101101(2014) for eccentric phasing corrections upto 3PN order
445  *
446  * The spin and tidal order enums are defined in LALSimInspiralWaveformFlags.h
447  */
449  COMPLEX16FrequencySeries **htilde_out, /**< FD waveform */
450  const REAL8 phi_ref, /**< reference orbital phase (rad) */
451  const REAL8 deltaF, /**< frequency resolution */
452  const REAL8 m1_SI, /**< mass of companion 1 (kg) */
453  const REAL8 m2_SI, /**< mass of companion 2 (kg) */
454  const REAL8 S1z, /**< z component of the spin of companion 1 */
455  const REAL8 S2z, /**< z component of the spin of companion 2 */
456  const REAL8 fStart, /**< start GW frequency (Hz) */
457  const REAL8 fEnd, /**< highest GW frequency (Hz) of waveform generation - if 0, end at Schwarzschild ISCO */
458  const REAL8 f_ref, /**< Reference GW frequency (Hz) - if 0 reference point is coalescence */
459  const REAL8 r, /**< distance of source (m) */
460  const REAL8 eccentricity, /**< eccentricity effect control < 0 : no eccentricity effect */
461  LALDict *p /**< Linked list containing the extra parameters >**/
462  )
463 {
464  /* external: SI; internal: solar masses */
465  const REAL8 m1 = m1_SI / LAL_MSUN_SI;
466  const REAL8 m2 = m2_SI / LAL_MSUN_SI;
467  const REAL8 m = m1 + m2;
468  const REAL8 m_sec = m * LAL_MTSUN_SI; /* total mass in seconds */
469  // const REAL8 eta = m1 * m2 / (m * m);
470  const REAL8 piM = LAL_PI * m_sec;
471  const REAL8 vISCO = 1. / sqrt(6.);
472  const REAL8 fISCO = vISCO * vISCO * vISCO / piM;
473  //const REAL8 m1OverM = m1 / m;
474  // const REAL8 m2OverM = m2 / m;
475  REAL8 shft, f_max;
476  size_t i, n;
477  INT4 iStart;
478  REAL8Sequence *freqs = NULL;
479  LIGOTimeGPS tC = {0, 0};
480  int ret;
481  int retcode;
482  REAL8 fCONT;
487  XLAL_CHECK(retcode == XLAL_SUCCESS, XLAL_EFUNC, "Failed to set quadparams from Universal relation.\n");
488 
489  COMPLEX16FrequencySeries *htilde = NULL;
490 
491  /* Perform some initial checks */
492  if (!htilde_out) XLAL_ERROR(XLAL_EFAULT);
493  if (*htilde_out) XLAL_ERROR(XLAL_EFAULT);
494  if (m1_SI <= 0) XLAL_ERROR(XLAL_EDOM);
495  if (m2_SI <= 0) XLAL_ERROR(XLAL_EDOM);
496  if (fStart <= 0) XLAL_ERROR(XLAL_EDOM);
497  if (f_ref < 0) XLAL_ERROR(XLAL_EDOM);
498  if (r <= 0) XLAL_ERROR(XLAL_EDOM);
499  if (eccentricity < 0.0 || eccentricity >= 1.0) XLAL_ERROR(XLAL_EDOM);
500 
501  /* allocate htilde */
502  if ( (fEnd == 0.) && ( tideO == 0)) // End at ISCO
503  f_max = fISCO;
504  else if ( (fEnd == 0.) && ( tideO != 0 )) { // End at the minimum of the contact and ISCO frequencies only when tides are enabled
505  fCONT = XLALSimInspiralContactFrequency(m1, lambda1, m2, lambda2); /* Contact frequency of two compact objects */
506  f_max = (fCONT > fISCO) ? fISCO : fCONT;
507  }
508  else // End at user-specified freq.
509  f_max = fEnd;
510  if (f_max <= fStart) XLAL_ERROR(XLAL_EDOM);
511 
512  n = (size_t) (f_max / deltaF + 1);
513  XLALGPSAdd(&tC, -1 / deltaF); /* coalesce at t=0 */
514  htilde = XLALCreateCOMPLEX16FrequencySeries("htilde: FD waveform", &tC, 0.0, deltaF, &lalStrainUnit, n);
515  if (!htilde) XLAL_ERROR(XLAL_EFUNC);
516  memset(htilde->data->data, 0, n * sizeof(COMPLEX16));
518 
519  /* Fill with non-zero vals from fStart to f_max */
520  iStart = (INT4) ceil(fStart / deltaF);
521 
522  /* Sequence of frequencies where waveform model is to be evaluated */
523  freqs = XLALCreateREAL8Sequence(n - iStart);
524 
525  /* extrinsic parameters */
526  shft = LAL_TWOPI * (tC.gpsSeconds + 1e-9 * tC.gpsNanoSeconds);
527 
528  #pragma omp parallel for
529  for (i = iStart; i < n; i++) {
530  freqs->data[i-iStart] = i * deltaF;
531  }
532 
533  /* phasing coefficients */
534  PNPhasingSeries pfa;
535  XLALSimInspiralPNPhasing_F2(&pfa, m1, m2, S1z, S2z, S1z*S1z, S2z*S2z, S1z*S2z, p);
536  ret = XLALSimInspiralTaylorF2CoreEcc(&htilde, freqs, phi_ref, m1_SI, m2_SI,
537  f_ref, shft, r, eccentricity, p, &pfa);
538 
540 
541  *htilde_out = htilde;
542 
543  return ret;
544 }
545 
546 /** @} */
547 /** @} */
int XLALSimInspiralSetQuadMonParamsFromLambdas(LALDict *LALparams)
if you do NOT provide a quadparam[1,2] term and you DO provide lamdba[1,2] then we calculate quad-mon...
REAL8 XLALSimInspiralContactFrequency(REAL8 m1_intr, REAL8 barlambda1, REAL8 m2_intr, REAL8 barlambda2)
This function estimates the radius for a binary of given masses and tidal deformability parameters.
static REAL8 UNUSED XLALSimInspiralPNFlux_5PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_4PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_0PNCoeff(REAL8 eta)
Computes the flux PN Coefficients.
static REAL8 UNUSED XLALSimInspiralPNFlux_3PNCoeff(REAL8 UNUSED eta)
static REAL8 UNUSED XLALSimInspiralPNEnergy_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_4PNCoeff(REAL8 eta)
static REAL8 UNUSED eccentricityPhasing_F2(REAL8 v, REAL8 v0, REAL8 ecc, REAL8 eta, INT4 ecc_order)
Compute eccentric phase correction term using eccPNCeoffs[k][i][j].
static REAL8 UNUSED XLALSimInspiralPNEnergy_0PNCoeff(REAL8 eta)
Computes the PN Coefficients for using in the PN energy equation.
static REAL8 UNUSED XLALSimInspiralPNFlux_2PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_7PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNCoeff(REAL8 eta)
static REAL8 UNUSED XLALSimInspiralPNFlux_6PNLogCoeff(REAL8 UNUSED eta)
static void UNUSED XLALSimInspiralPNPhasing_F2(PNPhasingSeries *pfa, const REAL8 m1, const REAL8 m2, const REAL8 chi1L, const REAL8 chi2L, const REAL8 chi1sq, const REAL8 chi2sq, const REAL8 chi1dotchi2, LALDict *p)
static REAL8 UNUSED XLALSimInspiralPNEnergy_6PNCoeff(REAL8 eta)
REAL8 XLALSimInspiralWaveformParamsLookupTidalLambda2(LALDict *params)
REAL8 XLALSimInspiralWaveformParamsLookupEccentricityFreq(LALDict *params)
REAL8 XLALSimInspiralWaveformParamsLookupTidalLambda1(LALDict *params)
INT4 XLALSimInspiralWaveformParamsLookupPNPhaseOrder(LALDict *params)
INT4 XLALSimInspiralWaveformParamsLookupPNAmplitudeOrder(LALDict *params)
INT4 XLALSimInspiralWaveformParamsLookupPNTidalOrder(LALDict *params)
INT4 XLALSimInspiralWaveformParamsLookupPNEccentricityOrder(LALDict *params)
double i
Definition: bh_ringdown.c:118
double e
Definition: bh_ringdown.c:117
sigmaKerr data[0]
#define __attribute__(x)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
#define LAL_MSUN_SI
#define LAL_PI
#define LAL_TWOPI
#define LAL_MTSUN_SI
#define LAL_PI_4
#define LAL_MRSUN_SI
double complex COMPLEX16
double REAL8
int32_t INT4
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_5PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_6PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_ALL
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_75PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_7PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_0PN
@ LAL_SIM_INSPIRAL_TIDAL_ORDER_65PN
int XLALSimInspiralTaylorF2Ecc(COMPLEX16FrequencySeries **htilde_out, const REAL8 phi_ref, const REAL8 deltaF, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 S1z, const REAL8 S2z, const REAL8 fStart, const REAL8 fEnd, const REAL8 f_ref, const REAL8 r, const REAL8 eccentricity, LALDict *p)
Computes the stationary phase approximation to the Fourier transform of a chirp waveform with eccentr...
int XLALSimInspiralTaylorF2CoreEcc(COMPLEX16FrequencySeries **htilde_out, const REAL8Sequence *freqs, const REAL8 phi_ref, const REAL8 m1_SI, const REAL8 m2_SI, const REAL8 f_ref, const REAL8 shft, const REAL8 r, const REAL8 eccentricity, LALDict *p, PNPhasingSeries *pfaP)
static const INT4 r
static const INT4 m
void XLALDestroyREAL8Sequence(REAL8Sequence *sequence)
REAL8Sequence * XLALCreateREAL8Sequence(size_t length)
const LALUnit lalStrainUnit
const LALUnit lalSecondUnit
LALUnit * XLALUnitMultiply(LALUnit *output, const LALUnit *unit1, const LALUnit *unit2)
#define XLAL_ERROR(...)
#define XLAL_CHECK(assertion,...)
XLAL_SUCCESS
XLAL_EFAULT
XLAL_EFUNC
XLAL_EDOM
XLAL_ETYPE
XLAL_EINVAL
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
list p
COMPLEX16Sequence * data
COMPLEX16 * data
INT4 gpsNanoSeconds
REAL8 vlogv[PN_PHASING_SERIES_MAX_ORDER+1]
REAL8 v[PN_PHASING_SERIES_MAX_ORDER+1]
REAL8 * data
double f_max
Definition: unicorn.c:23