opm-common
EclMaterialLawReadEffectiveParams.hpp
Go to the documentation of this file.
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
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 2 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  Consult the COPYING file in the top-level source directory of this
20  module for the precise wording of the license and the list of
21  copyright holders.
22 */
28 #ifndef OPM_ECL_MATERIAL_LAW_READ_EFFECTIVE_PARAMS_HPP
29 #define OPM_ECL_MATERIAL_LAW_READ_EFFECTIVE_PARAMS_HPP
30 
32 
33 #include <string>
34 #include <vector>
35 
36 namespace Opm {
37  class EclipseState;
38  class SgfnTable;
39  class SgofTable;
40  class SlgofTable;
41  class TableColumn;
42 }
43 
44 namespace Opm::EclMaterialLaw {
45 
46 template<class Traits> class Manager;
47 
48 
49 template<class Traits>
51 {
52  using Scalar = typename Traits::Scalar;
53 
54  using GasOilEffectiveParams =
55  typename TwoPhaseTypes<Traits>::GasOilEffectiveParams;
56 
57  using GasOilEffectiveParamVector =
58  typename TwoPhaseTypes<Traits>::GasOilEffectiveParamVector;
59 
60  using GasWaterEffectiveParams =
61  typename TwoPhaseTypes<Traits>::GasWaterEffectiveParams;
62 
63  using GasWaterEffectiveParamVector =
64  typename TwoPhaseTypes<Traits>::GasWaterEffectiveParamVector;
65 
66  using OilWaterEffectiveParams =
67  typename TwoPhaseTypes<Traits>::OilWaterEffectiveParams;
68 
69  using OilWaterEffectiveParamVector =
70  typename TwoPhaseTypes<Traits>::OilWaterEffectiveParamVector;
71 
72 public:
74  const EclipseState& eclState,
75  const Manager<Traits>& parent);
76 
77  void read();
78 
79 private:
80  std::vector<double>
81  normalizeKrValues_(const double tolcrit,
82  const TableColumn& krValues) const;
83 
84  void readGasOilParameters_(unsigned satRegionIdx);
85 
86  template <class TableType>
87  void readGasOilFamily2_(GasOilEffectiveParams& effParams,
88  const Scalar Swco,
89  const double tolcrit,
90  const TableType& sofTable,
91  const SgfnTable& sgfnTable,
92  const std::string& columnName);
93 
94  void readGasOilSgof_(GasOilEffectiveParams& effParams,
95  const Scalar Swco,
96  const double tolcrit,
97  const SgofTable& sgofTable);
98 
99  void readGasOilSlgof_(GasOilEffectiveParams& effParams,
100  const Scalar Swco,
101  const double tolcrit,
102  const SlgofTable& slgofTable);
103 
104  void readGasWaterParameters_(unsigned satRegionIdx);
105 
106  void readOilWaterParameters_(unsigned satRegionIdx);
107 
108  typename Manager<Traits>::Params& params_;
109  const EclipseState& eclState_;
110  const Manager<Traits>& parent_;
111 };
112 
113 } // namespace Opm::EclMaterialLaw
114 
115 #endif
Definition: SgofTable.hpp:27
Definition: SgfnTable.hpp:28
Definition: EclMaterialLawHystParams.cpp:28
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: EclipseState.hpp:66
Definition: TableColumn.hpp:32
Definition: SlgofTable.hpp:28
Provides an simple way to create and manage the material law objects for a complete ECL deck...
Definition: EclMaterialLawHystParams.hpp:44
Definition: EclMaterialLawReadEffectiveParams.hpp:50