24 #include <unordered_map>
27 #include <opm/input/eclipse/Schedule/UDQ/UDQSet.hpp>
41 bool has(
const std::string& key)
const;
44 bool has_well_var(
const std::string& well,
const std::string& key)
const;
45 bool has_group_var(
const std::string& group,
const std::string& key)
const;
47 double get(
const std::string& key)
const;
48 double get_group_var(
const std::string& well,
const std::string& var)
const;
49 double get_well_var(
const std::string& well,
const std::string& var)
const;
50 void add_define(std::size_t report_step,
const std::string& udq_key,
const UDQSet& result);
51 void add_assign(std::size_t report_step,
const std::string& udq_key,
const UDQSet& result);
52 bool assign(std::size_t report_step,
const std::string& udq_key)
const;
53 bool define(
const std::string& udq_key, std::pair<UDQUpdate, std::size_t> update_status)
const;
54 double undefined_value()
const;
56 std::vector<char> serialize()
const;
57 void deserialize(
const std::vector<char>& buffer);
58 bool operator==(
const UDQState& other)
const;
63 st.scalar_values = {{
"FU1", 100}, {
"FU2", 200}};
64 st.assignments = {{
"GU1", 99}, {
"GU2", 199}};
65 st.defines = {{
"DU1", 299}, {
"DU2", 399}};
67 st.well_values.emplace(
"W1", std::unordered_map<std::string, double>{{
"U1", 100}, {
"U2", 200}});
68 st.well_values.emplace(
"W2", std::unordered_map<std::string, double>{{
"U1", 700}, {
"32", 600}});
70 st.group_values.emplace(
"G1", std::unordered_map<std::string, double>{{
"U1", 100}, {
"U2", 200}});
71 st.group_values.emplace(
"G2", std::unordered_map<std::string, double>{{
"U1", 700}, {
"32", 600}});
76 template<
class Serializer>
77 void pack_unpack_wgmap(
Serializer& serializer, std::unordered_map<std::string, std::unordered_map<std::string, double>>& wgmap) {
78 std::size_t map_size = wgmap.size();
80 if (serializer.isSerializing()) {
81 for (
auto& [udq_key, values] : wgmap) {
83 serializer.template map<std::unordered_map<std::string, double>,
false>(values);
86 for (std::size_t index=0; index < map_size; index++) {
88 std::unordered_map<std::string, double> inner_map;
90 serializer.template map<std::unordered_map<std::string, double>,
false>(inner_map);
92 wgmap.emplace(udq_key, inner_map);
97 template<
class Serializer>
100 serializer(this->undef_value);
101 serializer.template map<std::unordered_map<std::string, double>,
false>(this->scalar_values);
102 serializer.template map<std::unordered_map<std::string, std::size_t>,
false>(this->assignments);
103 serializer.template map<std::unordered_map<std::string, std::size_t>,
false>(this->defines);
105 pack_unpack_wgmap(serializer, this->well_values);
106 pack_unpack_wgmap(serializer, this->group_values);
111 void add(
const std::string& udq_key,
const UDQSet& result);
112 double get_wg_var(
const std::string& well,
const std::string& key, UDQVarType var_type)
const;
114 std::unordered_map<std::string, double> scalar_values;
115 std::unordered_map<std::string, std::unordered_map<std::string, double>> well_values;
116 std::unordered_map<std::string, std::unordered_map<std::string, double>> group_values;
117 std::unordered_map<std::string, std::size_t> assignments;
118 std::unordered_map<std::string, std::size_t> defines;
Definition: Serializer.hpp:38
Definition: UDQSet.hpp:66
Definition: UDQState.hpp:36
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29