49 RateVector(
const double orat,
const double grat,
const double wrat)
60 double eval(
const WellGuideRateTarget target)
const;
61 double eval(
const Group::GuideRateProdTarget target)
const;
62 double eval(
const GuideRateModel::Target target)
const;
64 template<
class Serializer>
79 GuideRateValue(
const double t,
const double v,
const GuideRateModel::Target tg)
92 return (this->sim_time == other.sim_time)
93 && (this->value == other.value);
98 return !(*
this == other);
101 template<
class Serializer>
104 serializer(sim_time);
109 double sim_time { std::numeric_limits<double>::lowest() };
110 double value { std::numeric_limits<double>::lowest() };
111 GuideRateModel::Target target { GuideRateModel::Target::NONE };
116 void setSerializationTestData();
118 void compute(
const std::string& wgname,
119 const std::size_t report_step,
120 const double sim_time,
121 const double oil_pot,
122 const double gas_pot,
123 const double wat_pot);
125 void compute(
const std::string& wgname,
127 const std::size_t report_step,
128 const std::optional<double> guide_rate);
130 bool has(
const std::string& name)
const;
131 bool hasPotentials(
const std::string& name)
const;
132 bool has(
const std::string& name,
const Phase& phase)
const;
134 double get(
const std::string& well,
const WellGuideRateTarget target,
const RateVector& rates)
const;
135 double get(
const std::string& group,
const Group::GuideRateProdTarget target,
const RateVector& rates)
const;
136 double get(
const std::string& name,
const GuideRateModel::Target model_target,
const RateVector& rates)
const;
137 double get(
const std::string& group,
const Phase& phase)
const;
139 double getSI(
const std::string& well,
const WellGuideRateTarget target,
const RateVector& rates)
const;
140 double getSI(
const std::string& group,
const Group::GuideRateProdTarget target,
const RateVector& rates)
const;
141 double getSI(
const std::string& wgname,
const GuideRateModel::Target target,
const RateVector& rates)
const;
142 double getSI(
const std::string& group,
const Phase& phase)
const;
144 void init_grvalue(
const std::size_t report_step,
const std::string& wgname,
GuideRateValue value);
145 void init_grvalue_SI(
const std::size_t report_step,
const std::string& wgname,
GuideRateValue value);
147 void updateGuideRateExpiration(
const double sim_time,
148 const std::size_t report_step);
150 template<
class Serializer>
154 serializer(injection_group_values);
155 serializer(potentials);
156 serializer(guide_rates_expired);
162 GuideRateValue curr{};
163 GuideRateValue prev{};
165 static GRValState serializationTestObject()
167 return GRValState{GuideRateValue::serializationTestObject(),
168 GuideRateValue::serializationTestObject()};
171 template<
class Serializer>
172 void serializeOp(Serializer& serializer)
181 template <
class T1,
class T2>
182 std::size_t operator()(
const std::pair<T1, T2>& pair)
const
184 return std::hash<T1>()(pair.first) ^ std::hash<T2>()(pair.second);
188 using GRValPtr = std::unique_ptr<GRValState>;
189 using pair = std::pair<Phase, std::string>;
191 void well_compute(
const std::string& wgname,
192 const std::size_t report_step,
193 const double sim_time,
194 const double oil_pot,
195 const double gas_pot,
196 const double wat_pot);
198 void group_compute(
const std::string& wgname,
199 const std::size_t report_step,
200 const double sim_time,
201 const double oil_pot,
202 const double gas_pot,
203 const double wat_pot);
205 double eval_form(
const GuideRateModel& model,
206 const double oil_pot,
207 const double gas_pot,
208 const double wat_pot)
const;
209 double eval_group_pot()
const;
210 double eval_group_resvinj()
const;
212 void assign_grvalue(
const std::string& wgname,
213 const GuideRateModel& model,
214 GuideRateValue&& value);
215 double get_grvalue_result(
const GRValState& gr)
const;
217 const Schedule& schedule;
219 std::unordered_map<std::string, GRValPtr> values{};
220 std::unordered_map<pair, double, pair_hash> injection_group_values{};
221 std::unordered_map<std::string, RateVector> potentials{};
222 bool guide_rates_expired {
false};
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30