00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00030 #ifndef OPM_IMMISCIBLE_FLUID_STATE_HPP
00031 #define OPM_IMMISCIBLE_FLUID_STATE_HPP
00032
00033 #include "ModularFluidState.hpp"
00034
00035 #include <opm/common/Valgrind.hpp>
00036
00037 #include <algorithm>
00038
00039 #include <string.h>
00040
00041 namespace Opm {
00042
00048 template <class Scalar, class FluidSystem, bool storeEnthalpy=true>
00049 class ImmiscibleFluidState;
00050
00051
00052 template <class Scalar, class FluidSystem>
00053 class ImmiscibleFluidState<Scalar, FluidSystem, true>
00054 : public ModularFluidState<Scalar,
00055 FluidSystem::numPhases,
00056 FluidSystem::numComponents,
00057 FluidStateExplicitPressureModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00058 FluidStateEquilibriumTemperatureModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00059 FluidStateImmiscibleCompositionModule<Scalar, FluidSystem, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00060 FluidStateExplicitFugacityModule<Scalar, FluidSystem::numPhases, FluidSystem::numComponents, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00061 FluidStateExplicitSaturationModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00062 FluidStateExplicitDensityModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00063 FluidStateExplicitViscosityModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> >,
00064 FluidStateExplicitEnthalpyModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, true> > >
00065 {
00066 public:
00067 ImmiscibleFluidState()
00068 {}
00069 };
00070
00071
00072 template <class Scalar, class FluidSystem>
00073 class ImmiscibleFluidState<Scalar, FluidSystem, false>
00074 : public ModularFluidState<Scalar,
00075 FluidSystem::numPhases,
00076 FluidSystem::numComponents,
00077 FluidStateExplicitPressureModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00078 FluidStateEquilibriumTemperatureModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00079 FluidStateImmiscibleCompositionModule<Scalar, FluidSystem, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00080 FluidStateExplicitFugacityModule<Scalar, FluidSystem::numPhases, FluidSystem::numComponents, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00081 FluidStateExplicitSaturationModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00082 FluidStateExplicitDensityModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00083 FluidStateExplicitViscosityModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> >,
00084 FluidStateNullEnthalpyModule<Scalar, FluidSystem::numPhases, ImmiscibleFluidState<Scalar, FluidSystem, false> > >
00085 {
00086 public:
00087 ImmiscibleFluidState()
00088 {}
00089 };
00090 }
00091
00092 #endif