3.4
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
68
72
73#include "localresidual.hh"
74#include "volumevariables.hh"
75#include "fluxvariables.hh"
76#include "indices.hh"
77#include "iofields.hh"
78
79namespace Dumux {
80
86{
88
89 static constexpr int numEq() { return 3; }
90 static constexpr int numPhases() { return 1; }
91
93 static constexpr bool enableAdvection() { return true; }
94};
95
103template<class PV,
104 class MT>
106{
108 using ModelTraits = MT;
109};
110
111
112namespace Properties {
113
115namespace TTag {
116struct ShallowWater { using InheritsFrom = std::tuple<ModelProperties>; };
117}// end namespace TTag
118
120// Define properties
122
123template<class TypeTag>
124struct ModelTraits<TypeTag, TTag::ShallowWater>
126
127template<class TypeTag>
128struct LocalResidual<TypeTag, TTag::ShallowWater>
130
131template<class TypeTag>
132struct FluxVariables<TypeTag, TTag::ShallowWater>
134
135template<class TypeTag>
136struct VolumeVariables<TypeTag, TTag::ShallowWater>
137{
138private:
142public:
144};
145
146template<class TypeTag>
147struct FluxVariablesCache<TypeTag, TTag::ShallowWater>
149
150template<class TypeTag>
151struct FluxVariablesCacheFiller<TypeTag, TTag::ShallowWater>
153
154template<class TypeTag>
155struct IOFields<TypeTag, TTag::ShallowWater>
157
158template<class TypeTag>
159struct AdvectionType<TypeTag, TTag::ShallowWater>
161
162template<class TypeTag>
163struct ViscousFluxType<TypeTag, TTag::ShallowWater>
165
166} // end properties
167} // end namespace Dumux
168
169#endif
A helper to deduce a vector with the same size as numbers of equations.
Classes related to flux variables caching.
typename NumEqVectorTraits< PrimaryVariables >::type NumEqVector
A vector with the same size as numbers of equations This is the default implementation and has to be ...
Definition: numeqvector.hh:46
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
Traits class encapsulating model specifications.
Definition: common/properties.hh:53
A class helping models to define input and output fields.
Definition: common/properties.hh:63
Definition: common/properties.hh:74
The secondary variables within a sub-control volume.
Definition: common/properties.hh:103
Container storing the different types of flux variables.
Definition: common/properties.hh:109
Stores data associated with flux vars.
Definition: common/properties.hh:111
The engine behind the global flux cache (how to fill caches for the stencil)
Definition: common/properties.hh:113
The type for the calculation the advective fluxes.
Definition: common/properties.hh:137
The type for the calculation of the (turbulent) viscous (momentum) fluxes.
Definition: common/properties.hh:277
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
Computes the shallow water viscous momentum flux due to (turbulent) viscosity by adding all surroundi...
Definition: shallowwaterviscousflux.hh:63
The flux variables class for the shallow water model.
Definition: freeflow/shallowwater/fluxvariables.hh:44
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:40
Specifies a number properties of shallow water models.
Definition: freeflow/shallowwater/model.hh:86
static constexpr bool enableAdvection()
Enable advection.
Definition: freeflow/shallowwater/model.hh:93
static constexpr int numPhases()
Definition: freeflow/shallowwater/model.hh:90
static constexpr int numEq()
Definition: freeflow/shallowwater/model.hh:89
Traits class for the volume variables of the shallow water model.
Definition: freeflow/shallowwater/model.hh:106
PV PrimaryVariables
Definition: freeflow/shallowwater/model.hh:107
MT ModelTraits
Definition: freeflow/shallowwater/model.hh:108
Definition: freeflow/shallowwater/model.hh:116
std::tuple< ModelProperties > InheritsFrom
Definition: freeflow/shallowwater/model.hh:116
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.
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.
Defines the primary variable and equation indices used by the isothermal tracer model.