3.1-git
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
55NEW_TYPE_TAG(SequentialTwoPTwoC, INHERITS_FROM(Pressure, Transport, IMPET));
56
58// Property tags
64}}
65
66//DUMUX includes
69
70namespace Dumux {
71namespace Properties {
73// Properties
75
77
78SET_INT_PROP(SequentialTwoPTwoC, NumEq, 3);
79
80// set fluid/component information
81template<class TypeTag>
82struct NumPhases<TypeTag, TTag::SequentialTwoPTwoC>
83{
84 // the property is declared in dumux/porousmediumflow/sequential/properties.hh
85private:
86 using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
87
88public:
89 static const int value = FluidSystem::numPhases;
90 static_assert(value == 2,
91 "Only fluid systems with 2 phases are supported by the 2p2c model!");
92};
93
94template<class TypeTag>
95struct NumComponents<TypeTag, TTag::SequentialTwoPTwoC>
96{
97private:
98 using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
99
100public:
101 static const int value = FluidSystem::numComponents;
102 static_assert(value == 2,
103 "Only fluid systems with 2 components are supported by the 2p2c model!");
104};
105
107SET_INT_PROP(SequentialTwoPTwoC,
109 GET_PROP_TYPE(TypeTag, Indices)::pressureN);
110
111SET_INT_PROP(SequentialTwoPTwoC,
113 GET_PROP_TYPE(TypeTag, Indices)::saturationW);
114
115SET_INT_PROP(SequentialTwoPTwoC,
117 GET_PROP_TYPE(TypeTag, Indices)::velocityW);
118
119template<class TypeTag>
120struct TransportSolutionType<TypeTag, TTag::SequentialTwoPTwoC>
121{
122 using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
124 using type = Dune::BlockVector<Dune::BlockVector<Dune::FieldVector<Scalar,1> > >;
125
126};
127
128SET_BOOL_PROP(SequentialTwoPTwoC, EnableCompressibility, true);
129SET_BOOL_PROP(SequentialTwoPTwoC, VisitFacesOnlyOnce, false);
130SET_BOOL_PROP(SequentialTwoPTwoC, EnableCapillarity, false);
131
132template<class TypeTag>
133struct BoundaryMobility<TypeTag, TTag::SequentialTwoPTwoC>
135
138SET_TYPE_PROP(SequentialTwoPTwoC, FluidState, CompositionalFluidState<typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, FluidSystem)>);
139
140
144SET_BOOL_PROP(SequentialTwoPTwoC, RegulateBoundaryPermeability, false);
145}
146
155template <class TypeTag>
157{
158private:
159 using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
160
161public:
162 // Component indices
163 static const int wPhaseIdx = FluidSystem::phase0Idx;
164 static const int nPhaseIdx = FluidSystem::phase1Idx;
165
166 // Component indices
167 static const int wCompIdx = wPhaseIdx;
168 static const int nCompIdx = nPhaseIdx;
169
170 // Ensure pressure formulation index coincides with FluidSystem
171 static const int pressureW = wPhaseIdx;
172 static const int pressureN = nPhaseIdx;
173
174 // Equation indices
175 static const int pressureEqIdx = 0;
176 static const int transportEqOffset = pressureEqIdx + 1;
179
182 {
185 };
186
187
188 // BoundaryCondition flags
189 static const int satDependent = 0;
190 static const int permDependent = 1;
191};
192
193// \}
194
195} // end namespace Dumux
196
197#endif
#define GET_PROP_TYPE(TypeTag, PropTagName)
Definition: propertysystemmacros.hh:283
#define NEW_TYPE_TAG(...)
Definition: propertysystemmacros.hh:130
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.
#define NEW_PROP_TAG(PTagName)
Define a property tag.
Definition: propertysystemmacros.hh:159
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
Property tag TransportSolutionType
Definition: transportproperties.hh:49
Property tag EnableCapillarity
Returns whether capillarity is regarded.
Definition: porousmediumflow/2p2c/sequential/properties.hh:60
Property tag BoundaryMobility
Definition: porousmediumflow/2p2c/sequential/properties.hh:61
Property tag Variables
The type of the container of global variables.
Definition: porousmediumflow/sequential/properties.hh:71
Property tag VisitFacesOnlyOnce
Type of solution vector or pressure system.
Definition: sequential/pressureproperties.hh:62
SET_INT_PROP(SequentialOneP, NumEq, 1)
Set number of equations to 1 for isothermal one-phase models.
Property tag CellData
Defines data object to be stored.
Definition: porousmediumflow/sequential/properties.hh:72
SET_TYPE_PROP(FVPressureOneP, Velocity, FVVelocity1P< TypeTag >)
Set velocity reconstruction implementation standard cell centered finite volume schemes as default.
Property tag EnableCompressibility
Returns whether compressibility is allowed.
Definition: porousmediumflow/2p/sequential/properties.hh:55
Property tag SaturationFormulation
The formulation of the saturation model.
Definition: porousmediumflow/2p/sequential/properties.hh:53
Type tag FVPressureOneP INHERITS_FROM(PressureOneP))
The type tag for the one-phase problems using a standard finite volume model.
Property tag NumComponents
Number of components in the system.
Definition: porousmediumflow/sequential/properties.hh:70
Property tag Indices
Definition: porousmediumflow/sequential/properties.hh:59
Property tag NumEq
Number of equations in the system of PDEs.
Definition: porousmediumflow/sequential/properties.hh:68
Property tag RegulateBoundaryPermeability
A minimum permeability can be assigned via the runtime-Parameter SpatialParams.minBoundaryPermeabilit...
Definition: porousmediumflow/2p2c/sequential/properties.hh:63
Property tag NumPhases
Number of phases in the system.
Definition: porousmediumflow/sequential/properties.hh:69
Property tag VelocityFormulation
The type of velocity reconstructed for the transport model.
Definition: porousmediumflow/2p/sequential/properties.hh:54
SET_BOOL_PROP(FVPressureOneP, VisitFacesOnlyOnce, true)
Allow assembling algorithm for the pressure matrix to assemble only from one side of a cell-cell inte...
Property to specify the type of scalar values.
Definition: common/properties.hh:53
The type of the spatial parameters object.
Definition: common/properties.hh:221
The type of the fluid system to use.
Definition: common/properties.hh:223
The type of the fluid state to use.
Definition: common/properties.hh:225
Definition: common/properties.hh:312
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:43
The common indices for the isothermal two-phase model.
Definition: porousmediumflow/2p/sequential/indices.hh:33
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:157
static const int wCompIdx
Component index equals phase index.
Definition: porousmediumflow/2p2c/sequential/properties.hh:167
static const int contiWEqIdx
Index of the wetting component transport equation.
Definition: porousmediumflow/2p2c/sequential/properties.hh:177
static const int wPhaseIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:163
static const int nPhaseIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:164
static const int contiNEqIdx
Index of the nonwetting component transport equation.
Definition: porousmediumflow/2p2c/sequential/properties.hh:178
static const int satDependent
Definition: porousmediumflow/2p2c/sequential/properties.hh:189
static const int pressureN
Definition: porousmediumflow/2p2c/sequential/properties.hh:172
static const int pressureW
Definition: porousmediumflow/2p2c/sequential/properties.hh:171
static const int pressureEqIdx
Definition: porousmediumflow/2p2c/sequential/properties.hh:175
static const int transportEqOffset
Offset to access transport (mass conservation -) equations.
Definition: porousmediumflow/2p2c/sequential/properties.hh:176
static const int permDependent
Definition: porousmediumflow/2p2c/sequential/properties.hh:190
BoundaryFormulation
Type of value on the Boundary.
Definition: porousmediumflow/2p2c/sequential/properties.hh:182
@ concentration
Definition: porousmediumflow/2p2c/sequential/properties.hh:184
@ saturation
Definition: porousmediumflow/2p2c/sequential/properties.hh:183
static const int nCompIdx
Component index equals phase index.
Definition: porousmediumflow/2p2c/sequential/properties.hh:168
typename GET_PROP_TYPE(TypeTag, Scalar) Scalar
Definition: porousmediumflow/2p2c/sequential/properties.hh:122
Dune::BlockVector< Dune::BlockVector< Dune::FieldVector< Scalar, 1 > > > type
type for vector of vector (of scalars)
Definition: porousmediumflow/2p2c/sequential/properties.hh:124
IMplicit Pressure Explicit Transport (IMPET) scheme for the solution of weakly coupled diffusion-tran...
Definition: impet.hh:49
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.