3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
freeflow/rans/twoeq/kepsilon/model.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 *****************************************************************************/
65#ifndef DUMUX_KEPSILON_MODEL_HH
66#define DUMUX_KEPSILON_MODEL_HH
67
73
74#include "problem.hh"
75#include "fluxvariables.hh"
76#include "localresidual.hh"
77#include "volumevariables.hh"
78#include "iofields.hh"
79
80namespace Dumux {
81namespace Properties {
82
89template<int dimension>
91{
93 static constexpr int dim() { return dimension; }
94
97 static constexpr int numEq() { return dim()+1+2; }
98
100 static constexpr int numFluidComponents() { return 1; }
101
104
106 static constexpr auto turbulenceModel()
107 { return TurbulenceModel::kepsilon; }
108};
109
111// default property values for the isothermal k-epsilon model
113
114// Create new type tags
115namespace TTag {
117struct KEpsilon { using InheritsFrom = std::tuple<RANS>; };
118} // end namespace TTag
119
121template<class TypeTag>
122struct ModelTraits<TypeTag, TTag::KEpsilon>
123{
124private:
126 static constexpr int dim = GridView::dimension;
127public:
129};
130
132template<class TypeTag>
133struct FluxVariables<TypeTag, TTag::KEpsilon>
134{
135private:
137public:
139};
140
142template<class TypeTag>
143struct LocalResidual<TypeTag, TTag::KEpsilon>
144{
145private:
147public:
149};
150
152template<class TypeTag>
153struct VolumeVariables<TypeTag, TTag::KEpsilon>
154{
155private:
160
161 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
162 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
163 static_assert(!FSY::isMiscible(), "The Navier-Stokes model only works with immiscible fluid systems.");
164
167public:
169};
170
172template<class TypeTag>
173struct IOFields<TypeTag, TTag::KEpsilon> { using type = KEpsilonIOFields; };
174
176// default property values for the non-isothermal k-epsilon model
178
179// Create new type tags
180namespace TTag {
182struct KEpsilonNI { using InheritsFrom = std::tuple<KEpsilon, RANSNI>; };
183} // end namespace TTag
184
186template<class TypeTag>
187struct ModelTraits<TypeTag, TTag::KEpsilonNI>
188{
189private:
191 static constexpr int dim = GridView::dimension;
193public:
195};
196
198template<class TypeTag>
199struct VolumeVariables<TypeTag, TTag::KEpsilonNI>
200{
201private:
206
207 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
208 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
209 static_assert(!FSY::isMiscible(), "The Navier-Stokes model only works with immiscible fluid systems.");
210
213public:
215};
216
218template<class TypeTag>
219struct IOFields<TypeTag, TTag::KEpsilonNI> { using type = FreeflowNonIsothermalIOFields<KEpsilonIOFields, true/*turbulenceModel*/>; };
220
221} // end properties
222} // end namespace
223
224#endif // DUMUX_KEPSILON_MODEL_HH
The available free flow turbulence models in Dumux.
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
Traits class encapsulating model specifications.
Definition: common/properties.hh:66
A class helping models to define input and output fields.
Definition: common/properties.hh:76
Definition: common/properties.hh:89
The secondary variables within a sub-control volume.
Definition: common/properties.hh:118
Container storing the different types of flux variables.
Definition: common/properties.hh:124
Definition: freeflow/navierstokes/fluxvariables.hh:35
The common indices for the isothermal Navier-Stokes model.
Definition: freeflow/navierstokes/indices.hh:37
Definition: freeflow/navierstokes/localresidual.hh:35
Traits class for the volume variables of the Navier-Stokes model.
Definition: freeflow/navierstokes/model.hh:125
Volume variables for the single-phase Navier-Stokes model.
Definition: freeflow/navierstokes/volumevariables.hh:38
Adds I/O fields specific to non-isothermal free-flow models.
Definition: freeflow/nonisothermal/iofields.hh:38
Specifies a number properties of non-isothermal free-flow flow models based on the specifics of a giv...
Definition: freeflow/nonisothermal/model.hh:59
Traits for the Reynolds-averaged Navier-Stokes model.
Definition: freeflow/rans/model.hh:73
The common indices for isothermal two-equation RANS models.
Definition: freeflow/rans/twoeq/indices.hh:41
Definition: freeflow/rans/twoeq/kepsilon/fluxvariables.hh:34
Adds I/O fields for the k-epsilon turbulence model.
Definition: freeflow/rans/twoeq/kepsilon/iofields.hh:36
Definition: freeflow/rans/twoeq/kepsilon/localresidual.hh:36
Traits for the k-epsilon model.
Definition: freeflow/rans/twoeq/kepsilon/model.hh:91
static constexpr int numEq()
Definition: freeflow/rans/twoeq/kepsilon/model.hh:97
static constexpr auto turbulenceModel()
return the type of turbulence model used
Definition: freeflow/rans/twoeq/kepsilon/model.hh:106
static constexpr int numFluidComponents()
The number of components.
Definition: freeflow/rans/twoeq/kepsilon/model.hh:100
static constexpr int dim()
The dimension of the model.
Definition: freeflow/rans/twoeq/kepsilon/model.hh:93
The type tag for the single-phase, isothermal k-epsilon model.
Definition: freeflow/rans/twoeq/kepsilon/model.hh:117
std::tuple< RANS > InheritsFrom
Definition: freeflow/rans/twoeq/kepsilon/model.hh:117
The type tag for the single-phase, non-isothermal k-epsilon model.
Definition: freeflow/rans/twoeq/kepsilon/model.hh:182
std::tuple< KEpsilon, RANSNI > InheritsFrom
Definition: freeflow/rans/twoeq/kepsilon/model.hh:182
Volume variables for the isothermal single-phase k-epsilon model.
Definition: freeflow/rans/twoeq/kepsilon/volumevariables.hh:39
Declares all properties used in Dumux.
Defines a type tag and some properties for free flow models.
A single-phase, isothermal Reynolds-Averaged Navier-Stokes model.
Adds I/O fields specific to the tracer model.
Base class for the flux variables in porous medium models.
Element-wise calculation of the local residual for problems using fully implicit tracer model.
Base class for the model specific class which provides access to all volume averaged quantities.
Base class for all porous media problems.