88 if (!std::getline(input, title) || title !=
"ERF interval means checkpoint v1") {
89 error =
"expected ERF interval means checkpoint v1 title";
92 if (!(input >> result.levels >> result.components) || result.levels < 0 ||
93 result.components < 0) {
94 error =
"missing or invalid interval-mean level/component counts";
99 result.level.resize(result.levels);
100 for (
int lev = 0; lev < result.levels; ++lev) {
101 auto& record = result.level[lev];
102 if (!(input >> record.level >> record.accumulation_count >> record.reset_done) ||
103 record.level != lev || !std::isfinite(record.accumulation_count) ||
104 record.accumulation_count < 0.0 ||
105 (record.reset_done != 0 && record.reset_done != 1)) {
106 error =
"invalid interval-mean level record " + std::to_string(lev);
111 error =
"truncated interval-mean BoxArray record for level " +
115 std::string box_remainder;
116 if (!std::getline(input, box_remainder)) {
117 error =
"truncated interval-mean BoxArray line for level " +
122 long long map_size = -1;
123 if (!(input >> map_size) || map_size < 0 ||
124 map_size !=
static_cast<long long>(record.boxes.size())) {
125 error =
"invalid interval-mean processor-map size for level " +
129 record.processor_map.resize(
static_cast<std::size_t
>(map_size));
130 for (
long long ibox = 0; ibox < map_size; ++ibox) {
131 if (!(input >> record.processor_map[
static_cast<std::size_t
>(ibox)])) {
132 error =
"truncated interval-mean processor map for level " +
bool read_box_array(std::istream &input, amrex::BoxArray &result)
Definition: ERF_IntervalMeansCheckpoint.H:35