SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Deadlock - PrintFunctionsOfTime.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 33.3 % 3 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 <cstddef>
       7              : 
       8              : #include "DataStructures/DataBox/DataBox.hpp"
       9              : #include "Domain/FunctionsOfTime/OutputTimeBounds.hpp"
      10              : #include "Domain/FunctionsOfTime/Tags.hpp"
      11              : #include "Parallel/GlobalCache.hpp"
      12              : #include "Parallel/Info.hpp"
      13              : #include "Parallel/ParallelComponentHelpers.hpp"
      14              : #include "Parallel/Printf/Printf.hpp"
      15              : 
      16              : namespace control_system::Tags {
      17              : struct MeasurementTimescales;
      18              : }  // namespace control_system::Tags
      19              : 
      20              : namespace deadlock {
      21              : /*!
      22              :  * \brief Simple action that will print the `domain::Tags::FunctionsOfTime` and
      23              :  * `control_system::Tags::MeasurementTimescales` (if it exists) time bounds for
      24              :  * each node of a simulation.
      25              :  */
      26            1 : struct PrintFunctionsOfTime {
      27              :   template <typename ParallelComponent, typename DbTags, typename Metavariables,
      28              :             typename ArrayIndex>
      29            0 :   static void apply(db::DataBox<DbTags>& /*box*/,
      30              :                     Parallel::GlobalCache<Metavariables>& cache,
      31              :                     const ArrayIndex& /*array_index*/,
      32              :                     const std::string& file_name) {
      33              :     const auto& functions_of_time =
      34              :         Parallel::get<::domain::Tags::FunctionsOfTime>(cache);
      35              :     const std::string time_bounds =
      36              :         ::domain::FunctionsOfTime::output_time_bounds(functions_of_time);
      37              : 
      38              :     if constexpr (Parallel::is_in_global_cache<
      39              :                       Metavariables,
      40              :                       control_system::Tags::MeasurementTimescales>) {
      41              :       const auto& measurement_timescales =
      42              :           Parallel::get<control_system::Tags::MeasurementTimescales>(cache);
      43              :       const std::string measurement_time_bounds =
      44              :           ::domain::FunctionsOfTime::output_time_bounds(measurement_timescales);
      45              : 
      46              :       Parallel::fprintf(
      47              :           file_name,
      48              :           "Node %zu\nFunctionsOfTime:\n%s\n\nMeasurementTimescales:\n%s\n",
      49              :           Parallel::my_node<size_t>(cache), time_bounds,
      50              :           measurement_time_bounds);
      51              :     } else {
      52              :       Parallel::fprintf(file_name, "Node %zu\nFunctionsOfTime:%s\n",
      53              :                         Parallel::my_node<size_t>(cache), time_bounds);
      54              :     }
      55              :   }
      56              : };
      57              : }  // namespace deadlock
        

Generated by: LCOV version 2.0-1