SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/Cce/Actions - CharacteristicEvolutionBondiCalculations.hpp Hit Total Coverage
Commit: 37c384043430860f87787999aa7399d01bb3d213 Lines: 2 5 40.0 %
Date: 2024-04-20 02:24:02
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 <optional>
       7             : #include <tuple>
       8             : #include <utility>
       9             : 
      10             : #include "DataStructures/DataBox/DataBox.hpp"
      11             : #include "Evolution/Systems/Cce/GaugeTransformBoundaryData.hpp"
      12             : #include "Evolution/Systems/Cce/OptionTags.hpp"
      13             : #include "Evolution/Systems/Cce/PreSwshDerivatives.hpp"
      14             : #include "Evolution/Systems/Cce/PrecomputeCceDependencies.hpp"
      15             : #include "Evolution/Systems/Cce/SwshDerivatives.hpp"
      16             : #include "Evolution/Systems/Cce/Tags.hpp"
      17             : #include "Parallel/AlgorithmExecution.hpp"
      18             : #include "Parallel/GlobalCache.hpp"
      19             : #include "Parallel/Invoke.hpp"
      20             : 
      21             : namespace Cce {
      22             : namespace Actions {
      23             : 
      24             : /*!
      25             :  * \ingroup ActionsGroup
      26             :  * \brief Prepare the input quantities in the \ref DataBoxGroup for the
      27             :  * evaluation of the hypersurface integral used to compute `BondiTag`.
      28             :  *
      29             :  * \details Internally this calls the
      30             :  * `mutate_all_pre_swsh_derivatives_for_tag<BondiTag>()` and
      31             :  * `mutate_all_swsh_derivatives_for_tag<BondiTag>()` utility functions, which
      32             :  * determine which quantities are necessary for each of the hypersurface
      33             :  * computations.
      34             :  */
      35             : template <typename BondiTag>
      36           1 : struct CalculateIntegrandInputsForTag {
      37             :   template <typename DbTags, typename... InboxTags, typename Metavariables,
      38             :             typename ArrayIndex, typename ActionList,
      39             :             typename ParallelComponent>
      40           0 :   static Parallel::iterable_action_return_t apply(
      41             :       db::DataBox<DbTags>& box,
      42             :       const tuples::TaggedTuple<InboxTags...>& /*inboxes*/,
      43             :       const Parallel::GlobalCache<Metavariables>& /*cache*/,
      44             :       const ArrayIndex& /*array_index*/, const ActionList /*meta*/,
      45             :       const ParallelComponent* const /*meta*/) {
      46             :     mutate_all_pre_swsh_derivatives_for_tag<BondiTag>(make_not_null(&box));
      47             :     mutate_all_swsh_derivatives_for_tag<BondiTag>(make_not_null(&box));
      48             :     return {Parallel::AlgorithmExecution::Continue, std::nullopt};
      49             :   }
      50             : };
      51             : 
      52             : /*!
      53             :  * \ingroup ActionsGroup
      54             :  * \brief Perform all of the computations for dependencies of the hypersurface
      55             :  * equations that do not themselves depend on any hypersurface integrations.
      56             :  *
      57             :  * \details This is to be called as a 'pre-computation' step prior to looping
      58             :  * over the hypersurface integration set. Internally, this uses
      59             :  * `Cce::GaugeAdjustedBoundaryValue<Tag>` and
      60             :  * `Cce::mutate_all_precompute_cce_dependencies
      61             :  * <Tags::EvolutionGaugeBoundaryValue>()`
      62             :  * to calculate the requisite dependencies.
      63             :  */
      64           1 : struct PrecomputeGlobalCceDependencies {
      65             :   template <typename... DbTags, typename... InboxTags, typename Metavariables,
      66             :             typename ArrayIndex, typename ActionList,
      67             :             typename ParallelComponent>
      68           0 :   static Parallel::iterable_action_return_t apply(
      69             :       db::DataBox<tmpl::list<DbTags...>>& box,
      70             :       const tuples::TaggedTuple<InboxTags...>& /*inboxes*/,
      71             :       const Parallel::GlobalCache<Metavariables>& /*cache*/,
      72             :       const ArrayIndex& /*array_index*/, const ActionList /*meta*/,
      73             :       const ParallelComponent* const /*meta*/) {
      74             :     tmpl::for_each<gauge_adjustments_setup_tags>([&box](auto tag_v) {
      75             :       using tag = typename decltype(tag_v)::type;
      76             :       db::mutate_apply<GaugeAdjustedBoundaryValue<tag>>(make_not_null(&box));
      77             :     });
      78             :     mutate_all_precompute_cce_dependencies<Tags::EvolutionGaugeBoundaryValue>(
      79             :         make_not_null(&box));
      80             :     return {Parallel::AlgorithmExecution::Continue, std::nullopt};
      81             :   }
      82             : };
      83             : 
      84             : }  // namespace Actions
      85             : }  // namespace Cce

Generated by: LCOV version 1.14