3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
porousmediumflow/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 *****************************************************************************/
19#ifndef DUMUX_SEQUENTIAL_PROPERTIES_HH
20#define DUMUX_SEQUENTIAL_PROPERTIES_HH
21
30
31
40namespace Dumux
41{
42namespace Properties
43{
44
46// Type tags
48
50// Create new type tags
51namespace TTag {
52struct SequentialModel { using InheritsFrom = std::tuple<GridAdapt, GridProperties, ModelProperties>; };
53} // end namespace TTag
54
56// Property tags
58
62template<class TypeTag, class MyTypeTag>
64template<class TypeTag, class MyTypeTag>
65struct Indices { using type = UndefinedProperty; };
66template<class TypeTag, class MyTypeTag>
68
69// Some properties that have been removed from numeric model
70template<class TypeTag, class MyTypeTag>
71struct Model { using type = UndefinedProperty; };
72template<class TypeTag, class MyTypeTag>
74
75template<class TypeTag, class MyTypeTag>
77template<class TypeTag, class MyTypeTag>
79template<class TypeTag, class MyTypeTag>
80struct Velocity { using type = UndefinedProperty; };
81template<class TypeTag, class MyTypeTag>
82struct NumEq { using type = UndefinedProperty; };
83template<class TypeTag, class MyTypeTag>
84struct NumPhases { using type = UndefinedProperty; };
85template<class TypeTag, class MyTypeTag>
87template<class TypeTag, class MyTypeTag>
88struct Variables { using type = UndefinedProperty; };
89template<class TypeTag, class MyTypeTag>
90struct CellData { using type = UndefinedProperty; };
91template<class TypeTag, class MyTypeTag>
93template<class TypeTag, class MyTypeTag>
95}
96}
97
98#include <dune/grid/common/mcmgmapper.hh>
99#include <dune/istl/bvector.hh>
100
105
106namespace Dumux
107{
108
109template<class TypeTag>
110class VariableClass;
111
112namespace Properties
113{
114
116// Properties
118
120template<class TypeTag>
122
125template<class TypeTag>
126struct ModelTraits<TypeTag, TTag::SequentialModel>
127{
128private:
129 struct DummyTraits
130 {
132 static constexpr int numEq() { return getPropValue<TypeTag, Properties::NumEq>(); }
133 };
134public:
135 using type = DummyTraits;
136};
137
139template<class TypeTag>
140struct MaxIntersections<TypeTag, TTag::SequentialModel>
141{
142private:
144public:
145 static constexpr int value = 2*GridView::dimension;
146};
147
149template<class TypeTag>
150struct GridGeometry<TypeTag, TTag::SequentialModel>
151{
159public:
161};
162
164template<class TypeTag>
165struct SolutionVector<TypeTag, TTag::SequentialModel>
166{
167public:
169};
170
176template<class TypeTag>
177struct SolutionTypes<TypeTag, TTag::SequentialModel>
178{
182
183 enum
184 {
185 dim = GridView::dimension,
190 };
191
192public:
196 using VertexMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
197
201 using ElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
202
208 using PrimaryVariables = Dune::FieldVector<Scalar, numEq>;
210 using ScalarSolution = Dune::BlockVector<Dune::FieldVector<Scalar, 1> >;
212 using ComponentProperty = Dune::FieldVector<Dune::BlockVector<Dune::FieldVector<Scalar,1> >, numComponents>;
214 using PhaseProperty = Dune::FieldVector<Dune::BlockVector<Dune::FieldVector<Scalar,1> >, numPhases>;
216 using FluidProperty = Dune::FieldVector<Dune::BlockVector<Dune::FieldVector<Scalar,1> >, numPhases>;
218 using PhasePropertyElemFace = Dune::BlockVector<Dune::FieldVector<Dune::FieldVector<Scalar, numPhases>, maxIntersections> >;
220 using DimVecElemFace = Dune::BlockVector<Dune::FieldVector<Dune::FieldVector<Scalar, dim>, maxIntersections> >;
221};
222
223template<class TypeTag>
224struct Variables<TypeTag, TTag::SequentialModel> { using type = VariableClass<TypeTag>; };
225
226template<class TypeTag>
227struct PrimaryVariables<TypeTag, TTag::SequentialModel> { using type = typename GetProp<TypeTag, SolutionTypes>::PrimaryVariables; };
228
230template<class TypeTag>
231struct TimeManager<TypeTag, TTag::SequentialModel> { using type = Dumux::TimeManager<TypeTag>; };
232
236template<class TypeTag>
237struct SequentialBoundaryTypes<TypeTag, TTag::SequentialModel>
238{ private:
240public:
242};
243
245template<class TypeTag>
246struct ModelDefaultParameters<TypeTag, TTag::SequentialModel>
247{
248 static void defaultParams(Dune::ParameterTree& params, const std::string& group = "")
249 {
250 params["GridAdapt.CoarsenTolerance"] = "0.001";
251 params["GridAdapt.EnableInitializationIndicator"] = "false";
252 params["GridAdapt.EnableMultiPointFluxApproximation"] = "true";
253 params["GridAdapt.MaxLevel"] = "1";
254 params["GridAdapt.MaxInteractionVolumes"] = "4";
255 params["GridAdapt.MinLevel"] = "0";
256 params["GridAdapt.RefineAtDirichletBC"] = "false";
257 params["GridAdapt.RefineAtFluxBC"] = "false";
258 params["GridAdapt.RefineAtSource"] = "false";
259 params["GridAdapt.RefineTolerance"] = "0.05";
260
261 params["Impet.CFLFactor"] = "1.0";
262 params["Impet.EnableVolumeIntegral"] = "true";
263 params["Impet.ErrorTermFactor"] = "0.5";
264 params["Impet.ErrorTermLowerBound"] = "0.1";
265 params["Impet.ErrorTermUpperBound"] = "0.9";
266 params["Impet.PorosityThreshold"] = "1e-6";
267 params["Impet.SubCFLFactor"] = "1.0";
268 params["Impet.SwitchNormals"] = "false";
269
270 params["MPFA.CalcVelocityInTransport"] = "false";
271
272 params["TimeManager.SubTimestepVerbosity"] = "0";
273
274 params["Vtk.OutputLevel"] = "0";
275 }
276};
277
278}
279}
280
281#endif
Defines a type tags and some fundamental grid-related properties.
Definition of boundary condition types, extend if necessary.
Defines the default element and vertex mapper types.
Manages the handling of time dependent problems.
The available discretization methods in Dumux.
Class defining a start indicator for grid adaption.
Defines a type tag and some fundamental properties for linear solvers.
DiscretizationMethod
The available discretization methods in Dumux.
Definition method.hh:37
@ cctpfa
Definition method.hh:38
Definition adapt.hh:29
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:154
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:150
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type GetProp
get the type of a property
Definition propertysystem.hh:141
Definition common/properties.hh:37
Type tag for numeric models.
Definition grid.hh:36
Definition defaultmappertraits.hh:35
Property which defines the group that is queried for parameters by default.
Definition common/properties.hh:45
A vector of primary variables.
Definition common/properties.hh:49
Traits class encapsulating model specifications.
Definition common/properties.hh:53
Type of the global jacobian matrix.
Definition common/properties.hh:67
Vector containing all primary variable vector of the grid.
Definition common/properties.hh:69
Definition common/properties.hh:98
Definition common/properties.hh:289
a tag to mark properties as undefined
Definition propertysystem.hh:35
Manages the handling of time dependent problems.
Definition timemanager.hh:62
Base class holding the variables and discretized data for sequential models.
Definition variableclass.hh:49
Class to specify the type of a boundary.
Definition porousmediumflow/sequential/boundarytypes.hh:40
Definition porousmediumflow/sequential/properties.hh:52
std::tuple< GridAdapt, GridProperties, ModelProperties > InheritsFrom
Definition porousmediumflow/sequential/properties.hh:52
Definition porousmediumflow/sequential/properties.hh:63
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:63
Definition porousmediumflow/sequential/properties.hh:65
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:65
Definition porousmediumflow/sequential/properties.hh:67
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:67
The type of the mode.
Definition porousmediumflow/sequential/properties.hh:71
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:71
The type of discretization method.
Definition porousmediumflow/sequential/properties.hh:73
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:73
The type of the discretization of a pressure model.
Definition porousmediumflow/sequential/properties.hh:76
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:76
The type of the discretization of a transport model.
Definition porousmediumflow/sequential/properties.hh:78
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:78
The type velocity reconstruction.
Definition porousmediumflow/sequential/properties.hh:80
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:80
Number of equations in the system of PDEs.
Definition porousmediumflow/sequential/properties.hh:82
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:82
Number of phases in the system.
Definition porousmediumflow/sequential/properties.hh:84
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:84
Number of components in the system.
Definition porousmediumflow/sequential/properties.hh:86
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:86
The type of the container of global variables.
Definition porousmediumflow/sequential/properties.hh:88
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:88
Defines data object to be stored.
Definition porousmediumflow/sequential/properties.hh:90
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:90
Gives maximum number of intersections of an element and neighboring elements.
Definition porousmediumflow/sequential/properties.hh:92
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:92
Gives maximum number of intersections of an element and neighboring elements.
Definition porousmediumflow/sequential/properties.hh:94
UndefinedProperty type
Definition porousmediumflow/sequential/properties.hh:94
GetPropType< TypeTag, Properties::PressureCoefficientMatrix > type
Definition porousmediumflow/sequential/properties.hh:121
DummyTraits type
Definition porousmediumflow/sequential/properties.hh:135
static constexpr int value
Definition porousmediumflow/sequential/properties.hh:145
MockFVGridGeometry type
Definition porousmediumflow/sequential/properties.hh:160
typename GetPropType< TypeTag, Properties::Grid >::LeafGridView GV
Definition porousmediumflow/sequential/properties.hh:152
static constexpr Dumux::DiscretizationMethod discMethod
Definition porousmediumflow/sequential/properties.hh:156
GV GridView
Definition porousmediumflow/sequential/properties.hh:157
typename GetProp< TypeTag, SolutionTypes >::ScalarSolution type
Definition porousmediumflow/sequential/properties.hh:168
typename GetPropType< TypeTag, Properties::GridGeometry >::GridView GridView
Definition porousmediumflow/sequential/properties.hh:180
Dune::BlockVector< Dune::FieldVector< Scalar, 1 > > ScalarSolution
type for vector of scalars
Definition porousmediumflow/sequential/properties.hh:210
Dune::BlockVector< Dune::FieldVector< Dune::FieldVector< Scalar, dim >, maxIntersections > > DimVecElemFace
type for vector of vectors (of size 2 x dimension) of vector (of size dimension) of scalars
Definition porousmediumflow/sequential/properties.hh:220
Dune::FieldVector< Dune::BlockVector< Dune::FieldVector< Scalar, 1 > >, numPhases > PhaseProperty
type for vector of phase properties
Definition porousmediumflow/sequential/properties.hh:214
Dune::BlockVector< Dune::FieldVector< Dune::FieldVector< Scalar, numPhases >, maxIntersections > > PhasePropertyElemFace
type for vector of vectors (of size 2 x dimension) of scalars
Definition porousmediumflow/sequential/properties.hh:218
@ numComponents
Definition porousmediumflow/sequential/properties.hh:188
@ dim
Definition porousmediumflow/sequential/properties.hh:185
@ numPhases
Definition porousmediumflow/sequential/properties.hh:187
@ numEq
Definition porousmediumflow/sequential/properties.hh:186
@ maxIntersections
Definition porousmediumflow/sequential/properties.hh:189
GetPropType< TypeTag, Properties::Variables > Variables
Definition porousmediumflow/sequential/properties.hh:181
Dune::MultipleCodimMultipleGeomTypeMapper< GridView > VertexMapper
Mapper for the grid view's vertices.
Definition porousmediumflow/sequential/properties.hh:196
Dune::MultipleCodimMultipleGeomTypeMapper< GridView > ElementMapper
Mapper for the grid view's elements.
Definition porousmediumflow/sequential/properties.hh:201
Dune::FieldVector< Dune::BlockVector< Dune::FieldVector< Scalar, 1 > >, numComponents > ComponentProperty
type for vector of phase properties
Definition porousmediumflow/sequential/properties.hh:212
Dune::FieldVector< Dune::BlockVector< Dune::FieldVector< Scalar, 1 > >, numPhases > FluidProperty
type for vector of fluid properties: Vector[element][phase]
Definition porousmediumflow/sequential/properties.hh:216
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition porousmediumflow/sequential/properties.hh:179
Dune::FieldVector< Scalar, numEq > PrimaryVariables
The type of a solution at a fixed time.
Definition porousmediumflow/sequential/properties.hh:208
VariableClass< TypeTag > type
Definition porousmediumflow/sequential/properties.hh:224
typename GetProp< TypeTag, SolutionTypes >::PrimaryVariables type
Definition porousmediumflow/sequential/properties.hh:227
Dumux::TimeManager< TypeTag > type
Definition porousmediumflow/sequential/properties.hh:231
Dumux::SequentialBoundaryTypes< numEq > type
Definition porousmediumflow/sequential/properties.hh:241
static void defaultParams(Dune::ParameterTree &params, const std::string &group="")
Definition porousmediumflow/sequential/properties.hh:248
Class to specify the type of a boundary.
Class to specify the type of a boundary.
Declares all properties used in Dumux.
Defines a type tags and some fundamental properties for all models.