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
Classes related to flux variables caching.
A helper to deduce a vector with the same size as numbers of equations.
A liquid phase consisting of a single component.
A much simpler (and thus potentially less buggy) version of pure water.
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.
Base class for the flux variables in porous medium models.
Defines the primary variable and equation indices used by the isothermal tracer model.
Element-wise calculation of the local residual for problems using fully implicit tracer model.
Adds I/O fields specific to the tracer model.