SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Deadlock - PrintFunctionsOfTime.hpp Hit Total Coverage
Commit: de0084593a37be7727c6c4da0be2184b0f8d9ed4 Lines: 1 3 33.3 %
Date: 2025-11-04 23:26:01
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 1.14