My Project
EclHysteresisConfig.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 */
27 #ifndef OPM_ECL_HYSTERESIS_CONFIG_HPP
28 #define OPM_ECL_HYSTERESIS_CONFIG_HPP
29 
30 #if HAVE_ECL_INPUT
31 #include <opm/input/eclipse/EclipseState/Runspec.hpp>
32 #endif
33 
34 namespace Opm {
41 {
42 public:
44  {
45  enableHysteresis_ = false;
46  pcHysteresisModel_ = -1;
47  krHysteresisModel_ = -1;
48  }
49 
53  void setEnableHysteresis(bool yesno)
54  { enableHysteresis_ = yesno; }
55 
59  bool enableHysteresis() const
60  { return enableHysteresis_; }
61 
68  void setPcHysteresisModel(int value)
69  { pcHysteresisModel_ = value; }
70 
77  int pcHysteresisModel() const
78  { return pcHysteresisModel_; }
79 
93  void setKrHysteresisModel(int value)
94  { krHysteresisModel_ = value; }
95 
103  int krHysteresisModel() const
104  { return krHysteresisModel_; }
105 
111  double modParamTrapped() const
112  { return modParamTrapped_; }
113 
119  double curvatureCapPrs() const
120  { return curvatureCapPrs_; }
121 
122 #if HAVE_ECL_INPUT
128  void initFromState(const Runspec& runspec)
129  {
130  enableHysteresis_ = false;
131 
132  enableHysteresis_ = runspec.hysterPar().active();
133 
134  if (!enableHysteresis_)
135  return;
136 
137  krHysteresisModel_ = runspec.hysterPar().krHysteresisModel();
138  pcHysteresisModel_ = runspec.hysterPar().pcHysteresisModel();
139  modParamTrapped_ = runspec.hysterPar().modParamTrapped();
140  curvatureCapPrs_ = runspec.hysterPar().curvatureCapPrs();
141  }
142 #endif
143 
144 private:
145  // enable hysteresis at all
146  bool enableHysteresis_;
147 
148  // the capillary pressure and the relperm hysteresis models to be used
149  int pcHysteresisModel_;
150  int krHysteresisModel_;
151  double modParamTrapped_;
152  double curvatureCapPrs_;
153 };
154 
155 } // namespace Opm
156 
157 #endif
Specifies the configuration used by the ECL kr/pC hysteresis code.
Definition: EclHysteresisConfig.hpp:41
int pcHysteresisModel() const
Return the type of the hysteresis model which is used for capillary pressure.
Definition: EclHysteresisConfig.hpp:77
void setPcHysteresisModel(int value)
Set the type of the hysteresis model which is used for capillary pressure.
Definition: EclHysteresisConfig.hpp:68
int krHysteresisModel() const
Return the type of the hysteresis model which is used for relative permeability.
Definition: EclHysteresisConfig.hpp:103
double curvatureCapPrs() const
Curvature parameter used for capillary pressure hysteresis.
Definition: EclHysteresisConfig.hpp:119
void setKrHysteresisModel(int value)
Set the type of the hysteresis model which is used for relative permeability.
Definition: EclHysteresisConfig.hpp:93
void setEnableHysteresis(bool yesno)
Specify whether hysteresis is enabled or not.
Definition: EclHysteresisConfig.hpp:53
bool enableHysteresis() const
Returns whether hysteresis is enabled.
Definition: EclHysteresisConfig.hpp:59
double modParamTrapped() const
Regularisation parameter used for Killough model.
Definition: EclHysteresisConfig.hpp:111