2018-04-17 03:01:02 -05:00
|
|
|
/*
|
2019-04-02 11:24:08 -05:00
|
|
|
Copyright 2019 Equinor ASA.
|
2018-04-17 03:01:02 -05:00
|
|
|
Copyright 2016, 2017 Statoil ASA.
|
|
|
|
|
|
|
|
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 3 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/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef OPM_LOGIHEAD_HEADER_INCLUDED
|
|
|
|
#define OPM_LOGIHEAD_HEADER_INCLUDED
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
namespace Opm { namespace RestartIO {
|
|
|
|
|
|
|
|
class LogiHEAD
|
|
|
|
{
|
|
|
|
public:
|
2019-04-02 11:24:08 -05:00
|
|
|
/// Key characteristics of simulation run's PVT model.
|
|
|
|
struct PVTModel
|
|
|
|
{
|
|
|
|
/// Whether or not simulation run uses a live oil model (with
|
|
|
|
/// dissolved gas).
|
|
|
|
bool isLiveOil { false };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses a wet gas model (with
|
|
|
|
/// vaporised oil).
|
|
|
|
bool isWetGas { false };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses a constant
|
|
|
|
/// compressibility oil model (keyword PVCDO).
|
|
|
|
bool constComprOil { false };
|
|
|
|
};
|
|
|
|
|
|
|
|
/// Key characteristics of simulation model's saturation functions.
|
|
|
|
struct SatfuncFlags
|
|
|
|
{
|
|
|
|
/// Whether or not simulation run uses directionally dependent
|
|
|
|
/// relative permeability.
|
|
|
|
bool useDirectionalRelPerm { false };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses reversible relative
|
|
|
|
/// permeability functions.
|
|
|
|
bool useReversibleRelPerm { true };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses end-point scaling.
|
|
|
|
bool useEndScale { false };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses directionally dependent
|
|
|
|
/// end-point scaling.
|
|
|
|
bool useDirectionalEPS { false };
|
|
|
|
|
|
|
|
/// Whether or not simulation run uses reversible end-point
|
|
|
|
/// scaling.
|
|
|
|
bool useReversibleEPS { true };
|
|
|
|
|
|
|
|
/// Whether or not simulation run activates the alternative
|
|
|
|
/// (three-point) end-point scaling feature.
|
|
|
|
bool useAlternateEPS { false };
|
|
|
|
};
|
|
|
|
|
2018-04-17 03:01:02 -05:00
|
|
|
LogiHEAD();
|
|
|
|
~LogiHEAD() = default;
|
|
|
|
|
|
|
|
LogiHEAD(const LogiHEAD& rhs) = default;
|
|
|
|
LogiHEAD(LogiHEAD&& rhs) = default;
|
|
|
|
|
|
|
|
LogiHEAD& operator=(const LogiHEAD& rhs) = default;
|
|
|
|
LogiHEAD& operator=(LogiHEAD&& rhs) = default;
|
|
|
|
|
|
|
|
LogiHEAD& variousParam(const bool e300_radial,
|
|
|
|
const bool e100_radial,
|
2019-01-17 10:41:41 -06:00
|
|
|
const int nswlmx,
|
|
|
|
const bool enableHyster
|
|
|
|
);
|
2018-04-17 03:01:02 -05:00
|
|
|
|
2019-04-02 11:24:08 -05:00
|
|
|
/// Assign PVT model characteristics.
|
|
|
|
///
|
|
|
|
/// \param[in] pvt Current run's PVT model characteristics.
|
|
|
|
///
|
|
|
|
/// \return \code *this \endcode.
|
|
|
|
LogiHEAD& pvtModel(const PVTModel& pvt);
|
|
|
|
|
|
|
|
/// Assign saturation function characteristics.
|
|
|
|
///
|
|
|
|
/// \param[in] satfunc Current run's saturation function
|
|
|
|
/// characteristics.
|
|
|
|
///
|
|
|
|
/// \return \code *this \endcode.
|
|
|
|
LogiHEAD& saturationFunction(const SatfuncFlags& satfunc);
|
|
|
|
|
2018-04-17 03:01:02 -05:00
|
|
|
const std::vector<bool>& data() const
|
|
|
|
{
|
|
|
|
return this->data_;
|
|
|
|
}
|
|
|
|
|
2021-01-18 09:41:18 -06:00
|
|
|
/// Logical switch to indicate that the network option is used
|
|
|
|
///
|
|
|
|
LogiHEAD& network(const int maxNoNodes);
|
2018-04-17 03:01:02 -05:00
|
|
|
private:
|
|
|
|
std::vector<bool> data_;
|
|
|
|
};
|
|
|
|
|
|
|
|
}} // Opm::RestartIO
|
|
|
|
|
|
|
|
#endif // OPM_LOGIHEAD_HEADER_INCLUDED
|