SpECTRE Documentation Coverage Report
Current view: top level - Time - ChangeTimeStepperOrder.hpp Hit Total Coverage
Commit: 3ffcbc8ecf43797401b60bcca17d6040ee06f013 Lines: 1 7 14.3 %
Date: 2026-03-03 02:01:44
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 <optional>
       8             : #include <type_traits>
       9             : 
      10             : #include "Time/Tags/VariableOrderAlgorithm.hpp"
      11             : #include "Utilities/TMPL.hpp"
      12             : #include "Utilities/TypeTraits/IsA.hpp"
      13             : 
      14             : /// \cond
      15             : struct StepperErrorEstimate;
      16             : class TimeStepId;
      17             : class TimeStepper;
      18             : class VariableOrderAlgorithm;
      19             : namespace Tags {
      20             : template <typename Tag>
      21             : struct HistoryEvolvedVariables;
      22             : template <typename Tag>
      23             : struct Next;
      24             : template <typename Tag>
      25             : struct StepperErrors;
      26             : struct TimeStepId;
      27             : template <typename StepperInterface>
      28             : struct TimeStepper;
      29             : }  // namespace Tags
      30             : namespace TimeSteppers {
      31             : template <typename Vars>
      32             : class History;
      33             : }  // namespace TimeSteppers
      34             : namespace gsl {
      35             : template <class T>
      36             : class not_null;
      37             : }  // namespace gsl
      38             : /// \endcond
      39             : 
      40             : /*!
      41             :  * \ingroup TimeGroup
      42             :  * \brief Adjust the step order for local time-stepping
      43             :  *
      44             :  * \details See VariableOrderAlgorithm for descriptions of the
      45             :  * algorithms.  This mutator wraps that class, checking that the order
      46             :  * is not changed out of the valid range for the time stepper.
      47             :  */
      48             : /// @{
      49             : template <typename System,
      50             :           template <typename> typename CacheTagPrefix = std::type_identity_t,
      51             :           typename = tmpl::conditional_t<
      52             :               tt::is_a_v<tmpl::list, typename System::variables_tag>,
      53             :               typename System::variables_tag,
      54             :               tmpl::list<typename System::variables_tag>>>
      55           1 : struct ChangeTimeStepperOrder;
      56             : 
      57             : template <typename System, template <typename> typename CacheTagPrefix,
      58             :           typename... VariablesTags>
      59           0 : struct ChangeTimeStepperOrder<System, CacheTagPrefix,
      60             :                               tmpl::list<VariablesTags...>> {
      61           0 :   using const_global_cache_tags =
      62             :       tmpl::list<CacheTagPrefix<Tags::VariableOrderAlgorithm>>;
      63           0 :   using return_tags =
      64             :       tmpl::list<Tags::HistoryEvolvedVariables<VariablesTags>...>;
      65           0 :   using argument_tags =
      66             :       tmpl::list<CacheTagPrefix<Tags::TimeStepper<TimeStepper>>,
      67             :                  CacheTagPrefix<Tags::VariableOrderAlgorithm>,
      68             :                  Tags::Next<Tags::TimeStepId>,
      69             :                  Tags::StepperErrors<VariablesTags>...>;
      70             : 
      71           0 :   static void apply(
      72             :       const gsl::not_null<
      73             :           TimeSteppers::History<typename VariablesTags::type>*>... histories,
      74             :       const TimeStepper& time_stepper,
      75             :       const VariableOrderAlgorithm& order_algorithm,
      76             :       const TimeStepId& next_time_step_id,
      77             :       const typename tmpl::has_type<
      78             :           VariablesTags,
      79             :           std::array<std::optional<StepperErrorEstimate>, 2>>::type&... errors);
      80             : };
      81             : /// @}

Generated by: LCOV version 1.14