3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
porousmediumflow/2p2c/sequential/properties.hh
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 * See the file COPYING for full copying permissions. *
5 * *
6 * This program 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 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
24#ifndef DUMUX_2P2CPROPERTIES_HH
25#define DUMUX_2P2CPROPERTIES_HH
26
33
34namespace Dumux {
35
36//****** forward declarations ******//
37template<class TypeTag>
38class VariableClass;
39
40template<class TypeTag>
41class CellData2P2C;
42
43template <class TypeTag>
44struct SequentialTwoPTwoCIndices;
45
47// properties
49namespace Properties {
50
52// Type tags
55// Create new type tags
56namespace TTag {
57struct SequentialTwoPTwoC { using InheritsFrom = std::tuple<Transport, IMPET, Pressure>; };
58} // end namespace TTag
59
61// Property tags
63template<class TypeTag, class MyTypeTag>
65template<class TypeTag, class MyTypeTag>
68template<class TypeTag, class MyTypeTag>
70}}
71
72//DUMUX includes
75
76namespace Dumux {
77namespace Properties {
79// Properties
81
82template<class TypeTag>
83struct Indices<TypeTag, TTag::SequentialTwoPTwoC> { using type = SequentialTwoPTwoCIndices<TypeTag>; };
84
85template<class TypeTag>
86struct NumEq<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr int value = 3; };
87
88// set fluid/component information
89template<class TypeTag>
90struct NumPhases<TypeTag, TTag::SequentialTwoPTwoC>
91{
92 // the property is declared in dumux/porousmediumflow/sequential/properties.hh
93private:
95
96public:
97 static const int value = FluidSystem::numPhases;
98 static_assert(value == 2,
99 "Only fluid systems with 2 phases are supported by the 2p2c model!");
100};
101
102template<class TypeTag>
103struct NumComponents<TypeTag, TTag::SequentialTwoPTwoC>
104{
105private:
107
108public:
109 static const int value = FluidSystem::numComponents;
110 static_assert(value == 2,
111 "Only fluid systems with 2 components are supported by the 2p2c model!");
112};
113
115template<class TypeTag>
116struct PressureFormulation<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr int value = GetPropType<TypeTag, Properties::Indices>::pressureN; };
117
118template<class TypeTag>
119struct SaturationFormulation<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr int value = GetPropType<TypeTag, Properties::Indices>::saturationW; };
120
121template<class TypeTag>
122struct VelocityFormulation<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr int value = GetPropType<TypeTag, Properties::Indices>::velocityW; };
123
124template<class TypeTag>
125struct TransportSolutionType<TypeTag, TTag::SequentialTwoPTwoC>
126{
129 using type = Dune::BlockVector<Dune::BlockVector<Dune::FieldVector<Scalar,1> > >;
130
131};
132
133template<class TypeTag>
134struct EnableCompressibility<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr bool value = true; };
135template<class TypeTag>
136struct VisitFacesOnlyOnce<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr bool value = false; };
137template<class TypeTag>
138struct EnableCapillarity<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr bool value = false; };
139
140template<class TypeTag>
141struct BoundaryMobility<TypeTag, TTag::SequentialTwoPTwoC>
143
144template<class TypeTag>
145struct Variables<TypeTag, TTag::SequentialTwoPTwoC> { using type = VariableClass<TypeTag>; };
146template<class TypeTag>
147struct CellData<TypeTag, TTag::SequentialTwoPTwoC> { using type = CellData2P2C<TypeTag>; };
148template<class TypeTag>
150
151
153template<class TypeTag>
154struct SpatialParams<TypeTag, TTag::SequentialTwoPTwoC> { using type = SequentialFVSpatialParams<TypeTag>; };
156template<class TypeTag>
157struct RegulateBoundaryPermeability<TypeTag, TTag::SequentialTwoPTwoC> { static constexpr bool value = false; };
158}
159
168template <class TypeTag>
170{
171private:
173
174public:
175 // Component indices
176 static const int wPhaseIdx = FluidSystem::phase0Idx;
177 static const int nPhaseIdx = FluidSystem::phase1Idx;
178
179 // Component indices
180 static const int wCompIdx = wPhaseIdx;
181 static const int nCompIdx = nPhaseIdx;
182
183 // Ensure pressure formulation index coincides with FluidSystem
184 static const int pressureW = wPhaseIdx;
185 static const int pressureN = nPhaseIdx;
186
187 // Equation indices
188 static const int pressureEqIdx = 0;
189 static const int transportEqOffset = pressureEqIdx + 1;
192
195 {
198 };
199
200
201 // BoundaryCondition flags
202 static const int satDependent = 0;
203 static const int permDependent = 1;
204};
205
206// \}
207
208} // end namespace Dumux
209
210#endif
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
The base class for spatial parameters of problems using the fv method.
Base file for properties related to sequential IMPET algorithms.
Specifies the properties for immiscible 2p transport.
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
The type of the spatial parameters object.
Definition: common/properties.hh:150
The type of the fluid state to use.
Definition: common/properties.hh:154
Definition: common/properties.hh:241
a tag to mark properties as undefined
Definition: propertysystem.hh:35
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition: compositional.hh:47
The base class for spatial parameters of a multi-phase problem using the fv method.
Definition: sequentialfv.hh:40
The common indices for the isothermal two-phase model.
Definition: porousmediumflow/2p/sequential/indices.hh:33
The formulation of the saturation model.
Definition: porousmediumflow/2p/sequential/properties.hh:57
The type of velocity reconstructed for the transport model.
Definition: porousmediumflow/2p/sequential/properties.hh:59
Returns whether compressibility is allowed.
Definition: porousmediumflow/2p/sequential/properties.hh:61
Storage container for discretized data of the constitutive relations for one element.
Definition: 2p2c/sequential/celldata.hh:44
Base class holding the variables and discretized data for sequential models.
Definition: variableclass.hh:49
The common indices for the 2p2c model.
Definition: porousmediumflow/2p2c/sequential/properties.hh:170
static const int wCompIdx
Component index equals phase index.
Definition: porousmediumflow/2p2c/sequential/properties.hh:180
static const int contiWEqIdx
Index of the wetting component transport equation.
Definition: porousmediumflow/2p2c/sequential/properties.hh:190
static const int wPhaseIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:176
static const int nPhaseIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:177
static const int contiNEqIdx
Index of the nonwetting component transport equation.
Definition: porousmediumflow/2p2c/sequential/properties.hh:191
static const int satDependent
Definition: porousmediumflow/2p2c/sequential/properties.hh:202
static const int pressureN
Definition: porousmediumflow/2p2c/sequential/properties.hh:185
static const int pressureW
Definition: porousmediumflow/2p2c/sequential/properties.hh:184
static const int pressureEqIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:188
static const int transportEqOffset
Offset to access transport (mass conservation -) equations.
Definition: porousmediumflow/2p2c/sequential/properties.hh:189
static const int permDependent
Definition: porousmediumflow/2p2c/sequential/properties.hh:203
BoundaryFormulation
Type of value on the Boundary.
Definition: porousmediumflow/2p2c/sequential/properties.hh:195
@ concentration
Definition: porousmediumflow/2p2c/sequential/properties.hh:197
@ saturation
Definition: porousmediumflow/2p2c/sequential/properties.hh:196
static const int nCompIdx
Component index equals phase index.
Definition: porousmediumflow/2p2c/sequential/properties.hh:181
Definition: porousmediumflow/2p2c/sequential/properties.hh:57
std::tuple< Transport, IMPET, Pressure > InheritsFrom
Definition: porousmediumflow/2p2c/sequential/properties.hh:57
Returns whether capillarity is regarded.
Definition: porousmediumflow/2p2c/sequential/properties.hh:64
Definition: porousmediumflow/2p2c/sequential/properties.hh:66
A minimum permeability can be assigned via the runtime-Parameter SpatialParams.minBoundaryPermeabilit...
Definition: porousmediumflow/2p2c/sequential/properties.hh:69
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition: porousmediumflow/2p2c/sequential/properties.hh:127
Dune::BlockVector< Dune::BlockVector< Dune::FieldVector< Scalar, 1 > > > type
type for vector of vector (of scalars)
Definition: porousmediumflow/2p2c/sequential/properties.hh:129
Type of solution vector or pressure system Indicates if faces are only regarded from one side.
Definition: sequential/pressureproperties.hh:68
Definition: porousmediumflow/sequential/properties.hh:65
Number of equations in the system of PDEs.
Definition: porousmediumflow/sequential/properties.hh:82
Number of phases in the system.
Definition: porousmediumflow/sequential/properties.hh:84
Number of components in the system.
Definition: porousmediumflow/sequential/properties.hh:86
The type of the container of global variables.
Definition: porousmediumflow/sequential/properties.hh:88
Defines data object to be stored.
Definition: porousmediumflow/sequential/properties.hh:90
Definition: transportproperties.hh:53
Defines the properties required for (immiscible) two-phase sequential models.
Defines the indices required for the two-phase sequential model.
Storage container for discretized data of the constitutive relations for one element.
Base file for properties related to sequential IMPET algorithms.