27 #ifndef OPM_ECL_TWO_PHASE_MATERIAL_PARAMS_HPP 28 #define OPM_ECL_TWO_PHASE_MATERIAL_PARAMS_HPP 32 #include <opm/common/utility/gpuDecorators.hpp> 38 enum class EclTwoPhaseApproach { GasOil, OilWater, GasWater };
53 template <
class Traits,
55 class OilWaterParamsT,
56 class GasWaterParamsT,
57 template <
class>
class StoragePolicy = std::shared_ptr>
60 using Scalar =
typename Traits::Scalar;
61 enum { numPhases = 3 };
66 using GasOilParams = GasOilParamsT;
67 using OilWaterParams = OilWaterParamsT;
68 using GasWaterParams = GasWaterParamsT;
70 using GasOilParamsStorage = StoragePolicy<GasOilParams>;
71 using OilWaterParamsStorage = StoragePolicy<OilWaterParams>;
72 using GasWaterParamsStorage = StoragePolicy<GasWaterParams>;
79 OPM_HOST_DEVICE
void setApproach(EclTwoPhaseApproach newApproach)
81 approach_ = newApproach;
84 OPM_HOST_DEVICE EclTwoPhaseApproach approach()
const 94 EnsureFinalized::check();
95 return *gasOilParams_;
103 EnsureFinalized::check();
104 return *gasOilParams_;
120 EnsureFinalized::check();
121 return *oilWaterParams_;
129 EnsureFinalized::check();
130 return *oilWaterParams_;
138 oilWaterParams_ = val;
146 EnsureFinalized::check();
147 return *gasWaterParams_;
155 EnsureFinalized::check();
156 return *gasWaterParams_;
164 gasWaterParams_ = val;
167 template <
class Serializer>
172 serializer(*gasOilParams_);
173 serializer(*oilWaterParams_);
174 serializer(*gasWaterParams_);
182 EclTwoPhaseApproach approach_ {EclTwoPhaseApproach::GasOil};
184 GasOilParamsStorage gasOilParams_ {};
185 OilWaterParamsStorage oilWaterParams_ {};
186 GasWaterParamsStorage gasWaterParams_ {};
OPM_HOST_DEVICE OilWaterParams & oilWaterParams()
The parameter object for the oil-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:127
OPM_HOST_DEVICE void setGasOilParams(GasOilParamsStorage val)
Set the parameter object for the gas-oil twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:110
OPM_HOST_DEVICE const GasOilParams & gasOilParams() const
The parameter object for the gas-oil twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:92
OPM_HOST_DEVICE EclTwoPhaseMaterialParams()=default
The default constructor.
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
OPM_HOST_DEVICE void setGasWaterParams(GasWaterParamsStorage val)
Set the parameter object for the gas-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:162
Default implementation for asserting finalization of parameter objects.
OPM_HOST_DEVICE void setOilWaterParams(OilWaterParamsStorage val)
Set the parameter object for the oil-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:136
OPM_HOST_DEVICE const GasWaterParams & gasWaterParams() const
The parameter object for the gas-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:144
OPM_HOST_DEVICE GasWaterParams & gasWaterParams()
The parameter object for the gas-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:153
OPM_HOST_DEVICE void finalize()
Mark the object as finalized.
Definition: EnsureFinalized.hpp:82
OPM_HOST_DEVICE const OilWaterParams & oilWaterParams() const
The parameter object for the oil-water twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:118
Implementation for the parameters required by the material law for two-phase simulations.
Definition: EclTwoPhaseMaterialParams.hpp:58
Default implementation for asserting finalization of parameter objects.
Definition: EnsureFinalized.hpp:48
OPM_HOST_DEVICE GasOilParams & gasOilParams()
The parameter object for the gas-oil twophase law.
Definition: EclTwoPhaseMaterialParams.hpp:101
Class for (de-)serializing.
Definition: Serializer.hpp:95