opm-common
Loading...
Searching...
No Matches
CompositionalFluidState.hpp
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 2 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18
19 Consult the COPYING file in the top-level source directory of this
20 module for the precise wording of the license and the list of
21 copyright holders.
22*/
30#ifndef OPM_COMPOSITIONAL_FLUID_STATE_HPP
31#define OPM_COMPOSITIONAL_FLUID_STATE_HPP
32
33
34#include "ModularFluidState.hpp"
35
36#include <opm/common/utility/gpuDecorators.hpp>
38#include <algorithm>
39
40namespace Opm {
41
47template <class Scalar, class FluidSystem, bool storeEnthalpy=true>
49
50// specialization for the enthalpy enabled case
51template <class Scalar, class FluidSystem>
52class CompositionalFluidState<Scalar, FluidSystem, true>
53 : public ModularFluidState<Scalar,
54 FluidSystem::numPhases,
55 FluidSystem::numComponents,
56 FluidStateExplicitPressureModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> >,
57 FluidStateEquilibriumTemperatureModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> >,
58 FluidStateExplicitCompositionModule<Scalar, FluidSystem, CompositionalFluidState<Scalar, FluidSystem, true> >,
59 FluidStateExplicitFugacityModule<Scalar, FluidSystem::numPhases, FluidSystem::numComponents, CompositionalFluidState<Scalar, FluidSystem, true> >,
60 FluidStateExplicitSaturationModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> >,
61 FluidStateExplicitDensityModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> >,
62 FluidStateExplicitViscosityModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> >,
63 FluidStateExplicitEnthalpyModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, true> > >
64{
65public:
71 OPM_HOST_DEVICE const FluidSystem& fluidSystem() const
72 {
73 static FluidSystem instance;
74 return instance;
75 }
76};
77
78// specialization for the enthalpy disabled case
79template <class Scalar, class FluidSystem>
80class CompositionalFluidState<Scalar, FluidSystem, false>
81 : public ModularFluidState<Scalar,
82 FluidSystem::numPhases,
83 FluidSystem::numComponents,
84 FluidStateExplicitPressureModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> >,
85 FluidStateEquilibriumTemperatureModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> >,
86 FluidStateExplicitCompositionModule<Scalar, FluidSystem, CompositionalFluidState<Scalar, FluidSystem, false> >,
87 FluidStateExplicitFugacityModule<Scalar, FluidSystem::numPhases, FluidSystem::numComponents, CompositionalFluidState<Scalar, FluidSystem, false> >,
88 FluidStateExplicitSaturationModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> >,
89 FluidStateExplicitDensityModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> >,
90 FluidStateExplicitViscosityModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> >,
91 FluidStateNullEnthalpyModule<Scalar, FluidSystem::numPhases, CompositionalFluidState<Scalar, FluidSystem, false> > >
92{
93public:
99 OPM_HOST_DEVICE const FluidSystem& fluidSystem() const
100 {
101 static FluidSystem instance;
102 return instance;
103
104 }
105};
106
107} // namespace Opm
108
109#endif
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Some templates to wrap the valgrind client request macros.
OPM_HOST_DEVICE const FluidSystem & fluidSystem() const
Return the fluid system used by this fluid state.
Definition CompositionalFluidState.hpp:99
OPM_HOST_DEVICE const FluidSystem & fluidSystem() const
Return the fluid system used by this fluid state.
Definition CompositionalFluidState.hpp:71
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition CompositionalFluidState.hpp:48
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition ModularFluidState.hpp:72
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30