Loading...
Searching...
No Matches
EclHysteresisConfig.hpp
Go to the documentation of this file.
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
Consult the COPYING file in the top-level source directory of this
module for the precise wording of the license and the list of
copyright holders.
*/
#ifndef OPM_ECL_HYSTERESIS_CONFIG_HPP
#define OPM_ECL_HYSTERESIS_CONFIG_HPP
namespace Opm {
#if HAVE_ECL_INPUT
class Runspec;
#endif
class EclHysteresisConfig
{
public:
void setEnableHysteresis(bool yesno)
{ enableHysteresis_ = yesno; }
bool enableHysteresis() const
{ return enableHysteresis_; }
void setPcHysteresisModel(int value)
{ pcHysteresisModel_ = value; }
int pcHysteresisModel() const
{ return pcHysteresisModel_; }
bool enablePCHysteresis() const
{ return enableHysteresis() && pcHysteresisModel_ >= 0; }
void setKrHysteresisModel(int value)
{ krHysteresisModel_ = value; }
bool enableWettingHysteresis() const
{ return enableHysteresis() && krHysteresisModel_ >= 4; }
bool enableNonWettingHysteresis() const
{ return enableHysteresis() && krHysteresisModel_ >= 0; }
int krHysteresisModel() const
{ return krHysteresisModel_; }
double modParamTrapped() const
{ return modParamTrapped_; }
double curvatureCapPrs() const
{ return curvatureCapPrs_; }
bool enableWagHysteresis() const
{ return enableWagHyst_; }
bool enablePcScalingHyst() const
{ return enablePcScalingHyst_; }
#if HAVE_ECL_INPUT
void initFromState(const Runspec& runspec);
#endif
private:
// enable hysteresis at all
bool enableHysteresis_{false};
// the capillary pressure and the relperm hysteresis models to be used
int pcHysteresisModel_{-1};
int krHysteresisModel_{-1};
double modParamTrapped_{};
double curvatureCapPrs_{};
// WAG hysteresis
bool enableWagHyst_{false};
// Enable bug fix for capillary pressure scaling
bool enablePcScalingHyst_{false};
};
} // namespace Opm
#endif
Opm::EclHysteresisConfig
Specifies the configuration used by the ECL kr/pC hysteresis code.
Definition EclHysteresisConfig.hpp:42
Opm::EclHysteresisConfig::pcHysteresisModel
int pcHysteresisModel() const
Return the type of the hysteresis model which is used for capillary pressure.
Definition EclHysteresisConfig.hpp:71
Opm::EclHysteresisConfig::setPcHysteresisModel
void setPcHysteresisModel(int value)
Set the type of the hysteresis model which is used for capillary pressure.
Definition EclHysteresisConfig.hpp:62
Opm::EclHysteresisConfig::krHysteresisModel
int krHysteresisModel() const
Return the type of the hysteresis model which is used for relative permeability.
Definition EclHysteresisConfig.hpp:106
Opm::EclHysteresisConfig::curvatureCapPrs
double curvatureCapPrs() const
Curvature parameter used for capillary pressure hysteresis.
Definition EclHysteresisConfig.hpp:122
Opm::EclHysteresisConfig::setKrHysteresisModel
void setKrHysteresisModel(int value)
Set the type of the hysteresis model which is used for relative permeability.
Definition EclHysteresisConfig.hpp:90
Opm::EclHysteresisConfig::enablePcScalingHyst
bool enablePcScalingHyst() const
Returns whether Pc scaling is enabled.
Definition EclHysteresisConfig.hpp:134
Opm::EclHysteresisConfig::enableWagHysteresis
bool enableWagHysteresis() const
Returns whether hysteresis is enabled.
Definition EclHysteresisConfig.hpp:128
Opm::EclHysteresisConfig::setEnableHysteresis
void setEnableHysteresis(bool yesno)
Specify whether hysteresis is enabled or not.
Definition EclHysteresisConfig.hpp:47
Opm::EclHysteresisConfig::enableHysteresis
bool enableHysteresis() const
Returns whether hysteresis is enabled.
Definition EclHysteresisConfig.hpp:53
Opm::EclHysteresisConfig::modParamTrapped
double modParamTrapped() const
Regularisation parameter used for Killough model.
Definition EclHysteresisConfig.hpp:114
Opm::Runspec
Definition Runspec.hpp:489
Opm
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30