ECLSaturationFunc.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_ECLSATURATIONFUNC_HEADER_INCLUDED
21#define OPM_ECLSATURATIONFUNC_HEADER_INCLUDED
22
27
28#include <memory>
29#include <vector>
30
38
39namespace Opm {
40 class ECLGraph;
41 class ECLRestartData;
42 class ECLInitFileData;
43
67 std::vector<double>
69 const ECLRestartData& rstrt,
70 const ECLPhaseIndex phase);
71
75 {
76 public:
79 struct RawCurve
80 {
82 enum class Function {
84 RelPerm,
85
87 CapPress,
88 };
89
91 enum class SubSystem {
93 OilGas,
94
96 OilWater,
97 };
98
101
104
108 };
109
111 enum Type : unsigned char {
112 Horizontal = 1 << 0u,
113 Vertical = 1 << 1u,
114 };
115
118 {}
119
120 // Default: Use both Horizontal and Vertical if specified.
121 unsigned char enable;
122 };
123
135 const ECLInitFileData& init);
136
139
148
154
165
173
187 void setOutputUnits(std::unique_ptr<const ECLUnits::UnitSystem> usys);
188
207 std::vector<double>
209 const ECLRestartData& rstrt,
210 const ECLPhaseIndex p) const;
211
271 std::vector<FlowDiagnostics::Graph>
272 getSatFuncCurve(const std::vector<RawCurve>& func,
273 const int activeCell,
274 const bool useEPS = true) const;
275
334 std::vector<FlowDiagnostics::Graph>
335 getSatFuncCurve(const std::vector<RawCurve>& func,
336 const int activeCell,
337 const SatFuncScaling& scaling) const;
338
339 private:
341 class Impl;
342
344 std::unique_ptr<Impl> pImpl_;
345 };
346
347} // namespace Opm
348
349#endif // OPM_ECLSATURATIONFUNC_HEADER_INCLUDED
Definition: ECLGraph.hpp:52
Definition: ECLResultData.hpp:177
Definition: ECLResultData.hpp:57
Definition: ECLSaturationFunc.hpp:75
ECLSaturationFunc(ECLSaturationFunc &&rhs)
std::vector< FlowDiagnostics::Graph > getSatFuncCurve(const std::vector< RawCurve > &func, const int activeCell, const SatFuncScaling &scaling) const
~ECLSaturationFunc()
Destructor.
ECLSaturationFunc & operator=(ECLSaturationFunc &&rhs)
ECLSaturationFunc(const ECLSaturationFunc &rhs)
std::vector< double > relperm(const ECLGraph &G, const ECLRestartData &rstrt, const ECLPhaseIndex p) const
ECLSaturationFunc(const ECLGraph &G, const ECLInitFileData &init)
ECLSaturationFunc & operator=(const ECLSaturationFunc &rhs)
std::vector< FlowDiagnostics::Graph > getSatFuncCurve(const std::vector< RawCurve > &func, const int activeCell, const bool useEPS=true) const
void setOutputUnits(std::unique_ptr< const ECLUnits::UnitSystem > usys)
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
ECLPhaseIndex
Definition: ECLPhaseIndex.hpp:28
std::vector< double > phaseSaturation(const ECLGraph &G, const ECLRestartData &rstrt, const ECLPhaseIndex phase)
Definition: ECLSaturationFunc.hpp:80
SubSystem subsys
Particular sub-system of this request.
Definition: ECLSaturationFunc.hpp:103
ECLPhaseIndex thisPh
Definition: ECLSaturationFunc.hpp:107
Function curve
Particular saturation function of this request.
Definition: ECLSaturationFunc.hpp:100
Function
Which saturation function does this request reference.
Definition: ECLSaturationFunc.hpp:82
SubSystem
Which one-dimensional sub-system does this request reference.
Definition: ECLSaturationFunc.hpp:91
Definition: ECLSaturationFunc.hpp:110
Type
Definition: ECLSaturationFunc.hpp:111
@ Vertical
Definition: ECLSaturationFunc.hpp:113
@ Horizontal
Definition: ECLSaturationFunc.hpp:112
unsigned char enable
Definition: ECLSaturationFunc.hpp:121
SatFuncScaling()
Definition: ECLSaturationFunc.hpp:116