Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 :
8 : #include "DataStructures/DataBox/Prefixes.hpp"
9 : #include "Elliptic/BoundaryConditions/BoundaryCondition.hpp"
10 : #include "Elliptic/Protocols/FirstOrderSystem.hpp"
11 : #include "Elliptic/Systems/SelfForce/GeneralRelativity/Equations.hpp"
12 : #include "Elliptic/Systems/SelfForce/GeneralRelativity/Tags.hpp"
13 : #include "Utilities/ProtocolHelpers.hpp"
14 : #include "Utilities/TMPL.hpp"
15 :
16 : namespace GrSelfForce {
17 :
18 : /*!
19 : * \brief Gravitational self-force of a small gravitating body in a Kerr
20 : * background.
21 : *
22 : * Extension of the `ScalarSelfForce::FirstOrderSystem` to the gravitational
23 : * case. We solve a 2D elliptic equation for the 10 independent components of
24 : * the symmetric m-mode field $(\Psi_m)_{ab}$. The two dimensions are a
25 : * radial and angular coordinate, specifically the tortoise radius $r_\star$ and
26 : * polar angle $\theta$. We parametrize the 2D elliptic equations as:
27 : * \begin{equation}
28 : * -\Delta_m (\Psi_m)_{ab} = -\partial_i F^i_{ab} + \beta_{ab}^{cd}
29 : * (\Psi_m)_{cd} + \gamma_{iab}^{cd} F^i_{cd} = 0
30 : * \end{equation}
31 : * with the flux
32 : * \begin{equation}
33 : * F^i_{ab} = \{\partial_{r_\star}, \alpha \partial_\theta\} (\Psi_m)_{ab}
34 : * \text{,}
35 : * \end{equation}
36 : * where $\alpha$, $\beta_{ab}^{cd}$, and $\gamma_{iab}^{cd}$ are coefficients
37 : * that define the elliptic equations. The particular coefficients for a
38 : * circular equatorial orbit in Kerr are implemented in
39 : * `GrSelfForce::AnalyticData::CircularOrbit`.
40 : *
41 : * See `ScalarSelfForce::FirstOrderSystem` for a description of the
42 : * regularization and modified boundary data.
43 : *
44 : * Once the 2D elliptic equations are solved for a given m-mode, the
45 : * contribution to the self-force can be extracted from the gradient of
46 : * $(\Psi_m)_{ab}$ at the location of the small body. These self-force
47 : * contributions are then summed over all m-modes up to some cutoff. The
48 : * resulting self-force can be used to drive a quasi-adiabatic inspiral to
49 : * generate waveforms. For details and more references see \cite Osburn:2022bby
50 : * for now (more references will be added when they are published).
51 : */
52 1 : struct FirstOrderSystem
53 : : tt::ConformsTo<elliptic::protocols::FirstOrderSystem> {
54 0 : static constexpr size_t volume_dim = 2;
55 :
56 0 : using primal_fields = tmpl::list<Tags::MMode>;
57 0 : using primal_fluxes =
58 : tmpl::list<::Tags::Flux<Tags::MMode, tmpl::size_t<2>, Frame::Inertial>>;
59 :
60 0 : using background_fields =
61 : tmpl::list<Tags::Alpha, Tags::Beta, Tags::GammaRstar, Tags::GammaTheta>;
62 0 : using inv_metric_tag = void;
63 :
64 0 : using fluxes_computer = Fluxes;
65 0 : using sources_computer = Sources;
66 0 : using modify_boundary_data = ModifyBoundaryData;
67 :
68 0 : using boundary_conditions_base =
69 : elliptic::BoundaryConditions::BoundaryCondition<2>;
70 : };
71 :
72 : } // namespace GrSelfForce
|