23#include <opm/input/eclipse/Schedule/UDQ/UDQEnums.hpp>
29#include <unordered_map>
42 UDQScalar() =
default;
51 explicit UDQScalar(
const double value,
const std::size_t num = 0);
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>
228 const std::vector<std::string>&
wgnames);
241 const std::vector<EnumeratedItems>& items);
264 const std::optional<double>& scalar_value);
285 const std::vector<std::string>&
wells);
297 const std::vector<std::string>&
wells,
298 double scalar_value);
306 const std::vector<std::string>&
groups);
318 const std::vector<std::string>&
groups,
319 double scalar_value);
330 static UDQSet segments(
const std::string&
name,
331 const std::vector<EnumeratedItems>& segments);
332 static UDQSet segments(
const std::string&
name,
333 const std::vector<EnumeratedItems>& segments,
334 const double scalar_value);
336 static UDQSet regions(
const std::string&
name,
337 const std::vector<EnumeratedItems>& regSetColl);
338 static UDQSet regions(
const std::string&
name,
339 const std::vector<EnumeratedItems>& regSetColl,
340 const double scalar_value);
346 void assign(
const std::optional<double>& value);
355 void assign(std::size_t index,
const std::optional<double>& value);
363 void assign(
const std::string& wgname,
const std::optional<double>& value);
374 void assign(
const std::string& wgname, std::size_t number,
const std::optional<double>& value);
380 void assign(
double value);
389 void assign(std::size_t index,
double value);
397 void assign(
const std::string& wgname,
double value);
400 bool has(
const std::string&
name)
const;
404 std::size_t
size()
const;
485 std::vector<UDQScalar>::const_iterator
begin()
const;
488 std::vector<UDQScalar>::const_iterator
end()
const;
491 std::vector<std::string>
wgnames()
const;
500 const std::string&
name()
const;
519 UDQVarType m_var_type = UDQVarType::NONE;
522 std::vector<UDQScalar> values;
Result Set From RegionSetMatcher's Matching Process.
Definition RegionSetMatcher.hpp:44
Result Set From SegmentMatcher's Matching Process.
Definition SegmentMatcher.hpp:43
Class for (de-)serializing.
Definition Serializer.hpp:94
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
UDQSet(const std::string &name, UDQVarType var_type)
Construct empty, named UDQ set of specific variable type.
Definition UDQSet.cpp:173
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