SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Imex/Protocols - ImplicitSource.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 25.0 % 4 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 "Utilities/ProtocolHelpers.hpp"
       7              : #include "Utilities/Protocols/StaticReturnApplyable.hpp"
       8              : #include "Utilities/TMPL.hpp"
       9              : #include "Utilities/TypeTraits/IsA.hpp"
      10              : 
      11              : /// \cond
      12              : namespace Tags {
      13              : template <typename Tag>
      14              : struct Source;
      15              : }  // namespace Tags
      16              : /// \endcond
      17              : 
      18              : namespace imex::protocols {
      19              : /// Protocol for implicit source terms.
      20              : ///
      21              : /// A struct conforming to this protocol must also conform to
      22              : /// ::protocols::StaticReturnApplyable.  The `return_tags` of this
      23              : /// struct must be a list of `::Tags::Source<T>` for every tensor `T`
      24              : /// in the implicit sector.
      25              : ///
      26              : /// The `argument_tags` must not include compute items depending on
      27              : /// tensors in the implicit sector.
      28              : ///
      29              : /// \snippet Test_SolveImplicitSector.cpp source
      30            1 : struct ImplicitSource {
      31              :   template <typename ConformingType>
      32            0 :   struct test {
      33              :     static_assert(tt::assert_conforms_to_v<ConformingType,
      34              :                                            ::protocols::StaticReturnApplyable>);
      35              : 
      36            0 :     using return_tags = typename ConformingType::return_tags;
      37              :     static_assert(
      38              :         tmpl::all<return_tags, tt::is_a<::Tags::Source, tmpl::_1>>::value,
      39              :         "All return tags must be ::Tags::Source<...>");
      40              :   };
      41              : };
      42              : }  // namespace imex::protocols
        

Generated by: LCOV version 2.0-1