opm-simulators
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 #include <opm/material/fluidmatrixinteractions/EclEpsScalingPoints.hpp>
27 
28 namespace 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
void diagnosis(const EclipseState &eclState, const LevelCartesianIndexMapper &levelCartesianIndexMapper)
This function is used to diagnosis relperm in eclipse data file.
Definition: RelpermDiagnostics.cpp:830
Definition: EclGenericWriter.hpp:50
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.hh:45
This class is intend to be a relperm diagnostics, to detect wrong input of relperm table and endpoint...
Definition: RelpermDiagnostics.hpp:50