SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Imex - Initialize.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 1 2 50.0 %
Date: 2025-12-05 05:03:31
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 "Evolution/Imex/Protocols/ImexSystem.hpp"
       7             : #include "Evolution/Imex/Tags/ImplicitHistory.hpp"
       8             : #include "Evolution/Imex/Tags/Mode.hpp"
       9             : #include "Evolution/Imex/Tags/SolveFailures.hpp"
      10             : #include "Evolution/Imex/Tags/SolveTolerance.hpp"
      11             : #include "Time/History.hpp"
      12             : #include "Time/Tags/HistoryEvolvedVariables.hpp"
      13             : #include "Utilities/Gsl.hpp"
      14             : #include "Utilities/MakeWithValue.hpp"
      15             : #include "Utilities/ProtocolHelpers.hpp"
      16             : #include "Utilities/TMPL.hpp"
      17             : 
      18             : namespace imex {
      19             : /// Create the IMEX structures and options.
      20             : template <typename System, typename = typename System::implicit_sectors>
      21           1 : struct Initialize;
      22             : 
      23             : /// \cond
      24             : template <typename System, typename... Sectors>
      25             : struct Initialize<System, tmpl::list<Sectors...>> {
      26             :   static_assert(tt::assert_conforms_to_v<System, protocols::ImexSystem>);
      27             : 
      28             :   using variables_tag = typename System::variables_tag;
      29             :   using example_tensor_tag =
      30             :       tmpl::front<typename tmpl::front<tmpl::list<Sectors...>>::tensors>;
      31             : 
      32             :   using const_global_cache_tags = tmpl::list<Tags::Mode, Tags::SolveTolerance>;
      33             :   using mutable_global_cache_tags = tmpl::list<>;
      34             :   using simple_tags_from_options = tmpl::list<>;
      35             :   using simple_tags = tmpl::list<Tags::ImplicitHistory<Sectors>...,
      36             :                                  Tags::SolveFailures<Sectors>...>;
      37             :   using compute_tags = tmpl::list<>;
      38             : 
      39             :   using return_tags = simple_tags;
      40             :   using argument_tags =
      41             :       tmpl::list<::Tags::HistoryEvolvedVariables<variables_tag>,
      42             :                  example_tensor_tag>;
      43             : 
      44             :   static void apply(
      45             :       const gsl::not_null<
      46             :           typename Tags::ImplicitHistory<Sectors>::type*>... histories,
      47             :       const gsl::not_null<
      48             :           typename Tags::SolveFailures<Sectors>::type*>... solve_failures,
      49             :       const TimeSteppers::History<typename variables_tag::type>&
      50             :           explicit_history,
      51             :       const typename example_tensor_tag::type& example_tensor) {
      52             :     const auto order = explicit_history.integration_order();
      53             :     expand_pack((histories->integration_order(order), 0)...);
      54             :     expand_pack(*solve_failures = make_with_value<Scalar<DataVector>>(
      55             :                     example_tensor, 0.0)...);
      56             :   }
      57             : };
      58             : /// \endcond
      59             : }  // namespace imex

Generated by: LCOV version 1.14