20 #ifndef GUIDE_RATE_CONFIG_HPP
21 #define GUIDE_RATE_CONFIG_HPP
25 #include <unordered_map>
28 #include <opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.hpp>
29 #include <opm/parser/eclipse/EclipseState/Schedule/Group/Group.hpp>
30 #include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
40 Well::GuideRateTarget target;
41 double scaling_factor;
43 bool operator==(
const WellTarget& data)
const {
44 return guide_rate == data.guide_rate &&
45 target == data.target &&
46 scaling_factor == data.scaling_factor;
49 template<
class Serializer>
52 serializer(guide_rate);
54 serializer(scaling_factor);
60 Group::GuideRateProdTarget target;
63 return guide_rate == data.guide_rate &&
64 target == data.target;
67 template<
class Serializer>
70 serializer(guide_rate);
77 Group::GuideRateInjTarget target;
80 return guide_rate == data.guide_rate &&
81 target == data.target;
84 template<
class Serializer>
87 serializer(guide_rate);
95 bool has_model()
const;
97 void update_well(
const Well& well);
99 void update_production_group(
const Group& group);
100 const WellTarget& well(
const std::string& well)
const;
101 const GroupProdTarget& production_group(
const std::string& group)
const;
102 const GroupInjTarget& injection_group(
const Phase& phase,
const std::string& group)
const;
104 bool has_well(
const std::string& well)
const;
105 bool has_injection_group(
const Phase& phase,
const std::string& group)
const;
106 bool has_production_group(
const std::string& group)
const;
110 template<
class Serializer>
114 serializer.map(wells);
115 serializer.map(production_groups);
116 serializer.map(injection_groups);
121 typedef std::pair<Phase,std::string> pair;
125 template <
class T1,
class T2>
126 std::size_t operator() (
const std::pair<T1, T2> &pair)
const
128 return std::hash<T1>()(pair.first) ^ std::hash<T2>()(pair.second);
132 std::optional<GuideRateModel> m_model;
133 std::unordered_map<std::string, WellTarget> wells;
134 std::unordered_map<std::string, GroupProdTarget> production_groups;
135 std::unordered_map<pair, GroupInjTarget, pair_hash> injection_groups;
Definition: GuideRateConfig.hpp:35
Definition: GuideRateModel.hpp:29
Definition: Serializer.hpp:38
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29
Definition: Group.hpp:130
Definition: GuideRateConfig.hpp:75
Definition: GuideRateConfig.hpp:58
Definition: GuideRateConfig.hpp:38