SpECTRE Documentation Coverage Report
Current view: top level - Elliptic/Systems/SelfForce/GeneralRelativity - FirstOrderSystem.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 1 11 9.1 %
Date: 2025-12-05 05:03:31
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, 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

Generated by: LCOV version 1.14