ECLPvtOil.hpp
Go to the documentation of this file.
1/*
2 Copyright 2017 Statoil ASA.
3
4 This file is part of the Open Porous Media Project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef OPM_ECLPVTOIL_HEADER_INCLUDED
21#define OPM_ECLPVTOIL_HEADER_INCLUDED
22
25
26#include <memory>
27#include <vector>
28
29// Forward declarations
30namespace Opm {
31 struct ECLPropTableRawData;
32 class ECLInitFileData;
33} // Opm
34
35namespace Opm { namespace ECLPVT {
36
38 class Oil
39 {
40 public:
56 const int usys,
57 const bool const_compr,
58 std::vector<double> rhoS);
59
62
66 Oil(const Oil& rhs);
67
75 Oil(Oil&& rhs);
76
82 Oil& operator=(const Oil& rhs);
83
92 Oil& operator=(Oil&& rhs);
93
97 struct DissolvedGas {
99 std::vector<double> data;
100 };
101
105 struct OilPressure {
107 std::vector<double> data;
108 };
109
124 std::vector<double>
125 formationVolumeFactor(const int region,
126 const DissolvedGas& rs,
127 const OilPressure& po) const;
128
143 std::vector<double>
144 viscosity(const int region,
145 const DissolvedGas& rs,
146 const OilPressure& po) const;
147
155 double surfaceMassDensity(const int region) const;
156
178 std::vector<PVTGraph>
180 const int region) const;
181
182 private:
184 class Impl;
185
187 std::unique_ptr<Impl> pImpl_;
188 };
189
192 {
200 static std::unique_ptr<Oil>
202 };
203}} // Opm::ECLPVT
204
205#endif // OPM_ECLPVTOIL_HEADER_INCLUDED
const char *const const char *const raw
Definition: cJSON.h:264
Definition: ECLResultData.hpp:177
Interpolant for Basic Oil PVT Relations.
Definition: ECLPvtOil.hpp:39
Oil(const ECLPropTableRawData &raw, const int usys, const bool const_compr, std::vector< double > rhoS)
Oil & operator=(Oil &&rhs)
std::vector< PVTGraph > getPvtCurve(const RawCurve curve, const int region) const
~Oil()
Destructor.
std::vector< double > viscosity(const int region, const DissolvedGas &rs, const OilPressure &po) const
Oil & operator=(const Oil &rhs)
Oil(Oil &&rhs)
double surfaceMassDensity(const int region) const
Oil(const Oil &rhs)
std::vector< double > formationVolumeFactor(const int region, const DissolvedGas &rs, const OilPressure &po) const
RawCurve
Definition: ECLPvtCommon.hpp:293
std::vector< double > init(const std::string &kewyord, const TableManager &tables, const Phases &phases, const std::vector< double > &cell_depth, const std::vector< int > &num, const std::vector< int > &endnum)
Definition: A.hpp:4
Basic Oil PVT Relation Interpolant Factory Functions.
Definition: ECLPvtOil.hpp:192
static std::unique_ptr< Oil > fromECLOutput(const ECLInitFileData &init)
Definition: ECLPvtOil.hpp:97
std::vector< double > data
Dissolved gas-oil ratio data for all sampling points.
Definition: ECLPvtOil.hpp:99
Definition: ECLPvtOil.hpp:105
std::vector< double > data
Oil phase pressure for all sampling points.
Definition: ECLPvtOil.hpp:107
Raw table data from which to construct collection of interpolants.
Definition: ECLPropTable.hpp:37