22 #ifndef DATUM_DEPTH_HPP_INCLUDED 23 #define DATUM_DEPTH_HPP_INCLUDED 27 #include <string_view> 37 class SOLUTIONSection;
48 DatumDepth() =
default;
53 explicit DatumDepth(
const SOLUTIONSection& soln);
57 static DatumDepth serializationTestObjectZero();
62 static DatumDepth serializationTestObjectGlobal();
67 static DatumDepth serializationTestObjectDefaultRegion();
72 static DatumDepth serializationTestObjectUserDefined();
81 double operator()(
const int region)
const 83 return (*
this)(
"FIPNUM", region);
94 double operator()(std::string_view rset,
const int region)
const 96 return std::visit([rset, region](
const auto& datumDepthImpl)
97 {
return datumDepthImpl(rset, region); }, this->datum_);
106 bool operator==(
const DatumDepth& that)
const 108 return this->datum_ == that.datum_;
116 template <
class Serializer>
117 void serializeOp(Serializer& serializer)
119 serializer(this->datum_);
144 double operator()([[maybe_unused]] std::string_view rset,
145 [[maybe_unused]]
const int region)
const 151 static Zero serializationTestObject() {
return {}; }
154 bool operator==(
const Zero&)
const {
return true; }
162 template <
class Serializer>
163 void serializeOp([[maybe_unused]] Serializer& serializer)
177 explicit Global(
const SOLUTIONSection& soln);
187 double operator()([[maybe_unused]] std::string_view rset,
188 [[maybe_unused]]
const int region)
const 194 static Global serializationTestObject();
202 bool operator==(
const Global& that)
const 204 return this->depth_ == that.depth_;
213 template <
class Serializer>
214 void serializeOp(Serializer& serializer)
216 serializer(this->depth_);
230 DefaultRegion() =
default;
235 explicit DefaultRegion(
const SOLUTIONSection& soln);
238 static DefaultRegion serializationTestObject();
248 double operator()([[maybe_unused]] std::string_view rset,
249 const int region)
const 251 assert (! this->depth_.empty());
257 return (region < static_cast<int>(this->depth_.size()))
258 ? this->depth_[region] : this->depth_.back();
267 bool operator==(
const DefaultRegion& that)
const 269 return this->depth_ == that.depth_;
278 template <
class Serializer>
279 void serializeOp(Serializer& serializer)
281 serializer(this->depth_);
287 std::vector<double> depth_{};
295 UserDefined() =
default;
300 explicit UserDefined(
const SOLUTIONSection& soln);
303 static UserDefined serializationTestObject();
313 double operator()(std::string_view rset,
const int region)
const;
321 bool operator==(
const UserDefined& that)
const 323 return (this->rsetNames_ == that.rsetNames_)
324 && (this->rsetStart_ == that.rsetStart_)
325 && (this->depth_ == that.depth_)
326 && (this->default_ == that.default_)
327 && (this->rsetIndex_ == that.rsetIndex_)
337 template <
class Serializer>
338 void serializeOp(Serializer& serializer)
340 serializer(this->rsetNames_);
341 serializer(this->rsetStart_);
342 serializer(this->depth_);
343 serializer(this->default_);
344 serializer(this->rsetIndex_);
350 std::vector<std::string> rsetNames_{};
353 std::vector<std::vector<double>::size_type> rsetStart_{};
357 std::vector<double> depth_{};
361 std::vector<double> default_{};
365 std::vector<std::vector<std::string>::size_type> rsetIndex_{};
384 double depthValue(std::string_view rset,
385 std::vector<double>::const_iterator begin,
386 std::vector<double>::const_iterator end,
387 std::vector<double>::difference_type ix)
const;
392 std::variant<Zero, Global, DefaultRegion, UserDefined> datum_{};
397 #endif // DATUM_DEPTH_HPP_INCLUDED This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30