LALSimulation  5.4.0.1-fe68b98
LALSimInspiralFDPrecAngles_internals.h
Go to the documentation of this file.
1 #ifndef _LALSIM_INS_FD_PREC_ANGLES_INTERNALS
2 #define _LALSIM_INS_FD_PREC_ANGLES_INTERNALS
3 
4 /*
5  * Copyright (C) 2017 Katerina Chatziioannou, Sebastian Khan
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with with program; see the file COPYING. If not, write to the
19  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20  * MA 02110-1301 USA
21  */
22 
23 #include <math.h>
24 #include <stdio.h>
25 #include <string.h>
26 #include "gsl/gsl_sf_elljac.h"
27 #include <gsl/gsl_sf_ellint.h>
28 #include <gsl/gsl_mode.h>
29 #include <lal/LALError.h>
30 
31 // #include "LALSimInspiralFDPrecAngles.h"
32 #include <lal/LALSimInspiralFDPrecAngles.h>
33 
34 static int InitializeSystem(sysq* system, /**< [out] Pointer to sysq struct */
35  const double m1, /**< Primary mass in SI (kg) */
36  const double m2, /**< Secondary mass in SI (kg) */
37  const double mul, /**< Cosine of Polar angle of orbital angular momentum */
38  const double phl, /**< Azimuthal angle of orbital angular momentum */
39  const double mu1, /**< Cosine of Polar angle of primary spin w.r.t. orbital angular momentum */
40  const double ph1, /**< Azimuthal angle of primary spin */
41  const double ch1, /**< Dimensionless spin magnitude of primary spin */
42  const double mu2, /**< Cosine of Polar angle of secondary spin w.r.t. orbital angular momentum */
43  const double ph2, /**< Azimuthal angle of secondary spin */
44  const double ch2, /**< Dimensionless spin magnitude of secondary spin */
45  const double f_0, /**< Reference Gravitational Wave frequency (Hz) */
46  const int ExpansionOrder /**< Keep terms upto ExpansionOrder in precession angles phi_z and zeta */
47  );
48 
49 static double DotProd(const vector vec1, const vector vec2);
50 static double Norm(const vector vec1);
51 static vector CreateSphere(const double r, const double th, const double ph);
52 static vector ScalarProd(const double c, const vector vec);
53 static vector Sum(const vector vec1, const vector vec2);
54 static vector CrossProd(const vector vec1, const vector vec2);
55 
56 static vector Roots(const double L_norm, const double J_norm, const sysq *system);
57 static vector BCDcoeff(const double L_norm, const double J_norm, const sysq *system);
58 
59 static double beta(const double a, const double b, const sysq *system);
60 static double sigma(const double a, const double b, const sysq *system);
61 static double tau(const double a, const double b, const sysq *system);
62 
63 static double J_norm_of_xi(const double L_norm, const sysq *system);
64 static double S_norm_of_xi(const double xi, const double xi_2, const vector roots, const sysq *system);
65 static double L_norm_2PN_NonSpinning_of_xi(const double xi_2, const double L_norm, const sysq *system);
66 static double L_norm_3PN_of_xi(const double xi, const double xi_2, const double L_norm, const sysq *system);
67 
68 static vector c(const double xi, const double xi_2, const double J_norm, const vector roots, const sysq *system);
69 static vector d(const double L_norm, const double J_norm, const vector roots);
70 
71 static vector compute_phiz_zeta_costhetaL2PNNonSpinning(const double xi, const sysq *system);
72 static vector compute_phiz_zeta_costhetaL3PN(const double xi, const sysq *system);
73 static vector compute_phiz_zeta_costhetaL(const double xi, const sysq *system);
74 
75 static double costhetaL(const double J_norm, const double L_norm, const double S_norm);
76 
77 static double u_of_xi(const double xi, const double xi_2, const sysq *system);
78 static double psidot(const double xi, const double xi_2, const vector roots, const sysq *system);
79 
80 static vector computeMScorrections (const double xi, const double xi_2, const double L_norm, const double J_norm, const vector roots, const sysq *system);
81 static double phiz_of_xi(const double xi, const double xi_2, const double J_norm, const sysq *system);
82 static double zeta_of_xi(const double xi, const double xi_2, const sysq *system);
83 
84 #endif // of #ifndef _LALSIM_INS_FD_PREC_ANGLES_INTERNALS
static vector CreateSphere(const double r, const double th, const double ph)
static vector compute_phiz_zeta_costhetaL(const double xi, const sysq *system)
static double psidot(const double xi, const double xi_2, const vector roots, const sysq *system)
static vector compute_phiz_zeta_costhetaL3PN(const double xi, const sysq *system)
static double L_norm_3PN_of_xi(const double xi, const double xi_2, const double L_norm, const sysq *system)
static vector compute_phiz_zeta_costhetaL2PNNonSpinning(const double xi, const sysq *system)
static vector CrossProd(const vector vec1, const vector vec2)
static double J_norm_of_xi(const double L_norm, const sysq *system)
static vector Sum(const vector vec1, const vector vec2)
static double S_norm_of_xi(const double xi, const double xi_2, const vector roots, const sysq *system)
static double tau(const double a, const double b, const sysq *system)
static double sigma(const double a, const double b, const sysq *system)
static vector d(const double L_norm, const double J_norm, const vector roots)
static double u_of_xi(const double xi, const double xi_2, const sysq *system)
static double costhetaL(const double J_norm, const double L_norm, const double S_norm)
static double Norm(const vector vec1)
static int InitializeSystem(sysq *system, const double m1, const double m2, const double mul, const double phl, const double mu1, const double ph1, const double ch1, const double mu2, const double ph2, const double ch2, const double f_0, const int ExpansionOrder)
static double L_norm_2PN_NonSpinning_of_xi(const double xi_2, const double L_norm, const sysq *system)
static double DotProd(const vector vec1, const vector vec2)
static double beta(const double a, const double b, const sysq *system)
static double zeta_of_xi(const double xi, const double xi_2, const sysq *system)
static vector computeMScorrections(const double xi, const double xi_2, const double L_norm, const double J_norm, const vector roots, const sysq *system)
static vector c(const double xi, const double xi_2, const double J_norm, const vector roots, const sysq *system)
static double phiz_of_xi(const double xi, const double xi_2, const double J_norm, const sysq *system)
static vector Roots(const double L_norm, const double J_norm, const sysq *system)
static vector ScalarProd(const double c, const vector vec)
static vector BCDcoeff(const double L_norm, const double J_norm, const sysq *system)
static const INT4 r
static const INT4 a