20 #ifndef COMPLETION_HPP_ 21 #define COMPLETION_HPP_ 23 #include <opm/utility/CopyablePtr.hpp> 25 #include <opm/input/eclipse/Schedule/Well/ConnectionEconLimits.hpp> 26 #include <opm/input/eclipse/Schedule/Well/FilterCake.hpp> 27 #include <opm/input/eclipse/Schedule/Well/WINJMULT.hpp> 33 #include <string_view> 40 class FieldPropsManager;
43 namespace Opm {
namespace RestartIO {
49 enum class ConnectionOrder {
64 static std::string State2String(State enumValue);
65 static State StateFromString(std::string_view stringValue);
68 enum class Direction {
74 static std::string Direction2String(
const Direction enumValue);
75 static Direction DirectionFromString(std::string_view stringValue);
78 using Order = ConnectionOrder;
80 static std::string Order2String(Order enumValue);
81 static Order OrderFromString(std::string_view comporderStringValue);
145 return ! (*
this == that);
155 template <
class Serializer>
158 serializer(this->
CF);
159 serializer(this->
Kh);
160 serializer(this->
Ke);
161 serializer(this->
rw);
162 serializer(this->
r0);
163 serializer(this->
re);
175 std::size_t global_index,
180 const int satTableId,
182 const CTFProperties& ctf_properties,
183 const std::size_t sort_value,
184 const bool defaultSatTabId,
193 bool attachedToSegment()
const;
194 bool sameCoordinate(
const int i,
const int j,
const int k)
const;
198 std::size_t global_index()
const;
199 int get_lgr_level()
const {
return lgr_grid;}
201 Direction dir()
const;
202 double depth()
const;
203 int satTableId()
const;
204 int complnum()
const;
206 double wpimult()
const;
213 double connectionLength()
const;
214 double skinFactor()
const;
215 double dFactor()
const;
216 CTFKind kind()
const;
217 const InjMult& injmult()
const;
218 bool activeInjMult()
const;
219 const FilterCake& getFilterCake()
const;
220 bool filterCakeActive()
const;
221 double getFilterCakeRadius()
const;
222 double getFilterCakeArea()
const;
224 const ConnectionEconLimits& econLimits()
const;
225 bool hasEconLimits()
const;
227 const CTFProperties& ctfProperties()
const 229 return this->ctf_properties_;
232 std::size_t sort_value()
const;
233 bool getDefaultSatTabId()
const;
234 const std::optional<std::pair<double, double>>& perf_range()
const;
235 std::string str()
const;
237 bool ctfAssignedFromInput()
const 239 return this->m_ctfkind == CTFKind::DeckValue;
242 bool operator==(
const Connection&)
const;
243 bool operator!=(
const Connection& that)
const 245 return ! (*
this == that);
248 void setInjMult(
const InjMult& inj_mult);
249 void setFilterCake(
const FilterCake& filter_cake);
250 void setEconLimits(
const ConnectionEconLimits& econ_limits);
251 void setState(State state);
252 void setComplnum(
int compnum);
253 void setSkinFactor(
double skin_factor);
254 void setDFactor(
double d_factor);
255 void setKe(
double Ke);
256 void setCF(
double CF);
257 void setDefaultSatTabId(
bool id);
258 void setStaticDFacCorrCoeff(
const double c);
260 void scaleWellPi(
double wellPi);
261 bool prepareWellPIScaling();
262 bool applyWellPIScaling(
const double scaleFactor);
264 void updateSegmentRST(
int segment_number_arg,
265 double center_depth_arg);
266 void updateSegment(
int segment_number_arg,
267 double center_depth_arg,
268 std::size_t compseg_insert_index,
269 const std::optional<std::pair<double,double>>& perf_range);
271 template<
class Serializer>
272 void serializeOp(Serializer& serializer)
274 serializer(this->direction);
275 serializer(this->center_depth);
276 serializer(this->open_state);
277 serializer(this->sat_tableId);
278 serializer(this->m_complnum);
279 serializer(this->ctf_properties_);
280 serializer(this->ijk);
281 serializer(this->lgr_grid);
282 serializer(this->m_ctfkind);
283 serializer(this->m_global_index);
284 serializer(this->m_injmult);
285 serializer(this->m_sort_value);
286 serializer(this->m_perf_range);
287 serializer(this->m_defaultSatTabId);
288 serializer(this->segment_number);
289 serializer(this->m_wpimult);
290 serializer(this->m_subject_to_welpi);
291 serializer(this->m_filter_cake);
292 serializer(this->m_econ_limits);
299 Direction direction { Direction::Z };
300 double center_depth { 0.0 };
301 State open_state { State::SHUT };
302 int sat_tableId { -1 };
303 int m_complnum { -1 };
304 CTFProperties ctf_properties_{};
306 std::array<int,3> ijk{};
308 CTFKind m_ctfkind { CTFKind::DeckValue };
309 std::optional<InjMult> m_injmult{};
310 std::size_t m_global_index{};
363 std::size_t m_sort_value{};
365 std::optional<std::pair<double,double>> m_perf_range{};
366 bool m_defaultSatTabId{
true};
371 int segment_number { 0 };
373 double m_wpimult { 1.0 };
376 bool m_subject_to_welpi {
false };
378 std::optional<FilterCake> m_filter_cake{};
380 Utility::CopyablePtr<ConnectionEconLimits> m_econ_limits{};
382 static std::string CTFKindToString(
const CTFKind);
387 #endif // COMPLETION_HPP_ double connection_length
Length of connection's perfororation interval.
Definition: Connection.hpp:116
double rw
Connection's wellbore radius.
Definition: Connection.hpp:106
Definition: Connection.hpp:55
void serializeOp(Serializer &serializer)
Serialisation operator.
Definition: Connection.hpp:156
double re
Connection's area equivalent radius–mostly for use by the polymer code.
Definition: Connection.hpp:113
Quantities that go into calculating the connection transmissibility factor.
Definition: Connection.hpp:93
double Kh
Static 'Kh' product.
Definition: Connection.hpp:100
bool operator==(const CTFProperties &that) const
Equality operator.
Definition: Connection.cpp:95
double r0
Connection's pressure equivalent radius.
Definition: Connection.hpp:109
double Ke
Effective permeability.
Definition: Connection.hpp:103
Definition: FieldPropsManager.hpp:42
double static_dfac_corr_coeff
Product of certain static elements of D-factor correlation law (WDFACCOR keyword).
Definition: Connection.hpp:127
bool operator!=(const CTFProperties &that) const
Inequality operator.
Definition: Connection.hpp:143
double skin_factor
Connection's skin factor.
Definition: Connection.hpp:119
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Collection of intersected cells and associate properties for all simulation grids, i.e., the main grid and all LGRs in the simulation run.
Definition: ScheduleGrid.hpp:49
double d_factor
Connection's D factor-i.e., the flow-dependent skin factor for gas.
Definition: Connection.hpp:123
static CTFProperties serializationTestObject()
Serialisation test object.
Definition: Connection.cpp:76
Definition: DeckValue.hpp:30
double peaceman_denom
Denominator in peaceman's formula-i.e., log(r0/rw) + skin.
Definition: Connection.hpp:130
double CF
Static connection transmissibility factor calculated from input quantities.
Definition: Connection.hpp:97
Class for (de-)serializing.
Definition: Serializer.hpp:95
Definition: connection.hpp:35