3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
freeflow/shallowwater/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 2 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 *****************************************************************************/
62#ifndef DUMUX_FREEFLOW_SHALLOW_WATER_MODEL_HH
63#define DUMUX_FREEFLOW_SHALLOW_WATER_MODEL_HH
64
67
70
71#include "localresidual.hh"
72#include "volumevariables.hh"
73#include "fluxvariables.hh"
74#include "indices.hh"
75#include "iofields.hh"
76
77namespace Dumux {
78
84{
86
87 static constexpr int numEq() { return 3; }
88 static constexpr int numPhases() { return 1; }
89
91 static constexpr bool enableAdvection() { return true; }
92
94 static constexpr bool enableDiffusion() { return false; }
95};
96
104template<class PV,
105 class MT>
107{
109 using ModelTraits = MT;
110};
111
112
113namespace Properties {
114
116namespace TTag {
117struct ShallowWater { using InheritsFrom = std::tuple<ModelProperties>; };
118}// end namespace TTag
119
121// Define properties
123
124template<class TypeTag>
125struct ModelTraits<TypeTag, TTag::ShallowWater>
127
128template<class TypeTag>
129struct LocalResidual<TypeTag, TTag::ShallowWater>
131
132template<class TypeTag>
133struct FluxVariables<TypeTag, TTag::ShallowWater>
135
136template<class TypeTag>
137struct VolumeVariables<TypeTag, TTag::ShallowWater>
138{
139private:
143public:
145};
146
147template<class TypeTag>
148struct FluxVariablesCache<TypeTag, TTag::ShallowWater>
150
151template<class TypeTag>
152struct FluxVariablesCacheFiller<TypeTag, TTag::ShallowWater>
154
155template<class TypeTag>
156struct IOFields<TypeTag, TTag::ShallowWater>
158
159template<class TypeTag>
160struct AdvectionType<TypeTag, TTag::ShallowWater>
162
163//template<class TypeTag> struct DiffusionType<TypeTag, TTag::ShallowWater> {using type = ShallowWaterExactRiemannSolver<TypeTag>;};
164
165} // end properties
166} // end namespace Dumux
167
168#endif // DUMUX_FREEFLOW_SHALLOW_WATER_MODEL_HH
Classes related to flux variables caching.
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
Stores data associated with flux vars.
Definition: common/properties.hh:126
The engine behind the global flux cache (how to fill caches for the stencil)
Definition: common/properties.hh:128
The type for the calculation the advective fluxes.
Definition: common/properties.hh:152
The empty filler class corresponding to EmptyCache.
Definition: fluxvariablescaching.hh:32
An empty flux variables cache.
Definition: fluxvariablescaching.hh:47
Computes the shallow water flux by solving a riemann problem.
Definition: shallowwaterflux.hh:38
The flux variables class for the shallow water model.
Definition: freeflow/shallowwater/fluxvariables.hh:43
The common indices for the shallow water equations model.
Definition: freeflow/shallowwater/indices.hh:35
Adds vtk output fields for the shallow water model.
Definition: freeflow/shallowwater/iofields.hh:37
Element-wise calculation of the residual for the shallow water equations.
Definition: freeflow/shallowwater/localresidual.hh:38
Specifies a number properties of shallow water models.
Definition: freeflow/shallowwater/model.hh:84
static constexpr bool enableDiffusion()
Enable diffusion.
Definition: freeflow/shallowwater/model.hh:94
static constexpr bool enableAdvection()
Enable advection.
Definition: freeflow/shallowwater/model.hh:91
static constexpr int numPhases()
Definition: freeflow/shallowwater/model.hh:88
static constexpr int numEq()
Definition: freeflow/shallowwater/model.hh:87
Traits class for the volume variables of the shallow water model.
Definition: freeflow/shallowwater/model.hh:107
PV PrimaryVariables
Definition: freeflow/shallowwater/model.hh:108
MT ModelTraits
Definition: freeflow/shallowwater/model.hh:109
Definition: freeflow/shallowwater/model.hh:117
std::tuple< ModelProperties > InheritsFrom
Definition: freeflow/shallowwater/model.hh:117
Volume variables for the shallow water equations model.
Definition: freeflow/shallowwater/volumevariables.hh:35
Declares all properties used in Dumux.
Defines a type tags and some fundamental properties for all models.
Base class for the flux variables in porous medium models.
Defines the primary variable and equation indices used by the isothermal tracer model.
Adds I/O fields specific to the tracer model.
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.