Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <iomanip> 7 : #include <sstream> 8 : #include <string> 9 : 10 : #include "DataStructures/Variables.hpp" 11 : #include "Parallel/InboxInserters.hpp" 12 : #include "Time/TimeStepId.hpp" 13 : 14 : namespace Cce { 15 : /// \brief Tags used by CCE for communication. 16 1 : namespace ReceiveTags { 17 : 18 : /// A receive tag for the data sent to the CCE evolution component from the CCE 19 : /// boundary component 20 : template <typename CommunicationTagList> 21 1 : struct BoundaryData 22 : : Parallel::InboxInserters::Value<BoundaryData<CommunicationTagList>> { 23 0 : using temporal_id = TimeStepId; 24 0 : using type = std::unordered_map<temporal_id, Variables<CommunicationTagList>>; 25 : 26 0 : static std::string output_inbox(const type& inbox, 27 : const size_t padding_size) { 28 : std::stringstream ss{}; 29 : const std::string pad(padding_size, ' '); 30 : 31 : ss << std::scientific << std::setprecision(16); 32 : ss << pad << "CceBoundaryDataInbox:\n"; 33 : // We don't really care about the variables, just the times 34 : for (const auto& [current_time_step_id, variables] : inbox) { 35 : (void)variables; 36 : ss << pad << " Time: " << current_time_step_id << "\n"; 37 : } 38 : 39 : return ss.str(); 40 : } 41 : }; 42 : 43 : } // namespace ReceiveTags 44 : } // namespace Cce