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 0 : namespace ReceiveTags { 16 : 17 : /// A receive tag for the data sent to the CCE evolution component from the CCE 18 : /// boundary component 19 : template <typename CommunicationTagList> 20 1 : struct BoundaryData 21 : : Parallel::InboxInserters::Value<BoundaryData<CommunicationTagList>> { 22 0 : using temporal_id = TimeStepId; 23 0 : using type = std::unordered_map<temporal_id, Variables<CommunicationTagList>>; 24 : 25 0 : static std::string output_inbox(const type& inbox, 26 : const size_t padding_size) { 27 : std::stringstream ss{}; 28 : const std::string pad(padding_size, ' '); 29 : 30 : ss << std::scientific << std::setprecision(16); 31 : ss << pad << "CceBoundaryDataInbox:\n"; 32 : // We don't really care about the variables, just the times 33 : for (const auto& [current_time_step_id, variables] : inbox) { 34 : (void)variables; 35 : ss << pad << " Time: " << current_time_step_id << "\n"; 36 : } 37 : 38 : return ss.str(); 39 : } 40 : }; 41 : 42 : } // namespace ReceiveTags 43 : } // namespace Cce