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);
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}});
196 static constexpr std::size_t size = 2;
203 return co2_in_water == data.co2_in_water &&
204 h2o_in_water == data.h2o_in_water;}
206 template<
class Serializer>
209 serializer(co2_in_water);
210 serializer(h2o_in_water);
224 static constexpr std::size_t size = 2;
231 return co2_in_gas == data.co2_in_gas &&
232 h2o_in_gas == data.h2o_in_gas;}
234 template<
class Serializer>
237 serializer(co2_in_gas);
238 serializer(h2o_in_gas);
252 static constexpr std::size_t size = 5;
254 double reference_pressure;
255 double volume_factor;
256 double compressibility;
258 double viscosibility;
260 bool operator==(
const PVTWRecord& data)
const {
261 return reference_pressure == data.reference_pressure &&
262 volume_factor == data.volume_factor &&
263 compressibility == data.compressibility &&
264 viscosity == data.viscosity &&
265 viscosibility == data.viscosibility;
268 template<
class Serializer>
271 serializer(reference_pressure);
272 serializer(volume_factor);
273 serializer(compressibility);
274 serializer(viscosity);
275 serializer(viscosibility);
283 explicit PvtwTable(std::initializer_list<PVTWRecord> records);
285 static PvtwTable serializationTestObject()
287 return PvtwTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
290 template <
class Serializer>
293 FlatTableWithCopy::serializeOp(serializer);
298 static constexpr std::size_t size = 2;
300 double reference_pressure;
301 double compressibility;
303 bool operator==(
const ROCKRecord& data)
const {
304 return reference_pressure == data.reference_pressure &&
305 compressibility == data.compressibility;
308 template<
class Serializer>
311 serializer(reference_pressure);
312 serializer(compressibility);
319 static RockTable serializationTestObject()
326 static constexpr std::size_t size = 5;
328 double reference_pressure;
329 double volume_factor;
330 double compressibility;
332 double viscosibility;
335 return reference_pressure == data.reference_pressure &&
336 volume_factor == data.volume_factor &&
337 compressibility == data.compressibility &&
338 viscosity == data.viscosity &&
339 viscosibility == data.viscosibility;
342 template<
class Serializer>
345 serializer(reference_pressure);
346 serializer(volume_factor);
347 serializer(compressibility);
348 serializer(viscosity);
349 serializer(viscosibility);
358 return PvcdoTable({{1.0, 2.0, 3.0, 4.0, 5.0}});
363 static constexpr std::size_t size = 1;
365 double todd_langstaff;
368 return todd_langstaff == data.todd_langstaff;
371 template<
class Serializer>
374 serializer(todd_langstaff);
388 static constexpr std::size_t size = 4;
396 return k_mh == data.k_mh &&
398 gamma == data.gamma &&
402 template<
class Serializer>
422 static constexpr std::size_t size = 1;
427 return rate == data.rate;
430 template<
class Serializer>
447 static constexpr std::size_t size = 1;
452 return eta == data.eta;
455 template<
class Serializer>
472 static constexpr std::size_t size = 2;
478 return viscosity == data.viscosity &&
479 density == data.density;
482 template<
class Serializer>
485 serializer(viscosity);
500 static constexpr std::size_t size = 2;
502 double reference_pressure;
506 return reference_pressure == data.reference_pressure &&
507 reference_rs == data.reference_rs;
510 template<
class Serializer>
513 serializer(reference_pressure);
514 serializer(reference_rs);
528 static constexpr std::size_t size = 3;
530 double reference_temperature;
531 double first_coefficient;
532 double second_coefficient;
535 return reference_temperature == data.reference_temperature &&
536 first_coefficient == data.first_coefficient &&
537 second_coefficient == data.second_coefficient;
540 template<
class Serializer>
543 serializer(reference_temperature);
544 serializer(first_coefficient);
545 serializer(second_coefficient);
559 static constexpr std::size_t size = 17;
580 return s1_residual == data.s1_residual &&
581 s1_critical == data.s1_critical &&
582 l1_relperm == data.l1_relperm &&
583 e1_relperm == data.e1_relperm &&
584 t1_relperm == data.t1_relperm &&
585 krt1_relperm == data.krt1_relperm &&
586 s2_residual == data.s2_residual &&
587 s2_critical == data.s2_critical &&
588 l2_relperm == data.l2_relperm &&
589 e2_relperm == data.e2_relperm &&
590 t2_relperm == data.t2_relperm &&
591 krt2_relperm == data.krt2_relperm &&
595 pcir_pc == data.pcir_pc &&
596 pct_pc == data.pct_pc;
599 template<
class Serializer>
602 serializer(s1_residual);
603 serializer(s1_critical);
604 serializer(l1_relperm);
605 serializer(e1_relperm);
606 serializer(t1_relperm);
607 serializer(krt1_relperm);
608 serializer(s2_residual);
609 serializer(s2_critical);
610 serializer(l2_relperm);
611 serializer(e2_relperm);
612 serializer(t2_relperm);
613 serializer(krt2_relperm);
627 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}});
637 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:107
Definition: FlatTable.hpp:130
Definition: FlatTable.hpp:223
Definition: FlatTable.hpp:242
Definition: FlatTable.hpp:148
Definition: FlatTable.hpp:185
Definition: FlatTable.hpp:195
Definition: FlatTable.hpp:214
Definition: FlatTable.hpp:14
Definition: FlatTable.hpp:67
Definition: FlatTable.hpp:90
Definition: FlatTable.hpp:325
Definition: FlatTable.hpp:251
Definition: FlatTable.hpp:362
Definition: FlatTable.hpp:378
Definition: FlatTable.hpp:387
Definition: FlatTable.hpp:412
Definition: FlatTable.hpp:353
Definition: FlatTable.hpp:280
Definition: FlatTable.hpp:297
Definition: FlatTable.hpp:316
Definition: FlatTable.hpp:558
Definition: FlatTable.hpp:632
Definition: FlatTable.hpp:421
Definition: FlatTable.hpp:437
Definition: FlatTable.hpp:446
Definition: FlatTable.hpp:462
Definition: FlatTable.hpp:622
Definition: FlatTable.hpp:471
Definition: FlatTable.hpp:490
Definition: FlatTable.hpp:499
Definition: FlatTable.hpp:518
Definition: FlatTable.hpp:527
Definition: FlatTable.hpp:549