3.5-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 *****************************************************************************/
70#ifndef DUMUX_FREEFLOW_SHALLOW_WATER_MODEL_HH
71#define DUMUX_FREEFLOW_SHALLOW_WATER_MODEL_HH
72
76
82
83#include "localresidual.hh"
84#include "volumevariables.hh"
85#include "fluxvariables.hh"
86#include "indices.hh"
87#include "iofields.hh"
88
89namespace Dumux {
90
96{
98
99 static constexpr int numEq() { return 3; }
100 static constexpr int numPhases() { return 1; }
101
103 static constexpr bool enableAdvection() { return true; }
104};
105
114template<class PV,
115 class FSY,
116 class MT>
118{
120 using FluidSystem = FSY;
121 using ModelTraits = MT;
122};
123
124
125namespace Properties {
126
128namespace TTag {
129struct ShallowWater { using InheritsFrom = std::tuple<ModelProperties>; };
130}// end namespace TTag
131
133// Define properties
135
136template<class TypeTag>
137struct ModelTraits<TypeTag, TTag::ShallowWater>
139
140template<class TypeTag>
141struct LocalResidual<TypeTag, TTag::ShallowWater>
143
144template<class TypeTag>
145struct FluxVariables<TypeTag, TTag::ShallowWater>
147
148template<class TypeTag>
149struct VolumeVariables<TypeTag, TTag::ShallowWater>
150{
151private:
156public:
158};
159
160template<class TypeTag>
161struct FluxVariablesCache<TypeTag, TTag::ShallowWater>
163
164template<class TypeTag>
165struct FluxVariablesCacheFiller<TypeTag, TTag::ShallowWater>
167
168template<class TypeTag>
169struct IOFields<TypeTag, TTag::ShallowWater>
171
172template<class TypeTag>
173struct AdvectionType<TypeTag, TTag::ShallowWater>
175
176template<class TypeTag>
177struct ViscousFluxType<TypeTag, TTag::ShallowWater>
179
180template<class TypeTag>
181struct FluidSystem<TypeTag, TTag::ShallowWater>
182{
183private:
185public:
187};
188
189} // end properties
190} // end namespace Dumux
191
192#endif
A helper to deduce a vector with the same size as numbers of equations.
Classes related to flux variables caching.
A much simpler (and thus potentially less buggy) version of pure water.
A liquid phase consisting of a single component.
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:107
Container storing the different types of flux variables.
Definition: common/properties.hh:113
Stores data associated with flux vars.
Definition: common/properties.hh:115
The engine behind the global flux cache (how to fill caches for the stencil)
Definition: common/properties.hh:117
The type for the calculation the advective fluxes.
Definition: common/properties.hh:141
The type of the fluid system to use.
Definition: common/properties.hh:162
The type for the calculation of the (turbulent) viscous (momentum) fluxes.
Definition: common/properties.hh:287
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:62
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:96
static constexpr bool enableAdvection()
Enable advection.
Definition: freeflow/shallowwater/model.hh:103
static constexpr int numPhases()
Definition: freeflow/shallowwater/model.hh:100
static constexpr int numEq()
Definition: freeflow/shallowwater/model.hh:99
Traits class for the volume variables of the shallow water model.
Definition: freeflow/shallowwater/model.hh:118
MT ModelTraits
Definition: freeflow/shallowwater/model.hh:121
PV PrimaryVariables
Definition: freeflow/shallowwater/model.hh:119
FSY FluidSystem
Definition: freeflow/shallowwater/model.hh:120
Definition: freeflow/shallowwater/model.hh:129
std::tuple< ModelProperties > InheritsFrom
Definition: freeflow/shallowwater/model.hh:129
Volume variables for the shallow water equations model.
Definition: freeflow/shallowwater/volumevariables.hh:35
A liquid phase consisting of a single component.
Definition: 1pliquid.hh:46
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.
Defines the primary variable and equation indices used by the isothermal tracer model.