SpECTRE Documentation Coverage Report
Current view: top level - Time/Triggers - StepsWithinSlab.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 10.0 % 10 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 <cstdint>
       7              : #include <memory>
       8              : #include <pup.h>
       9              : #include <pup_stl.h>
      10              : #include <utility>
      11              : 
      12              : #include "Options/ParseOptions.hpp"
      13              : #include "Options/String.hpp"
      14              : #include "ParallelAlgorithms/EventsAndTriggers/Trigger.hpp"
      15              : #include "Time/TimeSequence.hpp"
      16              : #include "Utilities/Serialization/CharmPupable.hpp"
      17              : #include "Utilities/TMPL.hpp"
      18              : 
      19              : /// \cond
      20              : namespace Tags {
      21              : struct StepNumberWithinSlab;
      22              : }  // namespace Tags
      23              : /// \endcond
      24              : 
      25              : namespace Triggers {
      26              : /// \ingroup EventsAndTriggersGroup
      27              : /// \ingroup TimeGroup
      28              : /// Trigger at specified steps within each slab.
      29            1 : class StepsWithinSlab : public Trigger {
      30              :  public:
      31              :   /// \cond
      32              :   StepsWithinSlab() = default;
      33              :   explicit StepsWithinSlab(CkMigrateMessage* /*unused*/) {}
      34              :   using PUP::able::register_constructor;
      35              :   WRAPPED_PUPable_decl_template(StepsWithinSlab);  // NOLINT
      36              :   /// \endcond
      37              : 
      38            0 :   static constexpr Options::String help{
      39              :       "Trigger at specified steps within each slab."};
      40              : 
      41            0 :   explicit StepsWithinSlab(
      42              :       std::unique_ptr<TimeSequence<uint64_t>> steps_within_slab)
      43              :       : steps_within_slab_(std::move(steps_within_slab)) {}
      44              : 
      45            0 :   using argument_tags = tmpl::list<Tags::StepNumberWithinSlab>;
      46              : 
      47            0 :   bool operator()(const uint64_t step_within_slab) const {
      48              :     return steps_within_slab_->times_near(step_within_slab)[1] ==
      49              :            step_within_slab;
      50              :   }
      51              : 
      52              :   // NOLINTNEXTLINE(google-runtime-references)
      53            0 :   void pup(PUP::er& p) override { p | steps_within_slab_; }
      54              : 
      55              :  private:
      56            0 :   std::unique_ptr<TimeSequence<uint64_t>> steps_within_slab_{};
      57              : };
      58              : }  // namespace Triggers
      59              : 
      60              : template <>
      61            0 : struct Options::create_from_yaml<Triggers::StepsWithinSlab> {
      62              :   template <typename Metavariables>
      63            0 :   static Triggers::StepsWithinSlab create(const Option& options) {
      64              :     return Triggers::StepsWithinSlab(
      65              :         options.parse_as<std::unique_ptr<TimeSequence<uint64_t>>,
      66              :                          Metavariables>());
      67              :   }
      68              : };
        

Generated by: LCOV version 2.0-1