00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #ifndef OPM_SIMPLE_MODULAR_FLUID_STATE_HPP
00028 #define OPM_SIMPLE_MODULAR_FLUID_STATE_HPP
00029
00030 #include "FluidStatePressureModules.hpp"
00031 #include "FluidStateTemperatureModules.hpp"
00032 #include "FluidStateCompositionModules.hpp"
00033 #include "FluidStateFugacityModules.hpp"
00034 #include "FluidStateSaturationModules.hpp"
00035 #include "FluidStateDensityModules.hpp"
00036 #include "FluidStateViscosityModules.hpp"
00037 #include "FluidStateEnthalpyModules.hpp"
00038 #include "ModularFluidState.hpp"
00039
00040 #include <type_traits>
00041
00042 namespace Opm {
00043
00044 #define OPM_SMFS SimpleModularFluidState<ScalarT, \
00045 numPhasesV, \
00046 numComponentsV, \
00047 FluidSystem, \
00048 storePressure, \
00049 storeTemperature, \
00050 storeComposition, \
00051 storeFugacity, \
00052 storeSaturation, \
00053 storeDensity, \
00054 storeViscosity, \
00055 storeEnthalpy>
00056
00065 template <class ScalarT,
00066 unsigned numPhasesV,
00067 unsigned numComponentsV,
00068 class FluidSystem,
00069 bool storePressure,
00070 bool storeTemperature,
00071 bool storeComposition,
00072 bool storeFugacity,
00073 bool storeSaturation,
00074 bool storeDensity,
00075 bool storeViscosity,
00076 bool storeEnthalpy>
00077 class SimpleModularFluidState
00078 : public ModularFluidState<ScalarT, numPhasesV, numComponentsV,
00079 typename std::conditional<storePressure,
00080 FluidStateExplicitPressureModule<ScalarT, numPhasesV, OPM_SMFS>,
00081 FluidStateNullPressureModule<ScalarT> >::type,
00082 typename std::conditional<storeTemperature,
00083 FluidStateExplicitTemperatureModule<ScalarT, numPhasesV, OPM_SMFS>,
00084 FluidStateNullTemperatureModule<ScalarT> >::type,
00085 typename std::conditional<storeComposition,
00086 FluidStateExplicitCompositionModule<ScalarT, FluidSystem, OPM_SMFS>,
00087 FluidStateNullCompositionModule<ScalarT> >::type,
00088 typename std::conditional<storeFugacity,
00089 FluidStateExplicitFugacityModule<ScalarT, numPhasesV, numComponentsV, OPM_SMFS>,
00090 FluidStateNullFugacityModule<ScalarT> >::type,
00091 typename std::conditional<storeSaturation,
00092 FluidStateExplicitSaturationModule<ScalarT, numPhasesV, OPM_SMFS>,
00093 FluidStateNullSaturationModule<ScalarT> >::type,
00094 typename std::conditional<storeDensity,
00095 FluidStateExplicitDensityModule<ScalarT, numPhasesV, OPM_SMFS>,
00096 FluidStateNullDensityModule<ScalarT, numPhasesV, OPM_SMFS> >::type,
00097 typename std::conditional<storeViscosity,
00098 FluidStateExplicitViscosityModule<ScalarT, numPhasesV, OPM_SMFS>,
00099 FluidStateNullViscosityModule<ScalarT, numPhasesV, OPM_SMFS> >::type,
00100 typename std::conditional<storeEnthalpy,
00101 FluidStateExplicitEnthalpyModule<ScalarT, numPhasesV, OPM_SMFS>,
00102 FluidStateNullEnthalpyModule<ScalarT, numPhasesV, OPM_SMFS> >::type
00103 >
00104 {};
00105
00106
00107 #undef OPM_SMFS
00108
00109 }
00110
00111 #endif