27#ifndef OPM_MATERIAL_FLUIDSYSTEMS_BLACKOILFUNCTIONS_HEADER_INCLUDED
28#define OPM_MATERIAL_FLUIDSYSTEMS_BLACKOILFUNCTIONS_HEADER_INCLUDED
35#include <opm/common/TimingMacros.hpp>
53namespace Opm::BlackOil
62template <class FluidSystem, class FluidState, class LhsEval>
64getRs_(typename std::enable_if<!HasMember_Rs<FluidState>::value, const FluidState&>::type fluidState,
67 const auto& XoG = decay<LhsEval>(fluidState.massFraction(FluidSystem::oilPhaseIdx, FluidSystem::gasCompIdx));
68 return FluidSystem::convertXoGToRs(XoG, regionIdx);
71template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
73getRs_(
typename std::enable_if<HasMember_Rs<FluidState>::value,
const FluidState&>::type fluidState,
unsigned)
74 ->
decltype(decay<LhsEval>(fluidState.Rs()))
76 return decay<LhsEval>(fluidState.Rs());
79template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
81getRv_(
typename std::enable_if<!HasMember_Rv<FluidState>::value,
const FluidState&>::type fluidState,
84 const auto& XgO = decay<LhsEval>(fluidState.massFraction(FluidSystem::gasPhaseIdx, FluidSystem::oilCompIdx));
85 return FluidSystem::convertXgOToRv(XgO, regionIdx);
88template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
90getRv_(
typename std::enable_if<HasMember_Rv<FluidState>::value,
const FluidState&>::type fluidState,
unsigned)
91 ->
decltype(decay<LhsEval>(fluidState.Rv()))
93 return decay<LhsEval>(fluidState.Rv());
96template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
98getRvw_(
typename std::enable_if<!HasMember_Rvw<FluidState>::value,
const FluidState&>::type fluidState,
101 const auto& XgW = decay<LhsEval>(fluidState.massFraction(FluidSystem::gasPhaseIdx, FluidSystem::waterCompIdx));
102 return FluidSystem::convertXgWToRvw(XgW, regionIdx);
105template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
107getRvw_(
typename std::enable_if<HasMember_Rvw<FluidState>::value,
const FluidState&>::type fluidState,
unsigned)
108 ->
decltype(decay<LhsEval>(fluidState.Rvw()))
110 return decay<LhsEval>(fluidState.Rvw());
113template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
115getRsw_(
typename std::enable_if<!HasMember_Rsw<FluidState>::value,
const FluidState&>::type fluidState,
118 const auto& XwG = decay<LhsEval>(fluidState.massFraction(FluidSystem::waterPhaseIdx, FluidSystem::gasCompIdx));
119 return FluidSystem::convertXwGToRsw(XwG, regionIdx);
122template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
124getRsw_(
typename std::enable_if<HasMember_Rsw<FluidState>::value,
const FluidState&>::type fluidState,
unsigned)
125 ->
decltype(decay<LhsEval>(fluidState.Rsw()))
127 return decay<LhsEval>(fluidState.Rsw());
130template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
132getSaltConcentration_(
typename std::enable_if<!HasMember_saltConcentration<FluidState>::value,
const FluidState&>::type,
138template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
140getSaltConcentration_(
141 typename std::enable_if<HasMember_saltConcentration<FluidState>::value,
const FluidState&>::type fluidState,
142 unsigned) ->
decltype(decay<LhsEval>(fluidState.saltConcentration()))
144 return decay<LhsEval>(fluidState.saltConcentration());
147template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
149getSaltSaturation_(
typename std::enable_if<!HasMember_saltSaturation<FluidState>::value,
const FluidState&>::type,
155template <
class Flu
idSystem,
class Flu
idState,
class LhsEval>
158 typename std::enable_if<HasMember_saltSaturation<FluidState>::value,
const FluidState&>::type fluidState,
unsigned)
159 ->
decltype(decay<LhsEval>(fluidState.saltSaturation()))
161 return decay<LhsEval>(fluidState.saltSaturation());
The base class for all fluid systems.
This class represents the Pressure-Volume-Temperature relations of the gas phase in the black-oil mod...
This macro generates a class HasMember_${MEMBER_NAME} which can be used for template specialization.
#define OPM_GENERATE_HAS_MEMBER(MEMBER_NAME,...)
This macro generates a class HasMember_${MEMBER_NAME} which can be used for template specialization.
Definition HasMemberGeneratorMacros.hpp:49
A parameter cache which does nothing.
This class represents the Pressure-Volume-Temperature relations of the oil phase in the black-oil mod...
Some templates to wrap the valgrind client request macros.
This class represents the Pressure-Volume-Temperature relations of the water phase in the black-oil m...