61 static std::string State2String(State enumValue);
62 static State StateFromString(std::string_view stringValue);
65 enum class Direction {
71 static std::string Direction2String(
const Direction enumValue);
72 static Direction DirectionFromString(std::string_view stringValue);
75 using Order = ConnectionOrder;
77 static std::string Order2String(Order enumValue);
78 static Order OrderFromString(std::string_view comporderStringValue);
142 return ! (*
this == that);
152 template <
class Serializer>
155 serializer(this->CF);
156 serializer(this->Kh);
157 serializer(this->Ke);
158 serializer(this->rw);
159 serializer(this->r0);
160 serializer(this->re);
161 serializer(this->connection_length);
162 serializer(this->skin_factor);
163 serializer(this->d_factor);
164 serializer(this->static_dfac_corr_coeff);
165 serializer(this->peaceman_denom);
172 std::size_t global_index,
177 const int satTableId,
179 const CTFProperties& ctf_properties,
180 const std::size_t sort_value,
181 const bool defaultSatTabId,
190 bool attachedToSegment()
const;
191 bool sameCoordinate(
const int i,
const int j,
const int k)
const;
195 std::size_t global_index()
const;
196 int get_lgr_level()
const {
return lgr_grid;}
198 Direction dir()
const;
199 double depth()
const;
200 int satTableId()
const;
201 int complnum()
const;
203 double wpimult()
const;
210 double connectionLength()
const;
211 double skinFactor()
const;
212 double dFactor()
const;
213 CTFKind kind()
const;
214 const InjMult& injmult()
const;
215 bool activeInjMult()
const;
216 const FilterCake& getFilterCake()
const;
217 bool filterCakeActive()
const;
218 double getFilterCakeRadius()
const;
219 double getFilterCakeArea()
const;
221 const CTFProperties& ctfProperties()
const
223 return this->ctf_properties_;
226 std::size_t sort_value()
const;
227 bool getDefaultSatTabId()
const;
228 const std::optional<std::pair<double, double>>& perf_range()
const;
229 std::string str()
const;
231 bool ctfAssignedFromInput()
const
233 return this->m_ctfkind == CTFKind::DeckValue;
236 bool operator==(
const Connection&)
const;
237 bool operator!=(
const Connection& that)
const
239 return ! (*
this == that);
242 void setInjMult(
const InjMult& inj_mult);
243 void setFilterCake(
const FilterCake& filter_cake);
244 void setState(State state);
245 void setComplnum(
int compnum);
246 void setSkinFactor(
double skin_factor);
247 void setDFactor(
double d_factor);
248 void setKe(
double Ke);
249 void setCF(
double CF);
250 void setDefaultSatTabId(
bool id);
251 void setStaticDFacCorrCoeff(
const double c);
253 void scaleWellPi(
double wellPi);
254 bool prepareWellPIScaling();
255 bool applyWellPIScaling(
const double scaleFactor);
257 void updateSegmentRST(
int segment_number_arg,
258 double center_depth_arg);
259 void updateSegment(
int segment_number_arg,
260 double center_depth_arg,
261 std::size_t compseg_insert_index,
262 const std::optional<std::pair<double,double>>& perf_range);
264 template<
class Serializer>
265 void serializeOp(Serializer& serializer)
267 serializer(this->direction);
268 serializer(this->center_depth);
269 serializer(this->open_state);
270 serializer(this->sat_tableId);
271 serializer(this->m_complnum);
272 serializer(this->ctf_properties_);
273 serializer(this->ijk);
274 serializer(this->lgr_grid);
275 serializer(this->m_ctfkind);
276 serializer(this->m_global_index);
277 serializer(this->m_injmult);
278 serializer(this->m_sort_value);
279 serializer(this->m_perf_range);
280 serializer(this->m_defaultSatTabId);
281 serializer(this->segment_number);
282 serializer(this->m_wpimult);
283 serializer(this->m_subject_to_welpi);
284 serializer(this->m_filter_cake);
291 Direction direction { Direction::Z };
292 double center_depth { 0.0 };
293 State open_state { State::SHUT };
294 int sat_tableId { -1 };
295 int m_complnum { -1 };
298 std::array<int,3> ijk{};
300 CTFKind m_ctfkind { CTFKind::DeckValue };
301 std::optional<InjMult> m_injmult{};
302 std::size_t m_global_index{};
355 std::size_t m_sort_value{};
357 std::optional<std::pair<double,double>> m_perf_range{};
358 bool m_defaultSatTabId{
true};
363 int segment_number { 0 };
365 double m_wpimult { 1.0 };
368 bool m_subject_to_welpi {
false };
370 std::optional<FilterCake> m_filter_cake{};
372 static std::string CTFKindToString(
const CTFKind);