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 transform results from
10 : /// the GrEffectiveSource code into our form of the equations. See
11 : /// 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 convert_effsource_psi(int m, double a, double r, double th,
18 : std::array<double, 10>& real_orig,
19 : std::array<double, 10>& imag_orig,
20 : std::array<double, 10>& real_conv,
21 : std::array<double, 10>& imag_conv);
22 :
23 : void convert_effsource_Seff(int m, double a, double r, double th,
24 : std::array<double, 10>& real_orig,
25 : std::array<double, 10>& imag_orig,
26 : std::array<double, 10>& real_conv,
27 : std::array<double, 10>& imag_conv);
28 :
29 : void convert_effsource_dpsidtheta(int m, double a, double r, double th,
30 : std::array<double, 10>& real_orig,
31 : std::array<double, 10>& imag_orig,
32 : std::array<double, 10>& real_orig_dth,
33 : std::array<double, 10>& imag_orig_dth,
34 : std::array<double, 10>& real_conv_dth,
35 : std::array<double, 10>& imag_conv_dth);
36 :
37 : void convert_effsource_dpsidrstar(int m, double a, double r, double th,
38 : std::array<double, 10>& real_orig,
39 : std::array<double, 10>& imag_orig,
40 : std::array<double, 10>& real_orig_dr,
41 : std::array<double, 10>& imag_orig_dr,
42 : std::array<double, 10>& real_conv_drs,
43 : std::array<double, 10>& imag_conv_drs);
44 :
45 : /// The `_vr` functions below are used when `PenetratingHorizon` is `True`.
46 : /// They instead solve the PDEs in $(r, \cos\theta)$ coordinates, with metric
47 : /// components given in ingoing-Eddington-Finkelstein-like coordinates
48 : /// $(v, r, \theta, \phi)$.
49 : void convert_effsource_psi_vr(int m, double a, double r, double z,
50 : std::array<double, 10>& real_orig,
51 : std::array<double, 10>& imag_orig,
52 : std::array<double, 10>& real_conv,
53 : std::array<double, 10>& imag_conv);
54 :
55 : void convert_effsource_Seff_vr(int m, double a, double r, double z,
56 : std::array<double, 10>& real_orig,
57 : std::array<double, 10>& imag_orig,
58 : std::array<double, 10>& real_conv,
59 : std::array<double, 10>& imag_conv);
60 :
61 : void convert_effsource_dpsidz_vr(int m, double a, double r, double z,
62 : std::array<double, 10>& real_orig,
63 : std::array<double, 10>& imag_orig,
64 : std::array<double, 10>& real_orig_dth,
65 : std::array<double, 10>& imag_orig_dth,
66 : std::array<double, 10>& real_conv_dz,
67 : std::array<double, 10>& imag_conv_dz);
68 :
69 : void convert_effsource_dpsidr_vr(int m, double a, double r, double z,
70 : std::array<double, 10>& real_orig,
71 : std::array<double, 10>& imag_orig,
72 : std::array<double, 10>& real_orig_dr,
73 : std::array<double, 10>& imag_orig_dr,
74 : std::array<double, 10>& real_conv_dr,
75 : std::array<double, 10>& imag_conv_dr);
76 :
77 : } // namespace GrSelfForce::detail
|