SpECTRE Documentation Coverage Report
Current view: top level - Time - ChangeTimeStepperOrder.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 14.3 % 7 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 <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 2.0-1