SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/CurvedScalarWave/Worldtube - SelfForce.hpp Hit Total Coverage
Commit: 8f6d7ed2ad592dd78354983fd8e5ec2be7abb468 Lines: 7 8 87.5 %
Date: 2024-05-02 15:57:06
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/Tensor/Tensor.hpp"
       9             : #include "Utilities/Gsl.hpp"
      10             : 
      11             : namespace CurvedScalarWave::Worldtube {
      12             : 
      13             : /// @{
      14             : /*!
      15             :  * \brief Computes the coordinate acceleration due to the scalar self-force onto
      16             :  * the charge.
      17             :  *
      18             :  * \details It is given by
      19             :  *
      20             :  * \begin{equation}
      21             :  * (u^0)^2 \ddot{x}^i_p  = \frac{q}{\mu}(g^{i
      22             :  * \alpha} - \dot{x}^i_p g^{0 \alpha} ) \partial_\alpha \Psi^R
      23             :  * \end{equation}
      24             :  *
      25             :  * where $\dot{x}^i_p$ is the position of the scalar charge, $\Psi^R$ is the
      26             :  * regular field, $q$ is the particle's charge, $\mu$ is the particle's mass,
      27             :  * $u^\alpha$ is the four-velocity and $g^{\alpha \beta}$ is the inverse
      28             :  * spacetime metric in the inertial frame, evaluated at the position of the
      29             :  * particle. An overdot denotes a derivative with respect to coordinate time.
      30             :  * Greek indices are spacetime indices and Latin indices are purely spatial.
      31             :  * Note that the coordinate geodesic acceleration is NOT included.
      32             :  */
      33             : template <size_t Dim>
      34           1 : void self_force_acceleration(
      35             :     gsl::not_null<tnsr::I<double, Dim>*> self_force_acc,
      36             :     const Scalar<double>& dt_psi_monopole,
      37             :     const tnsr::i<double, Dim>& psi_dipole,
      38             :     const tnsr::I<double, Dim>& particle_velocity, double particle_charge,
      39             :     double particle_mass, const tnsr::AA<double, Dim>& inverse_metric,
      40             :     const Scalar<double>& dilation_factor);
      41             : 
      42             : template <size_t Dim>
      43           1 : tnsr::I<double, Dim> self_force_acceleration(
      44             :     const Scalar<double>& dt_psi_monopole,
      45             :     const tnsr::i<double, Dim>& psi_dipole,
      46             :     const tnsr::I<double, Dim>& particle_velocity, double particle_charge,
      47             :     double particle_mass, const tnsr::AA<double, Dim>& inverse_metric,
      48             :     const Scalar<double>& dilation_factor);
      49             : 
      50             : /// @}
      51             : /*!
      52             :  * \brief Computes the scalar self-force per unit mass
      53             :  *
      54             :  * \details It is given by
      55             :  * \begin{equation}
      56             :  * f^\alpha = \frac{q}{\mu} (g^{\alpha \beta} + u^\alpha u^\beta) \partial_\beta
      57             :  * \Psi^R
      58             :  * \end{equation}
      59             :  * where $\Psi^R$ is the regular field at the position of the particle, $q$ is
      60             :  * the particle's charge, $\mu$ is the particle's mass, $u^\alpha$ is the
      61             :  * four-velocity and $g^{\alpha \beta}$ is the inverse spacetime metric in the
      62             :  * inertial frame, evaluated at the position of the particle.
      63             :  */
      64             : template <size_t Dim>
      65           1 : tnsr::A<double, Dim> self_force_per_mass(
      66             :     const tnsr::a<double, Dim>& d_psi,
      67             :     const tnsr::A<double, Dim>& four_velocity, double particle_charge,
      68             :     double particle_mass, const tnsr::AA<double, Dim>& inverse_metric);
      69             : 
      70             : /*!
      71             :  * \brief Computes the first time derivative of scalar self-force per unit mass,
      72             :  * see `self_force_per_mass`, by applying the chain rule.
      73             :  */
      74             : template <size_t Dim>
      75           1 : tnsr::A<double, Dim> dt_self_force_per_mass(
      76             :     const tnsr::a<double, Dim>& d_psi, const tnsr::a<double, Dim>& dt_d_psi,
      77             :     const tnsr::A<double, Dim>& four_velocity,
      78             :     const tnsr::A<double, Dim>& dt_four_velocity, double particle_charge,
      79             :     double particle_mass, const tnsr::AA<double, Dim>& inverse_metric,
      80             :     const tnsr::AA<double, Dim>& dt_inverse_metric);
      81             : 
      82             : /*!
      83             :  * \brief Computes the second time derivative of scalar self-force per unit
      84             :  * mass, see `self_force_per_mass`, by applying the chain rule.
      85             :  */
      86             : template <size_t Dim>
      87           1 : tnsr::A<double, Dim> dt2_self_force_per_mass(
      88             :     const tnsr::a<double, Dim>& d_psi, const tnsr::a<double, Dim>& dt_d_psi,
      89             :     const tnsr::a<double, Dim>& dt2_d_psi,
      90             :     const tnsr::A<double, Dim>& four_velocity,
      91             :     const tnsr::A<double, Dim>& dt_four_velocity,
      92             :     const tnsr::A<double, Dim>& dt2_four_velocity, double particle_charge,
      93             :     double particle_mass, const tnsr::AA<double, Dim>& inverse_metric,
      94             :     const tnsr::AA<double, Dim>& dt_inverse_metric,
      95             :     const tnsr::AA<double, Dim>& dt2_inverse_metric);
      96             : 
      97             : /*!
      98             :  * \brief Computes the covariant derivative of the scalar self-force per unit
      99             :  * mass $f^\alpha$, see `self_force_per_mass`, along the four velocity
     100             :  * $u^\beta$, i.e. $u^\beta \nabla_\beta f^\alpha$.
     101             :  */
     102             : template <size_t Dim>
     103           1 : tnsr::A<double, Dim> Du_self_force_per_mass(
     104             :     const tnsr::A<double, Dim>& self_force,
     105             :     const tnsr::A<double, Dim>& dt_self_force,
     106             :     const tnsr::A<double, Dim>& four_velocity,
     107             :     const tnsr::Abb<double, Dim>& christoffel);
     108             : /*!
     109             :  * \brief Computes the time derivative of the covariant derivative of the scalar
     110             :  * self-force per unit mass $f^\alpha$, see `Du_self_force_per_mass`, along the
     111             :  * four velocity $u^\beta$, i.e.
     112             :  * $\frac{d}{dt}u^\beta \nabla_\beta f^\alpha$.
     113             :  */
     114             : template <size_t Dim>
     115           1 : tnsr::A<double, Dim> dt_Du_self_force_per_mass(
     116             :     const tnsr::A<double, Dim>& self_force,
     117             :     const tnsr::A<double, Dim>& dt_self_force,
     118             :     const tnsr::A<double, Dim>& dt2_self_force,
     119             :     const tnsr::A<double, Dim>& four_velocity,
     120             :     const tnsr::A<double, Dim>& dt_four_velocity,
     121             :     const tnsr::Abb<double, Dim>& christoffel,
     122             :     const tnsr::Abb<double, Dim>& dt_christoffel);
     123             : }  // namespace CurvedScalarWave::Worldtube

Generated by: LCOV version 1.14