27 #ifndef OPM_ECL_MATERIAL_LAW_TYPES_HPP 28 #define OPM_ECL_MATERIAL_LAW_TYPES_HPP 36 #include <type_traits> 46 template <
class Traits>
51 Traits::nonWettingPhaseIdx,
54 Traits::wettingPhaseIdx,
55 Traits::nonWettingPhaseIdx>;
57 Traits::wettingPhaseIdx,
65 using GasOilEffectiveParams =
typename GasOilEffectiveLaw::Params;
66 using OilWaterEffectiveParams =
typename OilWaterEffectiveLaw::Params;
67 using GasWaterEffectiveParams =
typename GasWaterEffectiveLaw::Params;
69 template <
bool enableEPS,
typename BaseLaw>
70 using SelectEPSLaw = std::conditional_t<enableEPS, EclEpsTwoPhaseLaw<BaseLaw>, BaseLaw>;
73 using GasOilEpsLaw = SelectEPSLaw<Traits::enableEndpointScaling, GasOilEffectiveLaw>;
74 using OilWaterEpsLaw = SelectEPSLaw<Traits::enableEndpointScaling, OilWaterEffectiveLaw>;
75 using GasWaterEpsLaw = SelectEPSLaw<Traits::enableEndpointScaling, GasWaterEffectiveLaw>;
76 using GasOilEpsParams =
typename GasOilEpsLaw::Params;
77 using OilWaterEpsParams =
typename OilWaterEpsLaw::Params;
78 using GasWaterEpsParams =
typename GasWaterEpsLaw::Params;
80 template <
bool enableHyst,
typename BaseLaw>
81 using SelectHystLaw = std::conditional_t<enableHyst, EclHysteresisTwoPhaseLaw<BaseLaw>, BaseLaw>;
84 using GasOilLaw = SelectHystLaw<Traits::enableHysteresis, GasOilEpsLaw>;
85 using OilWaterLaw = SelectHystLaw<Traits::enableHysteresis, OilWaterEpsLaw>;
86 using GasWaterLaw = SelectHystLaw<Traits::enableHysteresis, GasWaterEpsLaw>;
88 using GasOilHystParams =
typename GasOilLaw::Params;
89 using OilWaterHystParams =
typename OilWaterLaw::Params;
90 using GasWaterHystParams =
typename GasWaterLaw::Params;
92 using GasOilEffectiveParamVector = std::vector<std::shared_ptr<GasOilEffectiveParams>>;
93 using OilWaterEffectiveParamVector = std::vector<std::shared_ptr<OilWaterEffectiveParams>>;
94 using GasWaterEffectiveParamVector = std::vector<std::shared_ptr<GasWaterEffectiveParams>>;
This material law implements the hysteresis model of the ECL file format.
Definition: EclMaterialLawHystParams.cpp:28
This file contains helper classes for the material laws.
Helper class defining various two-phase types used in three-phase material laws.
Definition: EclMaterialLawTwoPhaseTypes.hpp:47
This material law takes a material law defined for unscaled saturation and converts it to a material ...
Implements a multiplexer class that provides LET curves and piecewise linear saturation functions...
Implements a multiplexer class that provides LET curves and piecewise linear saturation functions...
Definition: SatCurveMultiplexer.hpp:51
A generic traits class for two-phase material laws.
Definition: MaterialTraits.hpp:60