1#ifndef OPM_FLAT_TABLE_HPP
2#define OPM_FLAT_TABLE_HPP
5#include <initializer_list>
17 explicit FlatTable(
const std::vector<T>& data) :
21 template<
class Serializer>
24 serializer(
static_cast<std::vector<T>&
>(*
this));
28template <
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);
102 static constexpr std::size_t size = 3;
109 return oil == data.oil &&
110 water == data.water &&
114 template<
class Serializer>
128 explicit DensityTable(std::initializer_list<DENSITYRecord> records);
137 static constexpr std::size_t size = 8;
145 double gas_in_oil_cross_phase;
146 double oil_in_oil_cross_phase;
149 return oil_mw == data.oil_mw &&
150 gas_mw == data.gas_mw &&
151 gas_in_gas == data.gas_in_gas &&
152 oil_in_gas == data.oil_in_gas &&
153 gas_in_oil == data.gas_in_oil &&
154 oil_in_oil == data.oil_in_oil &&
155 gas_in_oil_cross_phase == data.gas_in_oil_cross_phase &&
156 oil_in_oil_cross_phase == data.oil_in_oil_cross_phase;
159 template<
class Serializer>
164 serializer(gas_in_gas);
165 serializer(oil_in_gas);
166 serializer(gas_in_oil);
167 serializer(oil_in_oil);
168 serializer(gas_in_oil_cross_phase);
169 serializer(oil_in_oil_cross_phase);
178 return DiffCoeffTable({{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}});
184 static constexpr std::size_t size = 2;
191 return co2_in_water == data.co2_in_water &&
192 h2o_in_water == data.h2o_in_water;}
194 template<
class Serializer>
197 serializer(co2_in_water);
198 serializer(h2o_in_water);
212 static constexpr std::size_t size = 2;
219 return co2_in_gas == data.co2_in_gas &&
220 h2o_in_gas == data.h2o_in_gas;}
222 template<
class Serializer>
225 serializer(co2_in_gas);
226 serializer(h2o_in_gas);
240 static constexpr std::size_t size = 5;
242 double reference_pressure;
243 double volume_factor;
244 double compressibility;
246 double viscosibility;
248 bool operator==(
const PVTWRecord& data)
const {
249 return reference_pressure == data.reference_pressure &&
250 volume_factor == data.volume_factor &&
251 compressibility == data.compressibility &&
252 viscosity == data.viscosity &&
253 viscosibility == data.viscosibility;
256 template<
class Serializer>
259 serializer(reference_pressure);
260 serializer(volume_factor);
261 serializer(compressibility);
262 serializer(viscosity);
263 serializer(viscosibility);
271 explicit PvtwTable(std::initializer_list<PVTWRecord> records);
273 static PvtwTable serializationTestObject()
275 return PvtwTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
280 static constexpr std::size_t size = 2;
282 double reference_pressure;
283 double compressibility;
285 bool operator==(
const ROCKRecord& data)
const {
286 return reference_pressure == data.reference_pressure &&
287 compressibility == data.compressibility;
290 template<
class Serializer>
293 serializer(reference_pressure);
294 serializer(compressibility);
302 explicit RockTable(std::initializer_list<ROCKRecord> records);
304 static RockTable serializationTestObject()
311 static constexpr std::size_t size = 5;
313 double reference_pressure;
314 double volume_factor;
315 double compressibility;
317 double viscosibility;
320 return reference_pressure == data.reference_pressure &&
321 volume_factor == data.volume_factor &&
322 compressibility == data.compressibility &&
323 viscosity == data.viscosity &&
324 viscosibility == data.viscosibility;
327 template<
class Serializer>
330 serializer(reference_pressure);
331 serializer(volume_factor);
332 serializer(compressibility);
333 serializer(viscosity);
334 serializer(viscosibility);
343 return PvcdoTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
348 static constexpr std::size_t size = 1;
350 double todd_langstaff;
353 return todd_langstaff == data.todd_langstaff;
356 template<
class Serializer>
359 serializer(todd_langstaff);
373 static constexpr std::size_t size = 4;
381 return k_mh == data.k_mh &&
383 gamma == data.gamma &&
387 template<
class Serializer>
407 static constexpr std::size_t size = 1;
412 return rate == data.rate;
415 template<
class Serializer>
432 static constexpr std::size_t size = 1;
437 return eta == data.eta;
440 template<
class Serializer>
457 static constexpr std::size_t size = 2;
463 return viscosity == data.viscosity &&
464 density == data.density;
467 template<
class Serializer>
470 serializer(viscosity);
485 static constexpr std::size_t size = 2;
487 double reference_pressure;
491 return reference_pressure == data.reference_pressure &&
492 reference_rs == data.reference_rs;
495 template<
class Serializer>
498 serializer(reference_pressure);
499 serializer(reference_rs);
513 static constexpr std::size_t size = 3;
515 double reference_temperature;
516 double first_coefficient;
517 double second_coefficient;
520 return reference_temperature == data.reference_temperature &&
521 first_coefficient == data.first_coefficient &&
522 second_coefficient == data.second_coefficient;
525 template<
class Serializer>
528 serializer(reference_temperature);
529 serializer(first_coefficient);
530 serializer(second_coefficient);
544 static constexpr std::size_t size = 17;
565 return s1_residual == data.s1_residual &&
566 s1_critical == data.s1_critical &&
567 l1_relperm == data.l1_relperm &&
568 e1_relperm == data.e1_relperm &&
569 t1_relperm == data.t1_relperm &&
570 krt1_relperm == data.krt1_relperm &&
571 s2_residual == data.s2_residual &&
572 s2_critical == data.s2_critical &&
573 l2_relperm == data.l2_relperm &&
574 e2_relperm == data.e2_relperm &&
575 t2_relperm == data.t2_relperm &&
576 krt2_relperm == data.krt2_relperm &&
580 pcir_pc == data.pcir_pc &&
581 pct_pc == data.pct_pc;
584 template<
class Serializer>
587 serializer(s1_residual);
588 serializer(s1_critical);
589 serializer(l1_relperm);
590 serializer(e1_relperm);
591 serializer(t1_relperm);
592 serializer(krt1_relperm);
593 serializer(s2_residual);
594 serializer(s2_critical);
595 serializer(l2_relperm);
596 serializer(e2_relperm);
597 serializer(t2_relperm);
598 serializer(krt2_relperm);
612 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}});
622 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:84
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30
Definition FlatTable.hpp:101
Definition FlatTable.hpp:124
Definition FlatTable.hpp:211
Definition FlatTable.hpp:230
Definition FlatTable.hpp:136
Definition FlatTable.hpp:173
Definition FlatTable.hpp:183
Definition FlatTable.hpp:202
Definition FlatTable.hpp:14
Definition FlatTable.hpp:67
Definition FlatTable.hpp:90
Definition FlatTable.hpp:310
Definition FlatTable.hpp:239
Definition FlatTable.hpp:347
Definition FlatTable.hpp:363
Definition FlatTable.hpp:372
Definition FlatTable.hpp:397
Definition FlatTable.hpp:338
Definition FlatTable.hpp:268
Definition FlatTable.hpp:279
Definition FlatTable.hpp:299
Definition FlatTable.hpp:543
Definition FlatTable.hpp:617
Definition FlatTable.hpp:406
Definition FlatTable.hpp:422
Definition FlatTable.hpp:431
Definition FlatTable.hpp:447
Definition FlatTable.hpp:607
Definition FlatTable.hpp:456
Definition FlatTable.hpp:475
Definition FlatTable.hpp:484
Definition FlatTable.hpp:503
Definition FlatTable.hpp:512
Definition FlatTable.hpp:534