opm-common
Tables.hpp
1 /*
2  Copyright 2019 Equinor.
3  Copyright 2017 Statoil ASA.
4  Copyright 2016 Statoil ASA.
5 
6  This file is part of the Open Porous Media project (OPM).
7 
8  OPM is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  OPM is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with OPM. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #ifndef OUTPUT_TABLES_HPP
23 #define OUTPUT_TABLES_HPP
24 
25 #include <tuple>
26 #include <vector>
27 
28 namespace Opm {
29 
30  struct DensityTable;
31  class EclipseState;
32  class UnitSystem;
33 
34 } // namespace Opm
35 
36 namespace Opm {
37 
41  class Tables
42  {
43  public:
49  explicit Tables(const UnitSystem& units);
50 
56  void addDensity(const DensityTable& density);
57 
62  void addPVTTables(const EclipseState& es);
63 
69  void addSatFunc(const EclipseState& es);
70 
72  const std::vector<int>& tabdims() const;
73 
75  const std::vector<double>& tab() const;
76 
77  private:
79  const UnitSystem& units_;
80 
82  std::vector<int> tabdims_;
83 
85  std::vector<double> data_;
86 
95  void addData(const std::size_t offset_index,
96  const std::vector<double>& new_data);
97 
108  void addSatFuncGas(const std::tuple<int, int, std::vector<double>>& sgfn);
109 
120  void addSatFuncOil(const std::tuple<int, int, std::vector<double>>& sofn);
121 
132  void addSatFuncWater(const std::tuple<int, int, std::vector<double>>& swfn);
133 
140  void addGasPVTTables(const EclipseState& es);
141 
148  void addOilPVTTables(const EclipseState& es);
149 
156  void addWaterPVTTables(const EclipseState& es);
157  };
158 
159 } // namespace Opm
160 
161 #endif // OUTPUT_TABLES_HPP
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30