SpECTRE Documentation Coverage Report
Current view: top level - Elliptic/Systems/SelfForce/GeneralRelativity - FirstOrderSystem.hpp Coverage Total Hit
Commit: a37d7b3c1803b88b537d2aef1c27ca5e6b499398 Lines: 9.1 % 11 1
Test Date: 2026-11-12 04:47:19
Legend: Lines:     hit not hit

            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
        

Generated by: LCOV version 2.0-1