Line data Source code
1 1 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <array>
7 :
8 : /// \file
9 : /// These functions are generated by Mathematica. They compute the terms in the
10 : /// general relativistic self-force equations for a circular orbit in Kerr
11 : /// spacetime. See CircularOrbit.hpp for details.
12 :
13 : namespace GrSelfForce::detail {
14 : /// The functions below are used when `PenetratingHorizon` is `False`. They
15 : /// solve the PDEs in $(r_\star, \theta)$ coordinates, with metric components
16 : /// given in Boyer-Lindquist coordinates.
17 : void getAreal(int m, double a, double om, double r, double th,
18 : std::array<std::array<double, 10>, 10>& Areal);
19 :
20 : void getAimag(int m, double a, double om, double r, double th,
21 : std::array<std::array<double, 10>, 10>& Aimag);
22 :
23 : void getBreal(int m, double a, double om, double r, double th,
24 : std::array<std::array<double, 10>, 10>& Breal);
25 :
26 : void getBimag(int m, double a, double om, double r, double th,
27 : std::array<std::array<double, 10>, 10>& Bimag);
28 :
29 : void getCreal(int m, double a, double om, double r, double th,
30 : std::array<std::array<double, 10>, 10>& Creal);
31 :
32 : void getCimag(int m, double a, double om, double r, double th,
33 : std::array<std::array<double, 10>, 10>& Cimag);
34 :
35 : /// The `_vr` functions below are used when `PenetratingHorizon` is `True`.
36 : /// They instead solve the PDEs in $(r, \cos\theta)$ coordinates, with metric
37 : /// components given in ingoing-Eddington-Finkelstein-like coordinates
38 : /// $(v, r, \theta, \phi)$.
39 : void getAreal_vr(int m, double a, double om, double r, double z, double H,
40 : double dHdr, std::array<std::array<double, 10>, 10>& Areal);
41 :
42 : void getAimag_vr(int m, double a, double om, double r, double z, double H,
43 : double dHdr, std::array<std::array<double, 10>, 10>& Aimag);
44 :
45 : void getBreal_vr(int m, double a, double om, double r, double z, double H,
46 : double dHdr, std::array<std::array<double, 10>, 10>& Breal);
47 :
48 : void getBimag_vr(int m, double a, double om, double r, double z, double H,
49 : double dHdr, std::array<std::array<double, 10>, 10>& Bimag);
50 :
51 : void getCreal_vr(int m, double a, double om, double r, double z, double H,
52 : double dHdr, std::array<std::array<double, 10>, 10>& Creal);
53 :
54 : void getCimag_vr(int m, double a, double om, double r, double z, double H,
55 : double dHdr, std::array<std::array<double, 10>, 10>& Cimag);
56 :
57 : } // namespace GrSelfForce::detail
|