23#include <opm/input/eclipse/Schedule/UDQ/UDQEnums.hpp>
29#include <unordered_map>
33 class RegionSetMatchResult;
62 explicit UDQScalar(
const std::string&
wgname,
const std::size_t num = 0);
131 operator bool()
const;
193 std::vector<std::size_t> numbers{};
198 template <
class Serializer>
201 serializer(this->name);
202 serializer(this->numbers);
206 static std::vector<EnumeratedItems>
209 static std::vector<EnumeratedItems>
210 enumerateItems(
const SegmentSet& segmentSet);
228 const std::vector<std::string>&
wgnames);
241 const std::vector<EnumeratedItems>& items);
263 const std::optional<double>& scalar_value);
284 const std::vector<std::string>&
wells);
296 const std::vector<std::string>&
wells,
297 double scalar_value);
305 const std::vector<std::string>&
groups);
317 const std::vector<std::string>&
groups,
318 double scalar_value);
329 static UDQSet segments(
const std::string&
name,
330 const std::vector<EnumeratedItems>& segments);
331 static UDQSet segments(
const std::string&
name,
332 const std::vector<EnumeratedItems>& segments,
333 const double scalar_value);
335 static UDQSet regions(
const std::string&
name,
336 const std::vector<EnumeratedItems>& regSetColl);
337 static UDQSet regions(
const std::string&
name,
338 const std::vector<EnumeratedItems>& regSetColl,
339 const double scalar_value);
345 void assign(
const std::optional<double>& value);
354 void assign(std::size_t index,
const std::optional<double>& value);
362 void assign(
const std::string& wgname,
const std::optional<double>& value);
373 void assign(
const std::string& wgname, std::size_t number,
const std::optional<double>& value);
379 void assign(
double value);
388 void assign(std::size_t index,
double value);
396 void assign(
const std::string& wgname,
double value);
399 bool has(
const std::string&
name)
const;
403 std::size_t
size()
const;
484 std::vector<UDQScalar>::const_iterator
begin()
const;
487 std::vector<UDQScalar>::const_iterator
end()
const;
490 std::vector<std::string>
wgnames()
const;
499 const std::string&
name()
const;
518 UDQVarType m_var_type = UDQVarType::NONE;
521 std::vector<UDQScalar> values;
Result Set From RegionSetMatcher's Matching Process.
Definition RegionSetMatcher.hpp:44
Class for (de-)serializing.
Definition Serializer.hpp:84
void operator/=(const UDQScalar &rhs)
Divide this UDQ scalar by other.
Definition UDQSet.cpp:100
void operator-=(const UDQScalar &rhs)
Subtract other UDQ scalar from this.
Definition UDQSet.cpp:88
const std::optional< double > & value() const
Retrive contained numeric value.
Definition UDQSet.hpp:156
void assign(const std::optional< double > &value)
Assign numeric value to this UDQ scalar.
Definition UDQSet.cpp:68
std::size_t number() const
Retrive numbered item, typically segment or connection, to which this scalar is associated.
Definition UDQSet.hpp:165
void operator+=(const UDQScalar &rhs)
Add other UDQ scalar to this.
Definition UDQSet.cpp:112
std::optional< double > m_value
Scalar value.
Definition UDQSet.hpp:175
const std::string & wgname() const
Retrive named well/group to which this scalar is associated.
Definition UDQSet.hpp:159
void operator*=(const UDQScalar &rhs)
Multiply UDQ scalar into this.
Definition UDQSet.cpp:124
bool operator==(const UDQScalar &other) const
Equality predicate.
Definition UDQSet.cpp:141
std::string m_wgname
Associated well/group name.
Definition UDQSet.hpp:178
bool defined() const
Predicate for whether or not this UDQ scalar has a defined value.
Definition UDQSet.cpp:51
std::size_t m_num
Numbered item.
Definition UDQSet.hpp:182
double get() const
Retrive contained numeric value.
Definition UDQSet.cpp:56
Definition UDQSet.hpp:187
std::vector< UDQScalar >::const_iterator begin() const
Range-for traversal support (beginning of range)
Definition UDQSet.cpp:539
static UDQSet empty(const std::string &name)
Form an empty UDQ set.
Definition UDQSet.cpp:234
const UDQScalar & operator()(const std::string &well, const std::size_t item) const
Access individual UDQ scalar assiociated to particular named well and numbered sub-entity of that nam...
Definition UDQSet.cpp:520
void operator-=(const UDQSet &rhs)
Subtract UDQ set from this.
Definition UDQSet.cpp:433
static UDQSet field(const std::string &name, double scalar_value)
Form a UDQ set at the field level.
Definition UDQSet.cpp:239
void operator+=(const UDQSet &rhs)
Add other UDQ set into this.
Definition UDQSet.cpp:415
const UDQScalar & operator[](std::size_t index) const
Access individual UDQ scalar at particular index in UDQ set.
Definition UDQSet.cpp:495
const std::string & name() const
Retrive the name of this UDQ set.
Definition UDQSet.cpp:164
std::vector< double > defined_values() const
Retrive the UDQ set's defined values only.
Definition UDQSet.cpp:473
static UDQSet wells(const std::string &name, const std::vector< std::string > &wells)
Form a UDQ set pertaining to a set of named wells.
Definition UDQSet.cpp:246
std::vector< std::string > wgnames() const
Retrive names of entities associate to this UDQ set.
Definition UDQSet.cpp:402
std::vector< UDQScalar >::const_iterator end() const
Range-for traversal support (one past end of range)
Definition UDQSet.cpp:544
bool operator==(const UDQSet &other) const
Equality comparison operator.
Definition UDQSet.cpp:784
void operator*=(const UDQSet &rhs)
Multiply other UDQ set into this.
Definition UDQSet.cpp:437
static UDQSet groups(const std::string &name, const std::vector< std::string > &groups)
Form a UDQ set pertaining to a set of named groups.
Definition UDQSet.cpp:261
UDQVarType var_type() const
Retrive the variable type of this UDQ set (e.g., well, group, field, segment &c).
Definition UDQSet.cpp:397
bool has(const std::string &name) const
Predicate for whether or not named UDQ element exists.
Definition UDQSet.cpp:306
std::size_t defined_size() const
Retrive the UDQ set's number of defined values.
Definition UDQSet.cpp:486
std::size_t size() const
Number of elements in UDQ set.
Definition UDQSet.cpp:315
void assign(const std::optional< double > &value)
Assign value to every element of the UDQ set.
Definition UDQSet.cpp:386
static UDQSet scalar(const std::string &name, const std::optional< double > &scalar_value)
Form a UDQ set pertaining to a single scalar value.
Definition UDQSet.cpp:226
void operator/=(const UDQSet &rhs)
Divide this UDQ set by other UDQ set.
Definition UDQSet.cpp:455
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30
Definition UDQSet.hpp:191