3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
common/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 *****************************************************************************/
27#ifndef DUMUX_PROPERTIES_HH
28#define DUMUX_PROPERTIES_HH
29
30// explicitly guard the include so that the property system
31// header doesn't need to be opened and checked all the time
32#ifndef DUMUX_PROPERTY_SYSTEM_HH
34
35// remove this after release 3.1 to disable macros per default
36#ifndef DUMUX_ENABLE_OLD_PROPERTY_MACROS
37#define DUMUX_ENABLE_OLD_PROPERTY_MACROS 1
38#endif
39
40// remove this after release 3.2 to remove macros completely
41#if DUMUX_ENABLE_OLD_PROPERTY_MACROS
43#endif // DUMUX_ENABLE_OLD_PROPERTY_MACROS
44#endif // DUMUX_PROPERTY_SYSTEM_HH
45
46namespace Dumux {
47namespace Properties {
48
50// Basic properties of numeric models:
52template<class TypeTag, class MyTypeTag>
53struct Scalar { using type = UndefinedProperty; };
54template<class TypeTag, class MyTypeTag>
56template<class TypeTag, class MyTypeTag>
57struct Grid { using type = UndefinedProperty; };
58template<class TypeTag, class MyTypeTag>
60template<class TypeTag, class MyTypeTag>
61struct NumEqVector { using type = UndefinedProperty; };
62template<class TypeTag, class MyTypeTag>
63struct GridView { using type = UndefinedProperty; };
64template<class TypeTag, class MyTypeTag>
65struct ModelTraits { using type = UndefinedProperty; };
66template<class TypeTag, class MyTypeTag>
68template<class TypeTag, class MyTypeTag>
69struct Problem { using type = UndefinedProperty; };
70template<class TypeTag, class MyTypeTag>
71struct PointSource { using type = UndefinedProperty; };
72template<class TypeTag, class MyTypeTag>
74// TODO: Remove deprecated property VtkOutputFields
75template<class TypeTag, class MyTypeTag>
77template<class TypeTag, class MyTypeTag>
78struct IOFields { using type = UndefinedProperty; };
79template<class TypeTag, class MyTypeTag>
81template<class TypeTag, class MyTypeTag>
83template<class TypeTag, class MyTypeTag>
85template<class TypeTag, class MyTypeTag>
87
90template<class TypeTag, class MyTypeTag>
92
94template<class TypeTag, class MyTypeTag>
96
98// Basic properties regarding balance equations
100// TODO: Integrate UseMoles into BalanceEqOpts
101template<class TypeTag, class MyTypeTag>
102struct UseMoles { using type = UndefinedProperty; };
103template<class TypeTag, class MyTypeTag>
105template<class TypeTag, class MyTypeTag>
107
109// Properties used by finite volume schemes:
111template<class TypeTag, class MyTypeTag>
113
114#if defined(__clang__) && !defined(DONT_EMIT_CLANG_GRIDGEOMETRY_WARNING)
115#warning "The properties `FVGridGeometry` and `EnableFVGridGeometryCache` \
116are deprecated in favor of `GridGeometry` and `EnableGridGeometryCache`. \
117The old properties will be removed after release 3.1. \
118If clang is used, no deprecation warnings are emitted. \
119We recommend to use gcc for getting rid of the warnings. \
120You can suppress this message by defining the preprocessor variable \
121DONT_EMIT_CLANG_GRIDGEOMETRY_WARNING."
122#endif
123// TODO: Remove deprecated property FVGridGeometry after 3.1
124template<class TypeTag, class MyTypeTag>
125struct [[deprecated("Use GridGeometry instead.")]] FVGridGeometry { using type = UndefinedProperty; };
126
127// TODO: Remove deprecated property EnableFVGridGeometryCache after 3.1
128template<class TypeTag, class MyTypeTag>
129struct [[deprecated("Use EnableGridGeometryCache instead.")]] EnableFVGridGeometryCache { using type = UndefinedProperty; };
130
131// Dumux 3.1 changes the property `FVGridGeometry` to `GridGeometry`.
132// For ensuring backward compatibility, it is necessary to set the default value
133// of the new property to the old one, see the discussion in MR 1647.
134// Use diagnostic pragmas to prevent the emission of a warning message.
135// TODO after 3.1: change default vale to `UndefinedProperty`, remove pragmas
136// and comment.
137#pragma GCC diagnostic push
138#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
139
140template<class TypeTag, class T>
143
144template<class TypeTag>
147
148template<class TypeTag, class MyTypeTag>
150{
152};
153
154template<class TypeTag, bool hasParentTypeTag>
157
158template<class TypeTag>
159struct EnableGridGeometryCacheHelper<TypeTag, false>
160{
161 // fallback
162 static constexpr bool value = getPropValue<TypeTag, Properties::EnableFVGridGeometryCache>();
163};
164
165// only use the fallback (EnableFVGridGeometryCache) if none
166// of the TypeTags define EnableGridGeometryCache
167template <class TypeTag, class MyTypeTag>
168struct EnableGridGeometryCache : public EnableGridGeometryCacheHelper<TypeTag, Detail::hasParentTypeTag<MyTypeTag>(int{})>
169{};
170
171#pragma GCC diagnostic pop
172
173template<class TypeTag, class MyTypeTag>
175template<class TypeTag, class MyTypeTag>
177template<class TypeTag, class MyTypeTag>
179template<class TypeTag, class MyTypeTag>
181template<class TypeTag, class MyTypeTag>
183template<class TypeTag, class MyTypeTag>
185template<class TypeTag, class MyTypeTag>
187template<class TypeTag, class MyTypeTag>
189template<class TypeTag, class MyTypeTag>
191
193// Additional properties used by the cell-centered mpfa schemes:
195template<class TypeTag, class MyTypeTag>
197template<class TypeTag, class MyTypeTag>
199template<class TypeTag, class MyTypeTag>
201
203// Properties used by models involving flow in porous media:
205template<class TypeTag, class MyTypeTag>
207template<class TypeTag, class MyTypeTag>
209template<class TypeTag, class MyTypeTag>
211template<class TypeTag, class MyTypeTag>
213template<class TypeTag, class MyTypeTag>
215template<class TypeTag, class MyTypeTag>
217template<class TypeTag, class MyTypeTag>
219
220template<class TypeTag, class MyTypeTag>
222template<class TypeTag, class MyTypeTag>
223struct FluidSystem { using type = UndefinedProperty; };
224template<class TypeTag, class MyTypeTag>
225struct FluidState { using type = UndefinedProperty; };
226template<class TypeTag, class MyTypeTag>
227struct SolidSystem { using type = UndefinedProperty; };
228template<class TypeTag, class MyTypeTag>
229struct SolidState { using type = UndefinedProperty; };
230template<class TypeTag, class MyTypeTag>
232template<class TypeTag, class MyTypeTag>
234template<class TypeTag, class MyTypeTag>
236template<class TypeTag, class MyTypeTag>
237struct Formulation { using type = UndefinedProperty; };
238// TODO: is this useful? -> everything is a constraint solver just a different type
239template<class TypeTag, class MyTypeTag>
241
242// When using the box method in a multi-phase context, an interface solver might be necessary
243template<class TypeTag, class MyTypeTag>
245
247// Additional properties used by the 2pnc and 2pncmin models:
249template<class TypeTag, class MyTypeTag>
250struct Chemistry { using type = UndefinedProperty; };
251template<class TypeTag, class MyTypeTag>
253
255// Additional properties used by the richards model
257template<class TypeTag, class MyTypeTag>
259
261// Additional properties used by the 3pwateroil model:
263template<class TypeTag, class MyTypeTag>
265
267// Properties used by geomechanical models:
269template<class TypeTag, class MyTypeTag>
270struct StressType { using type = UndefinedProperty; };
271
273// Properties used by the staggered-grid discretization method
275
276template<class TypeTag, class MyTypeTag>
278template<class TypeTag, class MyTypeTag>
279struct NumEqFace { using type = UndefinedProperty; };
280template<class TypeTag, class MyTypeTag>
282template<class TypeTag, class MyTypeTag>
284template<class TypeTag, class MyTypeTag>
286template<class TypeTag, class MyTypeTag>
288template<class TypeTag, class MyTypeTag>
290template<class TypeTag, class MyTypeTag>
292template<class TypeTag, class MyTypeTag>
294template<class TypeTag, class MyTypeTag>
295struct BaseEpsilon { using type = UndefinedProperty; };
296template<class TypeTag, class MyTypeTag>
298template<class TypeTag, class MyTypeTag>
300template<class TypeTag, class MyTypeTag>
302template<class TypeTag, class MyTypeTag>
304template<class TypeTag, class MyTypeTag>
306
308// Properties used by the mpnc model
310
311template<class TypeTag, class MyTypeTag>
313
315// Properties used by the nonequilibrium model
317template<class TypeTag, class MyTypeTag>
319template<class TypeTag, class MyTypeTag>
321template<class TypeTag, class MyTypeTag>
323template<class TypeTag, class MyTypeTag>
325template<class TypeTag, class MyTypeTag>
327template<class TypeTag, class MyTypeTag>
329template<class TypeTag, class MyTypeTag>
331template<class TypeTag, class MyTypeTag>
333template<class TypeTag, class MyTypeTag>
335
336template<class TypeTag, class MyTypeTag>
338template<class TypeTag, class MyTypeTag>
340
342// Properties used by free flow models
344
345template<class TypeTag, class MyTypeTag>
347
349// Properties used by multidomain simulations
351template<class TypeTag, class MyTypeTag>
353
355// Basic properties of sequential models:
357template<class TypeTag, class MyTypeTag>
359
360} // end namespace Properties
361} // end namespace Dumux
362
363#endif // DUMUX_PROPERTIES_HH
The Dumux property system, traits with inheritance.
Provides the magic behind the DuMuX property system.
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition: propertysystem.hh:149
Property to specify the type of scalar values.
Definition: common/properties.hh:53
Property which defines the group that is queried for parameters by default.
Definition: common/properties.hh:55
The DUNE grid type.
Definition: common/properties.hh:57
A vector of primary variables.
Definition: common/properties.hh:59
A vector of size number equations that can be used for Neumann fluxes, sources, residuals,...
Definition: common/properties.hh:61
The type of the grid view according to the grid type.
Definition: common/properties.hh:63
Traits class encapsulating model specifications.
Definition: common/properties.hh:65
Model traits to be used as a base for nonisothermal, mineralization ... models.
Definition: common/properties.hh:67
Property to specify the type of a problem which has to be solved.
Definition: common/properties.hh:69
Property defining the type of point source used.
Definition: common/properties.hh:71
Property defining the class that computes which sub control volume point sources belong to.
Definition: common/properties.hh:73
A class helping models to define default vtk output parameters.
Definition: common/properties.hh:76
A class helping models to define input and output fields.
Definition: common/properties.hh:78
The type of the base class of the local residual (specific to a discretization scheme)
Definition: common/properties.hh:80
Type of the global jacobian matrix.
Definition: common/properties.hh:82
Vector containing all primary variable vector of the grid.
Definition: common/properties.hh:84
Stores the boundary types of a single degree of freedom.
Definition: common/properties.hh:86
Definition: common/properties.hh:91
TODO: Remove this property as soon as the decoupled models are integrated.
Definition: common/properties.hh:95
Property whether to use moles or kg as amount unit for balance equations.
Definition: common/properties.hh:102
The component balance index that should be replaced by the total mass/mole balance.
Definition: common/properties.hh:104
A class that collects options for the evaluation of the balance equations.
Definition: common/properties.hh:106
Stores the boundary types on an element.
Definition: common/properties.hh:112
The type of the global finite volume geometry.
Definition: common/properties.hh:125
specifies if geometric data is saved (faster, but more memory consuming)
Definition: common/properties.hh:129
Definition: common/properties.hh:142
GetPropType< TypeTag, Properties::FVGridGeometry > type
Definition: common/properties.hh:142
Definition: common/properties.hh:150
typename GridGeometryHelper< TypeTag, typename FVGridGeometry< TypeTag, MyTypeTag >::type >::type type
Definition: common/properties.hh:151
Definition: common/properties.hh:156
Definition: common/properties.hh:169
The secondary variables within a sub-control volume.
Definition: common/properties.hh:174
The type for a global container for the volume variables.
Definition: common/properties.hh:176
If disabled, the volume variables are not stored (reduces memory, but is slower)
Definition: common/properties.hh:178
Container storing the different types of flux variables.
Definition: common/properties.hh:180
Stores data associated with flux vars.
Definition: common/properties.hh:182
The engine behind the global flux cache (how to fill caches for the stencil)
Definition: common/properties.hh:184
The global vector of flux variable containers.
Definition: common/properties.hh:186
specifies if data on flux vars should be saved (faster, but more memory consuming)
Definition: common/properties.hh:188
The grid variables object managing variable data on the grid (volvars/fluxvars cache)
Definition: common/properties.hh:190
The primary interaction volume type.
Definition: common/properties.hh:196
The secondary interaction volume type used e.g. on the boundaries.
Definition: common/properties.hh:198
The type used for the nodal index sets of the dual grid.
Definition: common/properties.hh:200
The local residual of the energy equation.
Definition: common/properties.hh:206
The type for the calculation the advective fluxes.
Definition: common/properties.hh:208
specifies if the parameters for the advective fluxes depend on the solution
Definition: common/properties.hh:210
The type for the calculation of the molecular diffusion fluxes.
Definition: common/properties.hh:212
specifies if the parameters for the diffusive fluxes depend on the solution
Definition: common/properties.hh:214
The type for the calculation of the heat conduction fluxes.
Definition: common/properties.hh:216
specifies if the parameters for the heat conduction fluxes depend on the solution
Definition: common/properties.hh:218
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
The type of the solid system to use.
Definition: common/properties.hh:227
The type of the solid state to use.
Definition: common/properties.hh:229
The employed model for the computation of the effective diffusivity.
Definition: common/properties.hh:231
Model to be used for the calculation of the effective conductivity.
Definition: common/properties.hh:233
specifies the velocity calculation module to be used
Definition: common/properties.hh:235
The formulation of the model.
Definition: common/properties.hh:237
Whether to use a contraint solver for computing the secondary variables.
Definition: common/properties.hh:240
Definition: common/properties.hh:244
The chemistry class with which solves equlibrium reactions.
Definition: common/properties.hh:250
Set the mole fraction in the wetting or non-wetting phase.
Definition: common/properties.hh:252
Property for turning Richards into extended Richards.
Definition: common/properties.hh:258
reduces the phasestates to threePhases and wnPhaseOnly
Definition: common/properties.hh:264
The type used for the evaluation of stress tensors and forces.
Definition: common/properties.hh:270
The number of equations for cell-centered dofs.
Definition: common/properties.hh:277
The number of equations for face dofs.
Definition: common/properties.hh:279
The solution vector type for cell-centered dofs.
Definition: common/properties.hh:281
The solution vector type for face dofs.
Definition: common/properties.hh:283
Global vector containing face-related data.
Definition: common/properties.hh:285
The primary variables container type for cell-centered dofs.
Definition: common/properties.hh:287
The primary variables container type for face dofs.
Definition: common/properties.hh:289
Specifies the intersection mapper.
Definition: common/properties.hh:291
The hybrid primary variables container type.
Definition: common/properties.hh:293
A base epsilon for numerical differentiation, can contain multiple values.
Definition: common/properties.hh:295
Class containing local face-related data.
Definition: common/properties.hh:297
Class containing local boundary data.
Definition: common/properties.hh:299
A vector containing the solution for a face (similar to ElementSolution)
Definition: common/properties.hh:301
Switch on/off caching of face variables.
Definition: common/properties.hh:303
Specifies the order of the upwinding scheme (1 == first order, 2 == second order(tvd methods))
Definition: common/properties.hh:305
Definition: common/properties.hh:312
the formulation of the pressure e.g most wetting first
Definition: common/properties.hh:318
Definition: common/properties.hh:320
Definition: common/properties.hh:322
Definition: common/properties.hh:324
Definition: common/properties.hh:326
Definition: common/properties.hh:328
Definition: common/properties.hh:330
Definition: common/properties.hh:332
Definition: common/properties.hh:334
Definition: common/properties.hh:337
Definition: common/properties.hh:339
Returns whether to normalize the pressure term in the momentum balance or not.
Definition: common/properties.hh:346
Definition: common/properties.hh:352
Definition: common/properties.hh:358
a tag to mark properties as undefined
Definition: propertysystem.hh:36