SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Imex - Initialize.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 50.0 % 2 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 "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 2.0-1