Chi-Tech
PostProcessorPrinter_00a_latest.cc
Go to the documentation of this file.
2
5
6#include "chi_runtime.h"
7#include "chi_log.h"
8
9namespace chi
10{
11// ##################################################################
13 const std::string& pps_typename,
14 const std::vector<const PostProcessor*>& pp_list,
15 const Event& event) const
16{
17 if (pp_list.empty()) return;
18 std::stringstream outstr;
19
20 typedef std::pair<std::string, std::string> PPNameAndVal;
21 std::vector<PPNameAndVal> scalar_ppnames_and_vals;
22 for (const auto& pp : pp_list)
23 {
24 const auto& value = pp->GetValue();
25 const auto value_str = pp->ConvertValueToString(value);
26
27 scalar_ppnames_and_vals.emplace_back(pp->Name(), value_str);
28 } // for pp
29
30 if (not scalar_ppnames_and_vals.empty())
31 {
33 outstr << PrintPPsHorizontal(scalar_ppnames_and_vals, event.Code());
35 outstr << PrintPPsVertical(scalar_ppnames_and_vals, event.Code());
36 Chi::log.Log() << "\n"
37 << pps_typename
38 << " post-processors latest values at event \""
39 << event.Name() << "\"\n"
40 << outstr.str() << "\n";
41 }
42}
43
44// ##################################################################
46 const std::vector<std::pair<std::string, std::string>>&
47 scalar_ppnames_and_vals,
48 int)
49{
50 std::stringstream outstr;
51 const size_t num_pps = scalar_ppnames_and_vals.size();
52
53 std::vector<size_t> col_sizes;
54 col_sizes.reserve(scalar_ppnames_and_vals.size());
55 for (const auto& [name, valstring] : scalar_ppnames_and_vals)
56 col_sizes.push_back(std::max(name.size(), valstring.size()));
57
58 std::stringstream header1, header2, header3, body, footer;
59 for (size_t p = 0; p < num_pps; ++p)
60 {
61 const size_t col_size = std::max(col_sizes[p], size_t(15));
62 const auto& [ppname, ppval] = scalar_ppnames_and_vals[p];
63 const auto ppname2 = ppname + std::string(col_size - ppname.size(), ' ');
64 const auto ppval2 = std::string(col_size - ppval.size(), ' ') + ppval;
65 for (size_t c = 0; c < (col_size + 3); ++c)
66 {
67 if (c == 0)
68 {
69 header1 << "*";
70 header2 << "|";
71 header3 << "*";
72 body << "|";
73 footer << "*";
74 }
75 else if (c == 2)
76 {
77 header1 << "_";
78 header2 << ppname2;
79 header3 << "-";
80 body << ppval2;
81 footer << "-";
82 }
83 else if (c < (col_size + 2) and c != 1)
84 {
85 header1 << "_";
86 header3 << "-";
87 footer << "-";
88 }
89 else
90 {
91 header1 << "_";
92 header2 << " ";
93 header3 << "-";
94 body << " ";
95 footer << "-";
96 }
97 }
98 }
99 header1 << "*";
100 header2 << "|";
101 header3 << "*";
102 body << "|";
103 footer << "*";
104
105 outstr << header1.str() << "\n";
106 outstr << header2.str() << "\n";
107 outstr << header3.str() << "\n";
108 outstr << body.str() << "\n";
109 outstr << footer.str() << "\n";
110
111 return outstr.str();
112}
113
114// ##################################################################
116 const std::vector<std::pair<std::string, std::string>>&
117 scalar_ppnames_and_vals,
118 int event_code)
119{
120 std::stringstream outstr;
121
122 const size_t num_pps = scalar_ppnames_and_vals.size();
123
124 size_t max_colsize_name = scalar_ppnames_and_vals.front().first.size();
125 size_t max_colsize_val = scalar_ppnames_and_vals.front().second.size();
126 for (const auto& [name, valstring] : scalar_ppnames_and_vals)
127 {
128 max_colsize_name = std::max(max_colsize_name, name.size() + 8);
129 max_colsize_val = std::max(max_colsize_val, valstring.size());
130 }
131 constexpr size_t min_col_size = 15;
132 max_colsize_name = std::max(max_colsize_name, min_col_size + 5);
133 max_colsize_val = std::max(max_colsize_val, min_col_size);
134
135 const std::string hline = "*-" + std::string(max_colsize_name, '-') + "-*-" +
136 std::string(max_colsize_val, '-') + "-*";
137 const std::string name_header =
138 "| Post-Processor Name" + std::string(max_colsize_name - 19, ' ') +
139 " | Value" + std::string(max_colsize_val - 5, ' ') + " |";
140
141 outstr << hline << "\n";
142 outstr << name_header << "\n";
143 outstr << hline << "\n";
144 for (size_t p = 0; p < num_pps; ++p)
145 {
146 const auto& [name, val] = scalar_ppnames_and_vals[p];
147 outstr << "| " << name << "(latest)"
148 << std::string(max_colsize_name - name.size() - 8, ' ');
149 outstr << " | " << std::string(max_colsize_val - val.size(), ' ') << val
150 << " |\n";
151 } // for p
152 outstr << hline << "\n";
153
154 return outstr.str();
155}
156} // namespace chi
static chi::ChiLog & log
Definition: chi_runtime.h:81
LogStream Log(LOG_LVL level=LOG_0)
Definition: chi_log.cc:35
int Code() const
Definition: Event.cc:19
ScalarPPTableFormat scalar_pp_table_format_
static std::string PrintPPsVertical(const std::vector< std::pair< std::string, std::string > > &scalar_ppnames_and_vals, int event_code)
void PrintPPsLatestValuesOnly(const std::string &pps_typename, const std::vector< const PostProcessor * > &pp_list, const Event &event) const
static std::string PrintPPsHorizontal(const std::vector< std::pair< std::string, std::string > > &scalar_ppnames_and_vals, int)