1 #ifndef OPM_FLAT_TABLE_HPP
2 #define OPM_FLAT_TABLE_HPP
5 #include <initializer_list>
13 template<
typename T >
17 explicit FlatTable(
const std::vector<T>& data) :
21 template<
class Serializer>
24 serializer(
static_cast<std::vector<T>&
>(*
this));
28 template <
typename RecordType>
34 std::string_view expect =
"");
37 auto size()
const {
return this->table_.size(); }
38 bool empty()
const {
return this->table_.empty(); }
39 auto begin()
const {
return this->table_.begin(); }
40 auto end()
const {
return this->table_.end(); }
42 const RecordType& operator[](
const std::size_t tableID)
const
44 return this->table_[tableID];
47 const RecordType& at(
const std::size_t tableID)
const
49 return this->table_.at(tableID);
54 return this->table_ == other.table_;
57 template <
class Serializer>
60 serializer(this->table_);
64 std::vector<RecordType> table_{};
68 static constexpr std::size_t size = 3;
75 return this->oil_api == data.oil_api &&
76 this->water_sg == data.water_sg &&
77 this->gas_sg == data.gas_sg;
80 template<
class Serializer>
83 serializer(this->oil_api);
84 serializer(this->water_sg);
85 serializer(this->gas_sg);
93 explicit GravityTable(std::initializer_list<GRAVITYRecord> records);
100 template <
class Serializer>
103 FlatTableWithCopy::serializeOp(serializer);
108 static constexpr std::size_t size = 3;
115 return oil == data.oil &&
116 water == data.water &&
120 template<
class Serializer>
134 explicit DensityTable(std::initializer_list<DENSITYRecord> records);
141 template <
class Serializer>
144 FlatTableWithCopy::serializeOp(serializer);
149 static constexpr std::size_t size = 8;
157 double gas_in_oil_cross_phase;
158 double oil_in_oil_cross_phase;
161 return oil_mw == data.oil_mw &&
162 gas_mw == data.gas_mw &&
163 gas_in_gas == data.gas_in_gas &&
164 oil_in_gas == data.oil_in_gas &&
165 gas_in_oil == data.gas_in_oil &&
166 oil_in_oil == data.oil_in_oil &&
167 gas_in_oil_cross_phase == data.gas_in_oil_cross_phase &&
168 oil_in_oil_cross_phase == data.oil_in_oil_cross_phase;
171 template<
class Serializer>
176 serializer(gas_in_gas);
177 serializer(oil_in_gas);
178 serializer(gas_in_oil);
179 serializer(oil_in_oil);
180 serializer(gas_in_oil_cross_phase);
181 serializer(oil_in_oil_cross_phase);
190 return DiffCoeffTable({{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}});
195 static constexpr std::size_t size = 5;
197 double reference_pressure;
198 double volume_factor;
199 double compressibility;
201 double viscosibility;
203 bool operator==(
const PVTWRecord& data)
const {
204 return reference_pressure == data.reference_pressure &&
205 volume_factor == data.volume_factor &&
206 compressibility == data.compressibility &&
207 viscosity == data.viscosity &&
208 viscosibility == data.viscosibility;
211 template<
class Serializer>
214 serializer(reference_pressure);
215 serializer(volume_factor);
216 serializer(compressibility);
217 serializer(viscosity);
218 serializer(viscosibility);
226 explicit PvtwTable(std::initializer_list<PVTWRecord> records);
228 static PvtwTable serializationTestObject()
230 return PvtwTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
233 template <
class Serializer>
236 FlatTableWithCopy::serializeOp(serializer);
241 static constexpr std::size_t size = 2;
243 double reference_pressure;
244 double compressibility;
246 bool operator==(
const ROCKRecord& data)
const {
247 return reference_pressure == data.reference_pressure &&
248 compressibility == data.compressibility;
251 template<
class Serializer>
254 serializer(reference_pressure);
255 serializer(compressibility);
262 static RockTable serializationTestObject()
269 static constexpr std::size_t size = 5;
271 double reference_pressure;
272 double volume_factor;
273 double compressibility;
275 double viscosibility;
278 return reference_pressure == data.reference_pressure &&
279 volume_factor == data.volume_factor &&
280 compressibility == data.compressibility &&
281 viscosity == data.viscosity &&
282 viscosibility == data.viscosibility;
285 template<
class Serializer>
288 serializer(reference_pressure);
289 serializer(volume_factor);
290 serializer(compressibility);
291 serializer(viscosity);
292 serializer(viscosibility);
301 return PvcdoTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
306 static constexpr std::size_t size = 1;
308 double todd_langstaff;
311 return todd_langstaff == data.todd_langstaff;
314 template<
class Serializer>
317 serializer(todd_langstaff);
331 static constexpr std::size_t size = 4;
339 return k_mh == data.k_mh &&
341 gamma == data.gamma &&
345 template<
class Serializer>
365 static constexpr std::size_t size = 1;
370 return rate == data.rate;
373 template<
class Serializer>
390 static constexpr std::size_t size = 1;
395 return eta == data.eta;
398 template<
class Serializer>
415 static constexpr std::size_t size = 2;
421 return viscosity == data.viscosity &&
422 density == data.density;
425 template<
class Serializer>
428 serializer(viscosity);
443 static constexpr std::size_t size = 2;
445 double reference_pressure;
449 return reference_pressure == data.reference_pressure &&
450 reference_rs == data.reference_rs;
453 template<
class Serializer>
456 serializer(reference_pressure);
457 serializer(reference_rs);
471 static constexpr std::size_t size = 3;
473 double reference_temperature;
474 double first_coefficient;
475 double second_coefficient;
478 return reference_temperature == data.reference_temperature &&
479 first_coefficient == data.first_coefficient &&
480 second_coefficient == data.second_coefficient;
483 template<
class Serializer>
486 serializer(reference_temperature);
487 serializer(first_coefficient);
488 serializer(second_coefficient);
502 static constexpr std::size_t size = 17;
523 return s1_residual == data.s1_residual &&
524 s1_critical == data.s1_critical &&
525 l1_relperm == data.l1_relperm &&
526 e1_relperm == data.e1_relperm &&
527 t1_relperm == data.t1_relperm &&
528 krt1_relperm == data.krt1_relperm &&
529 s2_residual == data.s2_residual &&
530 s2_critical == data.s2_critical &&
531 l2_relperm == data.l2_relperm &&
532 e2_relperm == data.e2_relperm &&
533 t2_relperm == data.t2_relperm &&
534 krt2_relperm == data.krt2_relperm &&
538 pcir_pc == data.pcir_pc &&
539 pct_pc == data.pct_pc;
542 template<
class Serializer>
545 serializer(s1_residual);
546 serializer(s1_critical);
547 serializer(l1_relperm);
548 serializer(e1_relperm);
549 serializer(t1_relperm);
550 serializer(krt1_relperm);
551 serializer(s2_residual);
552 serializer(s2_critical);
553 serializer(l2_relperm);
554 serializer(e2_relperm);
555 serializer(t2_relperm);
556 serializer(krt2_relperm);
570 return SwofletTable({{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0}});
580 return SgofletTable({{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0}});
Definition: DeckKeyword.hpp:36
Definition: FlatTable.hpp:30
Class for (de-)serializing.
Definition: Serializer.hpp:75
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29
Definition: FlatTable.hpp:107
Definition: FlatTable.hpp:130
Definition: FlatTable.hpp:148
Definition: FlatTable.hpp:185
Definition: FlatTable.hpp:14
Definition: FlatTable.hpp:67
Definition: FlatTable.hpp:90
Definition: FlatTable.hpp:268
Definition: FlatTable.hpp:194
Definition: FlatTable.hpp:305
Definition: FlatTable.hpp:321
Definition: FlatTable.hpp:330
Definition: FlatTable.hpp:355
Definition: FlatTable.hpp:296
Definition: FlatTable.hpp:223
Definition: FlatTable.hpp:240
Definition: FlatTable.hpp:259
Definition: FlatTable.hpp:501
Definition: FlatTable.hpp:575
Definition: FlatTable.hpp:364
Definition: FlatTable.hpp:380
Definition: FlatTable.hpp:389
Definition: FlatTable.hpp:405
Definition: FlatTable.hpp:565
Definition: FlatTable.hpp:414
Definition: FlatTable.hpp:433
Definition: FlatTable.hpp:442
Definition: FlatTable.hpp:461
Definition: FlatTable.hpp:470
Definition: FlatTable.hpp:492