SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/Cce/Actions - InitializeKleinGordonVariables.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 7.7 % 13 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/Systems/Cce/OptionTags.hpp"
       7              : #include "ParallelAlgorithms/Initialization/MutateAssign.hpp"
       8              : 
       9              : namespace Cce::Actions {
      10              : 
      11              : /*!
      12              :  * \ingroup ActionsGroup
      13              :  * \brief Initialize the data storage for the scalar field in the
      14              :  * `KleinGordonCharacteristicExtract` component, which is the singleton that
      15              :  * handles the main evolution system for Klein-Gordon CCE computations.
      16              :  *
      17              :  * \details Sets up the \ref DataBoxGroup to be ready to take data from the
      18              :  * worldtube component, calculate initial data, and start the hypersurface
      19              :  * computations.
      20              :  *
      21              :  * \ref DataBoxGroup changes:
      22              :  * - Modifies: nothing
      23              :  * - Adds:
      24              :  *  - `Tags::Variables<metavariables::klein_gordon_boundary_communication_tags>`
      25              :  *  - `Tags::Variables<metavariables::klein_gordon_gauge_boundary_tags>`
      26              :  *  - `Tags::Variables<metavariables::klein_gordon_scri_tags>`
      27              :  *  - `Tags::Variables<metavariables::klein_gordon_pre_swsh_derivative_tags>`
      28              :  *  - `Tags::Variables<metavariables::klein_gordon_swsh_derivative_tags>`
      29              :  *  - `Tags::Variables<metavariables::klein_gordon_transform_buffer_tags>`
      30              :  *  - `Tags::Variables<metavariables::klein_gordon_source_tags>`
      31              :  *  - `Tags::Variables<metavariables::klein_gordon_cce_integrand_tags>`
      32              :  * - Removes: nothing
      33              :  */
      34              : template <typename Metavariables>
      35            1 : struct InitializeKleinGordonVariables {
      36            0 :   using const_global_cache_tags =
      37              :       tmpl::list<Tags::LMax, Tags::NumberOfRadialPoints>;
      38              : 
      39            0 :   using klein_gordon_boundary_communication_tags = ::Tags::Variables<
      40              :       typename Metavariables::klein_gordon_boundary_communication_tags>;
      41            0 :   using klein_gordon_gauge_boundary_tags = ::Tags::Variables<
      42              :       typename Metavariables::klein_gordon_gauge_boundary_tags>;
      43            0 :   using klein_gordon_scri_tags =
      44              :       ::Tags::Variables<typename Metavariables::klein_gordon_scri_tags>;
      45            0 :   using klein_gordon_pre_swsh_derivatives_variables_tag = ::Tags::Variables<
      46              :       typename Metavariables::klein_gordon_pre_swsh_derivative_tags>;
      47            0 :   using klein_gordon_swsh_derivatives_variables_tag = ::Tags::Variables<
      48              :       typename Metavariables::klein_gordon_swsh_derivative_tags>;
      49            0 :   using klein_gordon_transform_buffer_variables_tag = ::Tags::Variables<
      50              :       typename Metavariables::klein_gordon_transform_buffer_tags>;
      51            0 :   using klein_gordon_source_variables_tag =
      52              :       ::Tags::Variables<typename Metavariables::klein_gordon_source_tags>;
      53            0 :   using klein_gordon_integrand_variables_tag = ::Tags::Variables<
      54              :       typename Metavariables::klein_gordon_cce_integrand_tags>;
      55              : 
      56            0 :   using simple_tags =
      57              :       tmpl::list<klein_gordon_boundary_communication_tags,
      58              :                  klein_gordon_gauge_boundary_tags, klein_gordon_scri_tags,
      59              :                  klein_gordon_pre_swsh_derivatives_variables_tag,
      60              :                  klein_gordon_swsh_derivatives_variables_tag,
      61              :                  klein_gordon_transform_buffer_variables_tag,
      62              :                  klein_gordon_source_variables_tag,
      63              :                  klein_gordon_integrand_variables_tag>;
      64              : 
      65              :   template <typename DbTags, typename... InboxTags, typename ArrayIndex,
      66              :             typename ActionList, typename ParallelComponent>
      67            0 :   static Parallel::iterable_action_return_t apply(
      68              :       db::DataBox<DbTags>& box,
      69              :       const tuples::TaggedTuple<InboxTags...>& /*inboxes*/,
      70              :       const Parallel::GlobalCache<Metavariables>& /*cache*/,
      71              :       const ArrayIndex& /*array_index*/, const ActionList /*meta*/,
      72              :       const ParallelComponent* const /*meta*/) {
      73              :     const size_t l_max = db::get<Spectral::Swsh::Tags::LMax>(box);
      74              :     const size_t number_of_radial_points =
      75              :         db::get<Spectral::Swsh::Tags::NumberOfRadialPoints>(box);
      76              :     const size_t boundary_size =
      77              :         Spectral::Swsh::number_of_swsh_collocation_points(l_max);
      78              :     const size_t volume_size = boundary_size * number_of_radial_points;
      79              :     const size_t transform_buffer_size =
      80              :         number_of_radial_points *
      81              :         Spectral::Swsh::size_of_libsharp_coefficient_vector(l_max);
      82              : 
      83              :     Initialization::mutate_assign<simple_tags>(
      84              :         make_not_null(&box),
      85              :         typename klein_gordon_boundary_communication_tags::type{boundary_size},
      86              :         typename klein_gordon_gauge_boundary_tags::type{boundary_size},
      87              :         typename klein_gordon_scri_tags::type{boundary_size},
      88              :         typename klein_gordon_pre_swsh_derivatives_variables_tag::type{
      89              :             volume_size},
      90              :         typename klein_gordon_swsh_derivatives_variables_tag::type{volume_size},
      91              :         typename klein_gordon_transform_buffer_variables_tag::type{
      92              :             transform_buffer_size},
      93              :         typename klein_gordon_source_variables_tag::type{volume_size},
      94              :         typename klein_gordon_integrand_variables_tag::type{volume_size});
      95              :     return {Parallel::AlgorithmExecution::Continue, std::nullopt};
      96              :   }
      97              : };
      98              : }  // namespace Cce::Actions
        

Generated by: LCOV version 2.0-1