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>
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);
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);
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;
bool operator==(const UDQSet &other) const
Equality comparison operator.
Definition: UDQSet.cpp:778
const std::string & wgname() const
Retrive named well/group to which this scalar is associated.
Definition: UDQSet.hpp:159
std::optional< double > m_value
Scalar value.
Definition: UDQSet.hpp:175
std::vector< std::string > wgnames() const
Retrive names of entities associate to this UDQ set.
Definition: UDQSet.cpp:400
void operator+=(const UDQSet &rhs)
Add other UDQ set into this.
Definition: UDQSet.cpp:413
bool operator==(const UDQScalar &other) const
Equality predicate.
Definition: UDQSet.cpp:141
Definition: UDQSet.hpp:39
std::vector< UDQScalar >::const_iterator end() const
Range-for traversal support (one past end of range)
Definition: UDQSet.cpp:538
std::string m_wgname
Associated well/group name.
Definition: UDQSet.hpp:178
void operator-=(const UDQSet &rhs)
Subtract UDQ set from this.
Definition: UDQSet.cpp:431
const UDQScalar & operator[](std::size_t index) const
Access individual UDQ scalar at particular index in UDQ set.
Definition: UDQSet.cpp:491
std::size_t size() const
Number of elements in UDQ set.
Definition: UDQSet.cpp:313
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:514
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
const std::optional< double > & value() const
Retrive contained numeric value.
Definition: UDQSet.hpp:156
std::size_t number() const
Retrive numbered item, typically segment or connection, to which this scalar is associated.
Definition: UDQSet.hpp:165
std::vector< UDQScalar >::const_iterator begin() const
Range-for traversal support (beginning of range)
Definition: UDQSet.cpp:533
Result Set From SegmentMatcher's Matching Process.
Definition: SegmentMatcher.hpp:42
Result Set From RegionSetMatcher's Matching Process.
Definition: RegionSetMatcher.hpp:43
Definition: UDQSet.hpp:186
void operator/=(const UDQScalar &rhs)
Divide this UDQ scalar by other.
Definition: UDQSet.cpp:100
std::vector< double > defined_values() const
Retrive the UDQ set's defined values only.
Definition: UDQSet.cpp:471
bool has(const std::string &name) const
Predicate for whether or not named UDQ element exists.
Definition: UDQSet.cpp:306
static UDQSet empty(const std::string &name)
Form an empty UDQ set.
Definition: UDQSet.cpp:234
std::size_t m_num
Numbered item.
Definition: UDQSet.hpp:182
void assign(const std::optional< double > &value)
Assign numeric value to this UDQ scalar.
Definition: UDQSet.cpp:68
UDQVarType var_type() const
Retrive the variable type of this UDQ set (e.g., well, group, field, segment &c). ...
Definition: UDQSet.cpp:395
void assign(const std::optional< double > &value)
Assign value to every element of the UDQ set.
Definition: UDQSet.cpp:384
void operator/=(const UDQSet &rhs)
Divide this UDQ set by other UDQ set.
Definition: UDQSet.cpp:453
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
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
std::size_t defined_size() const
Retrive the UDQ set's number of defined values.
Definition: UDQSet.cpp:484
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
bool defined() const
Predicate for whether or not this UDQ scalar has a defined value.
Definition: UDQSet.cpp:51
static UDQSet field(const std::string &name, double scalar_value)
Form a UDQ set at the field level.
Definition: UDQSet.cpp:239
const std::string & name() const
Retrive the name of this UDQ set.
Definition: UDQSet.cpp:164
void operator-=(const UDQScalar &rhs)
Subtract other UDQ scalar from this.
Definition: UDQSet.cpp:88
void operator*=(const UDQSet &rhs)
Multiply other UDQ set into this.
Definition: UDQSet.cpp:435
Class for (de-)serializing.
Definition: Serializer.hpp:94
void operator*=(const UDQScalar &rhs)
Multiply UDQ scalar into this.
Definition: UDQSet.cpp:124
Definition: UDQSet.hpp:190
void operator+=(const UDQScalar &rhs)
Add other UDQ scalar to this.
Definition: UDQSet.cpp:112