SpECTRE Documentation Coverage Report
Current view: top level - Time/StepChoosers - StepToTimes.hpp Hit Total Coverage
Commit: 923cd4a8ea30f5a5589baa60b0a93e358ca9f8e8 Lines: 3 14 21.4 %
Date: 2025-11-07 19:37:56
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 <memory>
       7             : 
       8             : #include "Options/String.hpp"
       9             : #include "Time/StepChoosers/StepChooser.hpp"
      10             : #include "Time/TimeSequence.hpp"
      11             : #include "Time/TimeStepRequest.hpp"
      12             : #include "Utilities/Serialization/CharmPupable.hpp"
      13             : #include "Utilities/TMPL.hpp"
      14             : 
      15             : /// \cond
      16             : namespace PUP {
      17             : class er;
      18             : }  // namespace PUP
      19             : namespace Tags {
      20             : struct Time;
      21             : }  // namespace Tags
      22             : /// \endcond
      23             : 
      24             : namespace StepChoosers {
      25             : /// Suggests step sizes to place steps at specific times.
      26             : ///
      27             : /// The suggestion provided depends on the current time, so it should
      28             : /// be applied immediately, rather than delayed several slabs.
      29           1 : class StepToTimes : public StepChooser<StepChooserUse::Slab> {
      30             :  public:
      31             :   /// \cond
      32             :   StepToTimes() = default;
      33             :   explicit StepToTimes(CkMigrateMessage* /*unused*/) {}
      34             :   using PUP::able::register_constructor;
      35             :   WRAPPED_PUPable_decl_template(StepToTimes);  // NOLINT
      36             :   /// \endcond
      37             : 
      38           0 :   struct Times {
      39           0 :     using type = std::unique_ptr<TimeSequence<double>>;
      40           0 :     static constexpr Options::String help{"Times to force steps at"};
      41             :   };
      42             : 
      43           0 :   static constexpr Options::String help =
      44             :       "Suggests step sizes to place steps at specific times.\n"
      45             :       "\n"
      46             :       "The suggestion provided depends on the current time, so it should\n"
      47             :       "be applied immediately, rather than delayed several slabs.";
      48           0 :   using options = tmpl::list<Times>;
      49             : 
      50           0 :   explicit StepToTimes(std::unique_ptr<TimeSequence<double>> times);
      51             : 
      52           0 :   using argument_tags = tmpl::list<::Tags::Time>;
      53             : 
      54           0 :   TimeStepRequest operator()(double now, double last_step) const;
      55             : 
      56           1 :   bool uses_local_data() const override;
      57           1 :   bool can_be_delayed() const override;
      58             : 
      59             :   // NOLINTNEXTLINE(google-runtime-references)
      60           0 :   void pup(PUP::er& p) override;
      61             : 
      62             :  private:
      63           0 :   std::unique_ptr<TimeSequence<double>> times_;
      64             : };
      65             : }  // namespace StepChoosers

Generated by: LCOV version 1.14