All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
RelpermDiagnostics.hpp
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 #if HAVE_CONFIG_H
27 #include "config.h"
28 #endif // HAVE_CONFIG_H
29 
30 #include <opm/core/grid.h>
31 #include <opm/core/grid/GridManager.hpp>
32 #include <opm/core/grid/GridHelpers.hpp>
33 #include <opm/core/utility/linearInterpolation.hpp>
34 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
35 #include <opm/parser/eclipse/Deck/Deck.hpp>
36 #include <opm/common/OpmLog/OpmLog.hpp>
37 #include <opm/parser/eclipse/EclipseState/Tables/SsfnTable.hpp>
38 #include <opm/parser/eclipse/EclipseState/Tables/MiscTable.hpp>
39 #include <opm/parser/eclipse/EclipseState/Tables/MsfnTable.hpp>
40 #include <opm/parser/eclipse/EclipseState/Tables/SgcwmisTable.hpp>
41 #include <opm/parser/eclipse/EclipseState/Tables/SorwmisTable.hpp>
42 #include <opm/material/fluidmatrixinteractions/EclEpsScalingPoints.hpp>
43 
44 namespace Opm {
45 
46  class Sof2Table;
47  class SgwfnTable;
48 
52  {
53  public:
60  template <class GridT>
61  void diagnosis(const EclipseState& eclState,
62  const Deck& deck,
63  const GridT& grid);
64 
65  private:
66  enum FluidSystem {
67  OilWater,
68  OilGas,
69  WaterGas,
70  BlackOil,
71  Solvent
72  };
73 
74  FluidSystem fluidSystem_;
75 
76  enum SaturationFunctionFamily {
77  FamilyI,
78  FamilyII,
79  NoFamily
80  };
81 
82  SaturationFunctionFamily satFamily_;
83 
84  std::vector<Opm::EclEpsScalingPointsInfo<double> > unscaledEpsInfo_;
85  std::vector<Opm::EclEpsScalingPointsInfo<double> > scaledEpsInfo_;
86 
87 
89  void phaseCheck_(const EclipseState& es);
90 
92  void satFamilyCheck_(const EclipseState& eclState);
93 
95  void tableCheck_(const EclipseState& eclState);
96 
98  void unscaledEndPointsCheck_(const Deck& deck,
99  const EclipseState& eclState);
100 
101  template <class GridT>
102  void scaledEndPointsCheck_(const Deck& deck,
103  const EclipseState& eclState,
104  const GridT& grid);
105 
107  void swofTableCheck_(const Opm::SwofTable& swofTables,
108  const int satnumIdx);
109  void sgofTableCheck_(const Opm::SgofTable& sgofTables,
110  const int satnumIdx);
111  void slgofTableCheck_(const Opm::SlgofTable& slgofTables,
112  const int satnumIdx);
113  void swfnTableCheck_(const Opm::SwfnTable& swfnTables,
114  const int satnumIdx);
115  void sgfnTableCheck_(const Opm::SgfnTable& sgfnTables,
116  const int satnumIdx);
117  void sof3TableCheck_(const Opm::Sof3Table& sof3Tables,
118  const int satnumIdx);
119  void sof2TableCheck_(const Opm::Sof2Table& sof2Tables,
120  const int satnumIdx);
121  void sgwfnTableCheck_(const Opm::SgwfnTable& sgwfnTables,
122  const int satnumIdx);
124  void sgcwmisTableCheck_(const Opm::SgcwmisTable& sgcwmisTables,
125  const int satnumIdx);
126  void sorwmisTableCheck_(const Opm::SorwmisTable& sorwmisTables,
127  const int satnumIdx);
128  void ssfnTableCheck_(const Opm::SsfnTable& ssfnTables,
129  const int satnumIdx);
130  void miscTableCheck_(const Opm::MiscTable& miscTables,
131  const int miscnumIdx);
132  void msfnTableCheck_(const Opm::MsfnTable& msfnTables,
133  const int satnumIdx);
134  };
135 
136 } //namespace Opm
137 
138 #include <opm/core/props/satfunc/RelpermDiagnostics_impl.hpp>
139 
140 #endif // OPM_RELPERMDIAGNOSTICS_HEADER_INCLUDED
This class is intend to be a relpmer diganostics, to detect wrong input of relperm table and endpoint...
Definition: RelpermDiagnostics.hpp:51
void diagnosis(const EclipseState &eclState, const Deck &deck, const GridT &grid)
This function is used to diagnosis relperm in eclipse data file.