SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/CurvedScalarWave/Worldtube/Triggers - OrbitRadius.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 8.3 % 12 1
Test Date: 2026-10-22 17:29:42
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 <array>
       7              : #include <pup.h>
       8              : #include <vector>
       9              : 
      10              : #include "DataStructures/Tensor/Tensor.hpp"
      11              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/Tags.hpp"
      12              : #include "ParallelAlgorithms/EventsAndTriggers/Trigger.hpp"
      13              : #include "Time/Tags/TimeStep.hpp"
      14              : #include "Time/Time.hpp"
      15              : #include "Utilities/Serialization/CharmPupable.hpp"
      16              : 
      17              : namespace Triggers {
      18              : /*!
      19              :  * \brief This trigger returns true when the scalar charge is about to cross one
      20              :  * of the specified areal radii.
      21              :  *
      22              :  * \details As the domain is adjusted to track the position of the scalar
      23              :  * charge, the time step needs to be dynamically adjusted accordingly. This
      24              :  * trigger can be used to set the time step according to the radial position of
      25              :  * the scalar charge which gives a good approximation of when the time step
      26              :  * should be adjusted.
      27              :  * The trigger only approximates whether the particle might cross during the
      28              :  * next time step and may therefore fire twice.
      29              :  */
      30            1 : class OrbitRadius : public Trigger {
      31              :  public:
      32              :   /// \cond
      33              :   OrbitRadius() = default;
      34              :   explicit OrbitRadius(CkMigrateMessage* /*unused*/) {}
      35              :   using PUP::able::register_constructor;
      36              :   WRAPPED_PUPable_decl_template(OrbitRadius);  // NOLINT
      37              :   /// \endcond
      38              : 
      39            0 :   struct Radii {
      40            0 :     using type = std::vector<double>;
      41            0 :     static constexpr Options::String help =
      42              :         "The orbital radii which should trigger when crossed by the "
      43              :         "scalar charge.";
      44              :   };
      45              : 
      46            0 :   static constexpr Options::String help =
      47              :       "Trigger that fires when the scalar charge crosses specified radii.";
      48            0 :   using options = tmpl::list<Radii>;
      49              : 
      50            0 :   explicit OrbitRadius(const std::vector<double>& radii);
      51              : 
      52            0 :   using argument_tags =
      53              :       tmpl::list<CurvedScalarWave::Worldtube::Tags::ParticlePositionVelocity<3>,
      54              :                  Tags::TimeStep>;
      55              : 
      56            0 :   bool operator()(
      57              :       const std::array<tnsr::I<double, 3>, 2>& position_and_velocity,
      58              :       const TimeDelta& time_step) const;
      59              : 
      60              :   // NOLINTNEXTLINE(google-runtime-references)
      61            0 :   void pup(PUP::er& p) override;
      62              : 
      63              :  private:
      64            0 :   std::vector<double> radii_{};
      65              : };
      66              : }  // namespace Triggers
        

Generated by: LCOV version 2.0-1