RelpermDiagnostics.hpp
Go to the documentation of this file.
1/*
2 Copyright 2015 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_RELPERMDIAGNOSTICS_HEADER_INCLUDED
21#define OPM_RELPERMDIAGNOSTICS_HEADER_INCLUDED
22
23#include <vector>
24#include <utility>
25
26#include <opm/material/fluidmatrixinteractions/EclEpsScalingPoints.hpp>
27
28namespace Opm {
29
30 class EclipseState;
31 template <typename Grid> class LevelCartesianIndexMapper;
32 class MiscTable;
33 class MsfnTable;
34 class SgcwmisTable;
35 class SgfnTable;
36 class SgofTable;
37 class SgwfnTable;
38 class SlgofTable;
39 class Sof2Table;
40 class Sof3Table;
41 class SorwmisTable;
42 class SsfnTable;
43 class SwfnTable;
44 class SwofTable;
45 class GsfTable;
46 class WsfTable;
47
51 {
52 public:
58 template <class LevelCartesianIndexMapper>
59 void diagnosis(const EclipseState& eclState,
60 const LevelCartesianIndexMapper& levelCartesianIndexMapper);
61
62 private:
63 enum FluidSystem {
64 OilWater,
65 OilGas,
66 WaterGas,
67 BlackOil,
68 Solvent
69 };
70
71 FluidSystem fluidSystem_;
72
73 enum SaturationFunctionFamily {
74 FamilyI,
75 FamilyII,
76 FamilyIII,
77 NoFamily
78 };
79
80 SaturationFunctionFamily satFamily_{NoFamily};
81
82 std::vector<EclEpsScalingPointsInfo<double> > unscaledEpsInfo_{};
83 std::vector<EclEpsScalingPointsInfo<double> > scaledEpsInfo_{};
84
85
88 bool phaseCheck_(const EclipseState& es);
89
91 void satFamilyCheck_(const EclipseState& eclState);
92
94 void tableCheck_(const EclipseState& eclState);
95
97 void unscaledEndPointsCheck_(const EclipseState& eclState);
98
99 template <class LevelCartesianIndexMapper>
100 void scaledEndPointsCheck_(const EclipseState& eclState,
101 const LevelCartesianIndexMapper& levelCartesianIndexMapper);
102
104 void swofTableCheck_(const SwofTable& swofTables,
105 const int satnumIdx);
106 void sgofTableCheck_(const SgofTable& sgofTables,
107 const int satnumIdx);
108 void slgofTableCheck_(const SlgofTable& slgofTables,
109 const int satnumIdx);
110 void swfnTableCheck_(const SwfnTable& swfnTables,
111 const int satnumIdx);
112 void sgfnTableCheck_(const SgfnTable& sgfnTables,
113 const int satnumIdx);
114 void wsfTableCheck_(const WsfTable& wsfTables,
115 const int satnumIdx);
116 void gsfTableCheck_(const GsfTable& gsfTables,
117 const int satnumIdx);
118 void sof3TableCheck_(const Sof3Table& sof3Tables,
119 const int satnumIdx);
120 void sof2TableCheck_(const Sof2Table& sof2Tables,
121 const int satnumIdx);
122 void sgwfnTableCheck_(const SgwfnTable& sgwfnTables,
123 const int satnumIdx);
125 void sgcwmisTableCheck_(const SgcwmisTable& sgcwmisTables,
126 const int satnumIdx);
127 void sorwmisTableCheck_(const SorwmisTable& sorwmisTables,
128 const int satnumIdx);
129 void ssfnTableCheck_(const SsfnTable& ssfnTables,
130 const int satnumIdx);
131 void miscTableCheck_(const MiscTable& miscTables,
132 const int miscnumIdx);
133 void msfnTableCheck_(const MsfnTable& msfnTables,
134 const int satnumIdx);
135 };
136
137} //namespace Opm
138
139#endif // OPM_RELPERMDIAGNOSTICS_HEADER_INCLUDED
Definition: RelpermDiagnostics.hpp:31
Definition: RelpermDiagnostics.hpp:51
void diagnosis(const EclipseState &eclState, const LevelCartesianIndexMapper &levelCartesianIndexMapper)
Definition: blackoilboundaryratevector.hh:39