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
Specifies the properties for immiscible 2p transport.
Base file for properties related to sequential IMPET algorithms.
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.
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.
Base file for properties related to sequential IMPET algorithms.
Storage container for discretized data of the constitutive relations for one element.