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: the tortoise radius $r_\star$ and polar angle
26 : * $\theta$ if `PenetratingHorizon` is false, or the Boyer-Lindquist radius $r$
27 : * and $z=\cos\theta$ if it is true. We parametrize the 2D elliptic equations
28 : * as:
29 : * \begin{equation}
30 : * -\Delta_m (\Psi_m)_{ab} = -\partial_i F^i_{ab} + \beta_{ab}^{cd}
31 : * (\Psi_m)_{cd} + \gamma_{iab}^{cd} \partial_i (\Psi_m)_{cd} = 0
32 : * \end{equation}
33 : * with the flux
34 : * \begin{equation}
35 : * F^i_{ab} = \alpha^i \partial_i (\Psi_m)_{ab} \quad \text{(no sum over } i
36 : * \text{),}
37 : * \end{equation}
38 : * where $\alpha^i$, $\beta_{ab}^{cd}$, and $\gamma_{iab}^{cd}$ are coefficients
39 : * that define the elliptic equations. The particular coefficients for a
40 : * circular equatorial orbit in Kerr are implemented in
41 : * `GrSelfForce::AnalyticData::CircularOrbit`.
42 : *
43 : * See `ScalarSelfForce::FirstOrderSystem` for a description of the
44 : * regularization and modified boundary data.
45 : *
46 : * Once the 2D elliptic equations are solved for a given m-mode, the
47 : * contribution to the self-force can be extracted from the gradient of
48 : * $(\Psi_m)_{ab}$ at the location of the small body. These self-force
49 : * contributions are then summed over all m-modes up to some cutoff. The
50 : * resulting self-force can be used to drive a quasi-adiabatic inspiral to
51 : * generate waveforms. For details and more references see \cite Osburn:2022bby
52 : * for now (more references will be added when they are published).
53 : */
54 1 : struct FirstOrderSystem
55 : : tt::ConformsTo<elliptic::protocols::FirstOrderSystem> {
56 0 : static constexpr size_t volume_dim = 2;
57 :
58 0 : using primal_fields = tmpl::list<Tags::MMode>;
59 0 : using primal_fluxes =
60 : tmpl::list<::Tags::Flux<Tags::MMode, tmpl::size_t<2>, Frame::Inertial>>;
61 :
62 0 : using background_fields =
63 : tmpl::list<Tags::Alpha, Tags::Beta, Tags::GammaRstar, Tags::GammaTheta>;
64 0 : using inv_metric_tag = void;
65 :
66 0 : using fluxes_computer = Fluxes;
67 0 : using sources_computer = Sources;
68 0 : using modify_boundary_data = ModifyBoundaryData;
69 :
70 0 : using boundary_conditions_base =
71 : elliptic::BoundaryConditions::BoundaryCondition<2>;
72 : };
73 :
74 : } // namespace GrSelfForce
|