75 using const_iterator = std::unordered_map<std::string, double>::const_iterator;
77 explicit SummaryState(time_point sim_start_arg,
double udqUndefined);
80 explicit SummaryState(std::time_t sim_start_arg);
83 SummaryState() : SummaryState(std::time_t{0}) {}
84 ~SummaryState() =
default;
91 void set(
const std::string& key,
double value);
93 bool erase(
const std::string& key);
94 bool erase_well_var(
const std::string& well,
const std::string& var);
95 bool erase_group_var(
const std::string& group,
const std::string& var);
97 bool has(
const std::string& key)
const;
98 bool has_well_var(
const std::string& well,
const std::string& var)
const;
99 bool has_well_var(
const std::string& var)
const;
100 bool has_group_var(
const std::string& group,
const std::string& var)
const;
101 bool has_group_var(
const std::string& var)
const;
102 bool has_conn_var(
const std::string& well,
const std::string& var, std::size_t global_index)
const;
103 bool has_segment_var(
const std::string& well,
const std::string& var, std::size_t segment)
const;
104 bool has_region_var(
const std::string& regSet,
const std::string& var, std::size_t region)
const;
106 void update(
const std::string& key,
double value);
107 void update_well_var(
const std::string& well,
const std::string& var,
double value);
108 void update_group_var(
const std::string& group,
const std::string& var,
double value);
109 void update_group_var(
const std::string& group,
const std::string& var, EclIO::SummaryNode::Type type,
double value);
110 void update_elapsed(
double delta);
111 void update_udq(
const UDQSet& udq_set);
112 void update_conn_var(
const std::string& well,
const std::string& var, std::size_t global_index,
double value);
113 void update_conn_var(
const std::string& well,
const std::string& var, EclIO::SummaryNode::Type type, std::size_t global_index,
double value);
115 void update_segment_var(
const std::string& well,
const std::string& var, std::size_t segment,
double value);
116 void update_region_var(
const std::string& regSet,
const std::string& var, std::size_t region,
double value);
118 double get(
const std::string&)
const;
119 double get(
const std::string&,
double)
const;
120 double get_elapsed()
const;
121 double get_well_var(
const std::string& well,
const std::string& var)
const;
122 double get_group_var(
const std::string& group,
const std::string& var)
const;
123 double get_conn_var(
const std::string& conn,
const std::string& var, std::size_t global_index)
const;
124 double get_segment_var(
const std::string& well,
const std::string& var, std::size_t segment)
const;
125 double get_region_var(
const std::string& regSet,
const std::string& var, std::size_t region)
const;
126 double get_well_var(
const std::string& well,
const std::string& var,
double)
const;
127 double get_group_var(
const std::string& group,
const std::string& var,
double)
const;
128 double get_conn_var(
const std::string& conn,
const std::string& var, std::size_t global_index,
double)
const;
129 double get_segment_var(
const std::string& well,
const std::string& var, std::size_t segment,
double)
const;
130 double get_region_var(
const std::string& regSet,
const std::string& var, std::size_t region,
double)
const;
131 double get_udq_undefined()
const {
return udq_undefined; }
133 bool is_undefined_value(
const double val)
const {
return val == udq_undefined; }
135 const std::vector<std::string>& wells()
const;
136 std::vector<std::string> wells(
const std::string& var)
const;
137 const std::vector<std::string>& groups()
const;
138 std::vector<std::string> groups(
const std::string& var)
const;
139 void append(
const SummaryState& buffer);
140 const_iterator begin()
const;
141 const_iterator end()
const;
142 std::size_t num_wells()
const;
143 std::size_t size()
const;
144 bool operator==(
const SummaryState& other)
const;
146 template<
class Serializer>
149 serializer(sim_start);
150 serializer(this->udq_undefined);
153 serializer(well_values);
155 serializer(well_names);
156 serializer(group_values);
157 serializer(m_groups);
158 serializer(group_names);
159 serializer(conn_values);
160 serializer(segment_values);
161 serializer(this->region_values);
164 static SummaryState serializationTestObject();
167 time_point sim_start;
168 double udq_undefined{};
170 std::unordered_map<std::string,double> values;
173 std::unordered_map<std::string, std::unordered_map<std::string, double>> well_values;
174 std::set<std::string> m_wells;
175 mutable std::optional<std::vector<std::string>> well_names;
178 std::unordered_map<std::string, std::unordered_map<std::string, double>> group_values;
179 std::set<std::string> m_groups;
180 mutable std::optional<std::vector<std::string>> group_names;
184 std::unordered_map<std::string, std::unordered_map<std::string, std::unordered_map<std::size_t, double>>> conn_values;
188 std::unordered_map<std::string, std::unordered_map<std::string, std::unordered_map<std::size_t, double>>> segment_values;
192 std::unordered_map<std::string, std::unordered_map<std::string, std::unordered_map<std::size_t, double>>> region_values;
195 mutable std::string conn_key_buffer_;