LALSimulation  5.4.0.1-fe68b98
LALSimIMRSpinEOBFactorizedWaveform_PA.c
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2010 Craig Robinson, Yi Pan, Prayush Kumar, Andrea Taracchini
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with with program; see the file COPYING. If not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * MA 02110-1301 USA
18 */
19 
20 
21 /**
22  * \author Craig Robinson, Yi Pan, Prayush Kumar, Andrea Taracchini
23  *
24  * \brief Function to compute the factorized waveform as uses in the SEOBNRv1 model.
25  * Waveform expressions are given by
26  * Taracchini et al. ( PRD 86, 024011 (2012), arXiv 1202.0790 ).
27  * All equation numbers in this file refer to equations of this paper,
28  * unless otherwise specified.
29  * Coefficients of the so-called "deltalm" terms are given by
30  * Damour et al. PRD 79, 064004 (2009) [arXiv:0811.2069] and Pan et al. PRD 83, 064003 (2011) [arXiv:1006.0431],
31  * henceforth DIN and PBFRT.
32  *
33  * Functions to compute the factorized waveform for the purpose of computing the
34  * flux, i.e. returning only the absolute value of the multipoles. The tail term
35  * Tlm is used in its resummed form, given by Eq. (42) of Damour, Nagar and
36  * Bernuzzi, PRD 87 084035 (2013) [arxiv:1212.4357], called DNB here.
37  *
38  */
39 
40 #ifndef _LALSIMIMRSPINEOBFACTORIZEDWAVEFORMPA_C
41 #define _LALSIMIMRSPINEOBFACTORIZEDWAVEFORMPA_C
42 
43 #include <complex.h>
44 
45 #include <gsl/gsl_vector.h>
46 #include <gsl/gsl_matrix.h>
47 #include <gsl/gsl_spline.h>
48 #include <gsl/gsl_linalg.h>
49 
50 #include <lal/LALSimInspiral.h>
51 #include <lal/LALSimIMR.h>
52 #include <lal/XLALGSL.h>
53 
54 #include "LALSimIMREOBNRv2.h"
55 #include "LALSimIMRSpinEOB.h"
56 
59 // #include "LALSimIMREOBNQCCorrection.c"
60 // #include "LALSimIMRSpinEOBHamiltonian.c"
61 
62 /* OPTIMIZED */
63 // #include "LALSimIMRSpinEOBHamiltonianOptimized.c"
64 /* END OPTIMIZED */
65 
66 /*------------------------------------------------------------------------------------------
67  *
68  * Prototypes of functions defined in this code.
69  *
70  *------------------------------------------------------------------------------------------
71  */
72 
73 
74 UNUSED static INT4 XLALSimIMRSpinEOBGetSpinFactorizedWaveform_PA (COMPLEX16 * restrict hlm, REAL8Vector * restrict values, const REAL8 v, const REAL8 Hreal, const INT4 l, const INT4 m, SpinEOBParams * restrict params, REAL8 vPhi
75  /**< Use optimized v2? */
76  );
77 
78 
79 
80 
81 /**
82  * This function calculates hlm mode factorized-resummed waveform
83  * for given dynamical variables.
84  * Eq. 17 and the entire Appendix of the paper.
85  */
86 static INT4
88  /**< OUTPUT, hlm waveforms */
89  REAL8Vector * restrict values,
90  /**< dyanmical variables */
91  const REAL8 v,
92  /**< velocity */
93  const REAL8 Hreal,
94  /**< real Hamiltonian */
95  const INT4 l,
96  /**< l mode index */
97  const INT4 m,
98  /**< m mode index */
99  SpinEOBParams * restrict params,
100  /**< Spin EOB parameters */
101  REAL8 vPhi
102  /**< NonKepler coeff */
103  )
104 {
105  /* Status of function calls */
106  INT4 status;
107  INT4 i;
108  INT4 use_hm = 0;
109 
110 
111  REAL8 eta;
112  REAL8 r, pp, Omega, v2, vh, vh3, k, hathatk, eulerlogxabs; //pr
113  REAL8 Slm, deltalm, rholm;
114  COMPLEX16 auxflm = 0.0;
115  COMPLEX16 Tlm, rholmPwrl;
116  COMPLEX16 hNewton;
117  gsl_sf_result lnr1, arg1, z2;
118 
119  /* Non-Keplerian velocity */
120  REAL8 vPhi2;
121 
122  /* Pre-computed coefficients */
123  FacWaveformCoeffs *hCoeffs = params->eobParams->hCoeffs;
124 
125  if (abs (m) > l)
126  {
128  }
129  if (m == 0)
130  {
132  }
133  use_hm = params->use_hm;
134  eta = params->eobParams->eta;
135 
136  /* Check our eta was sensible */
137  if (eta > 0.25 && eta < 0.25 +1e-4) {
138  eta = 0.25;
139  }
140  if (eta > 0.25)
141  {
143  ("XLAL Error - %s: Eta = %.16f seems to be > 0.25 - this isn't allowed!\n",
144  __func__,eta);
146  }
147  /*else if ( eta == 0.25 && m % 2 )
148  {
149  // If m is odd and dM = 0, hLM will be zero
150  memset( hlm, 0, sizeof( COMPLEX16 ) );
151  return XLAL_SUCCESS;
152  } */
153 
154  r = values->data[0];
155  //pr = values->data[2];
156  pp = values->data[3];
157 
158  v2 = v * v;
159  Omega = v2 * v;
160  vh3 = Hreal * Omega;
161  vh = cbrt (vh3);
162  eulerlogxabs = LAL_GAMMA + log (2.0 * (REAL8) m * v);
163 
164  /* Calculate the non-Keplerian velocity */
165  if (params->alignedSpins)
166  {
167 
168  vPhi = r * cbrt (vPhi);
169  vPhi *= Omega;
170  vPhi2 = vPhi * vPhi;
171  }
172  else
173  {
174  vPhi = v;
175  vPhi2 = v2;
176  }
177  /* Calculate the newtonian multipole, 1st term in Eq. 17, given by Eq. A1 */
178  // YP: !!!!! SEOBNRv3devel temporary change !!!!!
180  values->data[1],
181  (UINT4) l, m,
182  params->eobParams);
183 #if YPPrecWave
185  values->data[12] +
186  values->data[13],
187  (UINT4) l, m,
188  params->eobParams);
189 #endif
190  // YP: !!!!! SEOBNRv3devel temporary change !!!!!
191  if (status == XLAL_FAILURE)
192  {
194  }
195  /* Calculate the source term, 2nd term in Eq. 17, given by Eq. A5 */
196  if (((l + m) % 2) == 0)
197  {
198  Slm = (Hreal * Hreal - 1.) / (2. * eta) + 1.;
199  }
200  else
201  {
202  Slm = v * pp;
203  }
204  //printf( "Hreal = %e, Slm = %e, eta = %e\n", Hreal, Slm, eta );
205 
206  /* Calculate the Tail term, 3rd term in Eq. 17, given by Eq. A6 */
207  k = m * Omega;
208  hathatk = Hreal * k;
210  gsl_sf_lngamma_complex_e (l + 1.0, -2.0 * hathatk, &lnr1,
211  &arg1));
212  if (status != GSL_SUCCESS)
213  {
214  XLALPrintError ("XLAL Error - %s: Error in GSL function: %s\n",
215  __func__, gsl_strerror (status));
217  }
218  XLAL_CALLGSL (status = gsl_sf_fact_e (l, &z2));
219  if (status != GSL_SUCCESS)
220  {
221  XLALPrintError ("XLAL Error - %s: Error in GSL function: %s\n",
222  __func__, gsl_strerror (status));
224  }
225  Tlm =
226  cexp ((lnr1.val + LAL_PI * hathatk) +
227  I * (arg1.val + 2.0 * hathatk * log (4.0 * k / sqrt (LAL_E))));
228  Tlm /= z2.val;
229 
230 
231  /* Calculate the residue phase and amplitude terms */
232  /* deltalm is the 4th term in Eq. 17, delta 22 given by Eq. A15, others */
233  /* rholm is the 5th term in Eq. 17, given by Eqs. A8 - A14 */
234  /* auxflm is a special part of the 5th term in Eq. 17, given by Eq. A15 */
235  /* Actual values of the coefficients are defined in the next function of this file */
236  switch (l)
237  {
238  case 2:
239  switch (abs (m))
240  {
241  case 2:
242  deltalm = vh3 * (hCoeffs->delta22vh3 + vh3 * (hCoeffs->delta22vh6
243  +
244  vh * vh *
245  (hCoeffs->delta22vh9 *
246  vh))) +
247  hCoeffs->delta22v5 * v * v2 * v2 +
248  hCoeffs->delta22v6 * v2 * v2 * v2 +
249  hCoeffs->delta22v8 * v2 * v2 * v2 * v2;
250  rholm =
251  1. + v2 * (hCoeffs->rho22v2 +
252  v * (hCoeffs->rho22v3 +
253  v * (hCoeffs->rho22v4 +
254  v * (hCoeffs->rho22v5 +
255  v * (hCoeffs->rho22v6 +
256  hCoeffs->rho22v6l * eulerlogxabs +
257  v * (hCoeffs->rho22v7 +
258  v * (hCoeffs->rho22v8 +
259  hCoeffs->rho22v8l *
260  eulerlogxabs +
261  (hCoeffs->rho22v10 +
262  hCoeffs->rho22v10l *
263  eulerlogxabs) *
264  v2)))))));
265  break;
266  case 1:
267  {
268  deltalm = vh3 * (hCoeffs->delta21vh3 + vh3 * (hCoeffs->delta21vh6
269  +
270  vh *
271  (hCoeffs->
272  delta21vh7 +
273  (hCoeffs->
274  delta21vh9) * vh *
275  vh))) +
276  hCoeffs->delta21v5 * v * v2 * v2 +
277  hCoeffs->delta21v7 * v2 * v2 * v2 * v;
278  rholm =
279  1. + v * (hCoeffs->rho21v1 +
280  v * (hCoeffs->rho21v2 +
281  v * (hCoeffs->rho21v3 +
282  v * (hCoeffs->rho21v4 +
283  v * (hCoeffs->rho21v5 +
284  v * (hCoeffs->rho21v6 +
285  hCoeffs->rho21v6l *
286  eulerlogxabs +
287  v * (hCoeffs->rho21v7 +
288  hCoeffs->rho21v7l *
289  eulerlogxabs +
290  v * (hCoeffs->rho21v8 +
291  hCoeffs->rho21v8l *
292  eulerlogxabs +
293  (hCoeffs->
294  rho21v10 +
295  hCoeffs->
296  rho21v10l *
297  eulerlogxabs) *
298  v2))))))));
299  if (use_hm){
300  //RC: This terms are in Eq.A11 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
301  auxflm = v * (hCoeffs->f21v1 + v2 * (hCoeffs->f21v3 + v * hCoeffs->f21v4 + v2 * (hCoeffs->f21v5 + v * hCoeffs->f21v6 + v2*hCoeffs->f21v7c)));
302  }
303  else{
304  auxflm = v * hCoeffs->f21v1;
305  }
306  }
307  break;
308  default:
310  break;
311  }
312  break;
313  case 3:
314  switch (m)
315  {
316  case 3:
317  deltalm =
318  vh3 * (hCoeffs->delta33vh3 +
319  vh3 * (hCoeffs->delta33vh6 + hCoeffs->delta33vh9 * vh3)) +
320  hCoeffs->delta33v5 * v * v2 * v2;
321  if(use_hm){
322  //RC: This terms are in Eq.A6 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
323  rholm =
324  1. + v2 * (hCoeffs->rho33v2 +
325  v * (hCoeffs->rho33v3 +
326  v * (hCoeffs->rho33v4 +
327  v * (hCoeffs->rho33v5 +
328  v * (hCoeffs->rho33v6 +
329  hCoeffs->rho33v6l * eulerlogxabs +
330  v * (hCoeffs->rho33v7 +
331  v * (hCoeffs->rho33v8 +
332  hCoeffs->rho33v8l *
333  eulerlogxabs +
334  v2*(hCoeffs->rho33v10 + hCoeffs->rho33v10l*eulerlogxabs))))))));
335  //RC: This terms are in Eq.A10 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
336  auxflm = v * (v2 * (hCoeffs->f33v3 + v * (hCoeffs->f33v4 + v * (hCoeffs->f33v5 + v * hCoeffs->f33v6)))) + _Complex_I * vh3 * vh3 * hCoeffs->f33vh6;
337  }
338  else
339  {
340  rholm =
341  1. + v2 * (hCoeffs->rho33v2 +
342  v * (hCoeffs->rho33v3 +
343  v * (hCoeffs->rho33v4 +
344  v * (hCoeffs->rho33v5 +
345  v * (hCoeffs->rho33v6 +
346  hCoeffs->rho33v6l * eulerlogxabs +
347  v * (hCoeffs->rho33v7 +
348  v * (hCoeffs->rho33v8 +
349  hCoeffs->rho33v8l *
350  eulerlogxabs)))))));
351  auxflm = v * v2 * hCoeffs->f33v3;
352  }
353  break;
354  case 2:
355  deltalm =
356  vh3 * (hCoeffs->delta32vh3 +
357  vh * (hCoeffs->delta32vh4 +
358  vh * vh * (hCoeffs->delta32vh6 +
359  hCoeffs->delta32vh9 * vh3)));
360  rholm =
361  1. + v * (hCoeffs->rho32v +
362  v * (hCoeffs->rho32v2 +
363  v * (hCoeffs->rho32v3 +
364  v * (hCoeffs->rho32v4 +
365  v * (hCoeffs->rho32v5 +
366  v * (hCoeffs->rho32v6 +
367  hCoeffs->rho32v6l *
368  eulerlogxabs +
369  (hCoeffs->rho32v8 +
370  hCoeffs->rho32v8l *
371  eulerlogxabs) * v2))))));
372  break;
373  case 1:
374  deltalm = vh3 * (hCoeffs->delta31vh3 + vh3 * (hCoeffs->delta31vh6
375  +
376  vh *
377  (hCoeffs->delta31vh7 +
378  hCoeffs->delta31vh9 *
379  vh * vh))) +
380  hCoeffs->delta31v5 * v * v2 * v2;
381  rholm =
382  1. + v2 * (hCoeffs->rho31v2 +
383  v * (hCoeffs->rho31v3 +
384  v * (hCoeffs->rho31v4 +
385  v * (hCoeffs->rho31v5 +
386  v * (hCoeffs->rho31v6 +
387  hCoeffs->rho31v6l * eulerlogxabs +
388  v * (hCoeffs->rho31v7 +
389  (hCoeffs->rho31v8 +
390  hCoeffs->rho31v8l *
391  eulerlogxabs) * v))))));
392  auxflm = v * v2 * hCoeffs->f31v3;
393  break;
394  default:
396  break;
397  }
398  break;
399  case 4:
400  switch (m)
401  {
402  case 4:
403  if(use_hm){
404  //RC: This terms are in Eq.A15 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
405  deltalm = vh3 * (hCoeffs->delta44vh3 + vh3 * (hCoeffs->delta44vh6 + vh3 * hCoeffs->delta44vh9))
406  + hCoeffs->delta44v5 * v2 * v2 * v;
407  //RC: This terms are in Eq.A8 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
408  rholm = 1. + v2 * (hCoeffs->rho44v2
409  + v * (hCoeffs->rho44v3 + v * (hCoeffs->rho44v4
410  +
411  v *
412  (hCoeffs->
413  rho44v5 +
414  v * (hCoeffs->
415  rho44v6 +
416  hCoeffs->
417  rho44v6l *
418  eulerlogxabs +
419  v2 *( hCoeffs->rho44v8 + hCoeffs->rho44v8l * eulerlogxabs
420  +v2 * (hCoeffs->rho44v10 + hCoeffs->rho44v10l * eulerlogxabs) ) )))));
421  }
422  else{
423  deltalm = vh3 * (hCoeffs->delta44vh3 + hCoeffs->delta44vh6 * vh3)
424  + hCoeffs->delta44v5 * v2 * v2 * v;
425 
426  rholm = 1. + v2 * (hCoeffs->rho44v2
427  + v * (hCoeffs->rho44v3 + v * (hCoeffs->rho44v4
428  +
429  v *
430  (hCoeffs->
431  rho44v5 +
432  (hCoeffs->
433  rho44v6 +
434  hCoeffs->
435  rho44v6l *
436  eulerlogxabs) *
437  v))));
438  }
439 
440  break;
441  case 3:
442  deltalm = vh3 * (hCoeffs->delta43vh3 + vh * (hCoeffs->delta43vh4
443  +
444  hCoeffs->delta43vh6 *
445  vh * vh));
446  rholm =
447  1. + v * (hCoeffs->rho43v +
448  v * (hCoeffs->rho43v2 +
449  v2 * (hCoeffs->rho43v4 +
450  v * (hCoeffs->rho43v5 +
451  (hCoeffs->rho43v6 +
452  hCoeffs->rho43v6l * eulerlogxabs) *
453  v))));
454  auxflm = v * hCoeffs->f43v;
455  break;
456  case 2:
457  deltalm = vh3 * (hCoeffs->delta42vh3 + hCoeffs->delta42vh6 * vh3);
458  rholm = 1. + v2 * (hCoeffs->rho42v2
459  + v * (hCoeffs->rho42v3 +
460  v * (hCoeffs->rho42v4 +
461  v * (hCoeffs->rho42v5 +
462  (hCoeffs->rho42v6 +
463  hCoeffs->rho42v6l *
464  eulerlogxabs) * v))));
465  break;
466  case 1:
467  deltalm = vh3 * (hCoeffs->delta41vh3 + vh * (hCoeffs->delta41vh4
468  +
469  hCoeffs->delta41vh6 *
470  vh * vh));
471  rholm =
472  1. + v * (hCoeffs->rho41v +
473  v * (hCoeffs->rho41v2 +
474  v2 * (hCoeffs->rho41v4 +
475  v * (hCoeffs->rho41v5 +
476  (hCoeffs->rho41v6 +
477  hCoeffs->rho41v6l * eulerlogxabs) *
478  v))));
479  auxflm = v * hCoeffs->f41v;
480  break;
481  default:
483  break;
484  }
485  break;
486  case 5:
487  switch (m)
488  {
489  case 5:
490  if(use_hm){
491  //RC: This terms are in Eq.A16 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
492  deltalm =
493  vh3 *(hCoeffs->delta55vh3 +vh3*(hCoeffs->delta55vh6 +vh3 *(hCoeffs->delta55vh9)))
494  + hCoeffs->delta55v5 * v2 * v2 * v;
495  //RC: This terms are in Eq.A9 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
496  rholm =
497  1. + v2 * (hCoeffs->rho55v2 +
498  v * (hCoeffs->rho55v3 +
499  v * (hCoeffs->rho55v4 +
500  v * (hCoeffs->rho55v5 +
501  v * (hCoeffs->rho55v6 + hCoeffs->rho55v6l * eulerlogxabs +
502  v2 * (hCoeffs->rho55v8 + hCoeffs->rho55v8l * eulerlogxabs +
503  v2 * (hCoeffs->rho55v10 + hCoeffs->rho55v10l * eulerlogxabs )))))));
504  //RC: This terms are in Eq.A12 in https://journals.aps.org/prd/abstract/10.1103/PhysRevD.98.084028
505  auxflm = v2 * v * (hCoeffs->f55v3 + v * (hCoeffs->f55v4 + v * (hCoeffs->f55v5c) ));
506  }
507  else
508  {
509  deltalm =
510  hCoeffs->delta55vh3 * vh3 + hCoeffs->delta55v5 * v2 * v2 * v;
511  rholm =
512  1. + v2 * (hCoeffs->rho55v2 +
513  v * (hCoeffs->rho55v3 +
514  v * (hCoeffs->rho55v4 +
515  v * (hCoeffs->rho55v5 +
516  hCoeffs->rho55v6 * v))));
517  }
518  break;
519  case 4:
520  deltalm = vh3 * (hCoeffs->delta54vh3 + hCoeffs->delta54vh4 * vh);
521  rholm = 1. + v2 * (hCoeffs->rho54v2 + v * (hCoeffs->rho54v3
522  + hCoeffs->rho54v4 * v));
523  break;
524  case 3:
525  deltalm = hCoeffs->delta53vh3 * vh3;
526  rholm = 1. + v2 * (hCoeffs->rho53v2
527  + v * (hCoeffs->rho53v3 +
528  v * (hCoeffs->rho53v4 +
529  hCoeffs->rho53v5 * v)));
530  break;
531  case 2:
532  deltalm = vh3 * (hCoeffs->delta52vh3 + hCoeffs->delta52vh4 * vh);
533  rholm = 1. + v2 * (hCoeffs->rho52v2 + v * (hCoeffs->rho52v3
534  + hCoeffs->rho52v4 * v));
535  break;
536  case 1:
537  deltalm = hCoeffs->delta51vh3 * vh3;
538  rholm = 1. + v2 * (hCoeffs->rho51v2
539  + v * (hCoeffs->rho51v3 +
540  v * (hCoeffs->rho51v4 +
541  hCoeffs->rho51v5 * v)));
542  break;
543  default:
545  break;
546  }
547  break;
548  case 6:
549  switch (m)
550  {
551  case 6:
552  deltalm = hCoeffs->delta66vh3 * vh3;
553  rholm = 1. + v2 * (hCoeffs->rho66v2 + v * (hCoeffs->rho66v3
554  + hCoeffs->rho66v4 * v));
555  break;
556  case 5:
557  deltalm = hCoeffs->delta65vh3 * vh3;
558  rholm = 1. + v2 * (hCoeffs->rho65v2 + hCoeffs->rho65v3 * v);
559  break;
560  case 4:
561  deltalm = hCoeffs->delta64vh3 * vh3;
562  rholm = 1. + v2 * (hCoeffs->rho64v2 + v * (hCoeffs->rho64v3
563  + hCoeffs->rho64v4 * v));
564  break;
565  case 3:
566  deltalm = hCoeffs->delta63vh3 * vh3;
567  rholm = 1. + v2 * (hCoeffs->rho63v2 + hCoeffs->rho63v3 * v);
568  break;
569  case 2:
570  deltalm = hCoeffs->delta62vh3 * vh3;
571  rholm = 1. + v2 * (hCoeffs->rho62v2 + v * (hCoeffs->rho62v3
572  + hCoeffs->rho62v4 * v));
573  break;
574  case 1:
575  deltalm = hCoeffs->delta61vh3 * vh3;
576  rholm = 1. + v2 * (hCoeffs->rho61v2 + hCoeffs->rho61v3 * v);
577  break;
578  default:
580  break;
581  }
582  break;
583  case 7:
584  switch (m)
585  {
586  case 7:
587  deltalm = hCoeffs->delta77vh3 * vh3;
588  rholm = 1. + v2 * (hCoeffs->rho77v2 + hCoeffs->rho77v3 * v);
589  break;
590  case 6:
591  deltalm = 0.0;
592  rholm = 1. + hCoeffs->rho76v2 * v2;
593  break;
594  case 5:
595  deltalm = hCoeffs->delta75vh3 * vh3;
596  rholm = 1. + v2 * (hCoeffs->rho75v2 + hCoeffs->rho75v3 * v);
597  break;
598  case 4:
599  deltalm = 0.0;
600  rholm = 1. + hCoeffs->rho74v2 * v2;
601  break;
602  case 3:
603  deltalm = hCoeffs->delta73vh3 * vh3;
604  rholm = 1. + v2 * (hCoeffs->rho73v2 + hCoeffs->rho73v3 * v);
605  break;
606  case 2:
607  deltalm = 0.0;
608  rholm = 1. + hCoeffs->rho72v2 * v2;
609  break;
610  case 1:
611  deltalm = hCoeffs->delta71vh3 * vh3;
612  rholm = 1. + v2 * (hCoeffs->rho71v2 + hCoeffs->rho71v3 * v);
613  break;
614  default:
616  break;
617  }
618  break;
619  case 8:
620  switch (m)
621  {
622  case 8:
623  deltalm = 0.0;
624  rholm = 1. + hCoeffs->rho88v2 * v2;
625  break;
626  case 7:
627  deltalm = 0.0;
628  rholm = 1. + hCoeffs->rho87v2 * v2;
629  break;
630  case 6:
631  deltalm = 0.0;
632  rholm = 1. + hCoeffs->rho86v2 * v2;
633  break;
634  case 5:
635  deltalm = 0.0;
636  rholm = 1. + hCoeffs->rho85v2 * v2;
637  break;
638  case 4:
639  deltalm = 0.0;
640  rholm = 1. + hCoeffs->rho84v2 * v2;
641  break;
642  case 3:
643  deltalm = 0.0;
644  rholm = 1. + hCoeffs->rho83v2 * v2;
645  break;
646  case 2:
647  deltalm = 0.0;
648  rholm = 1. + hCoeffs->rho82v2 * v2;
649  break;
650  case 1:
651  deltalm = 0.0;
652  rholm = 1. + hCoeffs->rho81v2 * v2;
653  break;
654  default:
656  break;
657  }
658  break;
659  default:
661  break;
662  }
663 
664  /* Raise rholm to the lth power */
665  rholmPwrl = 1.0;
666  for(i = 0 ; i < l ; i++) rholmPwrl *= rholm;
667  /* In the equal-mass odd m case, there is no contribution from nonspin terms,
668  * and the only contribution comes from the auxflm term that is proportional to chiA (asymmetric spins).
669  * In this case, we must ignore the nonspin terms directly, since the leading term defined by
670  * CalculateThisMultipolePrefix in LALSimIMREOBNewtonianMultipole.c is not zero (see comments there).
671  */
672  if (eta == 0.25 && m % 2)
673  {
674  rholmPwrl = auxflm;
675  }
676  else
677  {
678  rholmPwrl += auxflm;
679  }
680  /* Put all factors in Eq. 17 together */
681  *hlm = Tlm * cexp (I * deltalm) * Slm * rholmPwrl;
682  *hlm *= hNewton;
683  /*if (r > 8.5)
684  {
685  printf("YP::FullWave: Reh = %.16e, Imh = %.16e, hAmp = %.16e, hPhi = %.16e\n",creal(*hlm),cimag(*hlm),cabs(*hlm),carg(*hlm));
686  } */
687  return XLAL_SUCCESS;
688 }
689 
690 
691 #endif /* _LALSIMIMRSPINEOBFACTORIZEDWAVEFORMPA */
static UNUSED int XLALSimIMRSpinEOBCalculateNewtonianMultipole(COMPLEX16 *multipole, REAL8 x, UNUSED REAL8 r, REAL8 phi, UINT4 l, INT4 m, EOBParams *params)
This function calculates the Newtonian multipole part of the factorized waveform for the SEOBNRv1 mod...
static UNUSED INT4 XLALSimIMRSpinEOBGetSpinFactorizedWaveform_PA(COMPLEX16 *restrict hlm, REAL8Vector *restrict values, const REAL8 v, const REAL8 Hreal, const INT4 l, const INT4 m, SpinEOBParams *restrict params, REAL8 vPhi)
This function calculates hlm mode factorized-resummed waveform for given dynamical variables.
static REAL8 UNUSED z2(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
REAL8 Hreal
#define XLAL_CALLGSL(statement)
int l
Definition: bh_qnmode.c:135
double i
Definition: bh_ringdown.c:118
double e
Definition: bh_ringdown.c:117
const double pp
#define LAL_E
#define LAL_PI
#define LAL_GAMMA
double complex COMPLEX16
double REAL8
uint32_t UINT4
int32_t INT4
static const INT4 r
static const INT4 m
#define XLAL_ERROR(...)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
XLAL_SUCCESS
XLAL_EFUNC
XLAL_EINVAL
XLAL_FAILURE
string status
Structure containing the coefficients for calculating the factorized waveform.
Parameters for the spinning EOB model.
Definition: burst.c:245