3.6-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
81
82#include "localresidual.hh"
83#include "volumevariables.hh"
84#include "fluxvariables.hh"
85#include "indices.hh"
86#include "iofields.hh"
87
88namespace Dumux {
89
95{
97
98 static constexpr int numEq() { return 3; }
99 static constexpr int numPhases() { return 1; }
100
102 static constexpr bool enableAdvection() { return true; }
103};
104
113template<class PV,
114 class FSY,
115 class MT>
117{
119 using FluidSystem = FSY;
120 using ModelTraits = MT;
121};
122
123
124namespace Properties {
125
127namespace TTag {
128struct ShallowWater { using InheritsFrom = std::tuple<ModelProperties>; };
129}// end namespace TTag
130
132// Define properties
134
135template<class TypeTag>
136struct ModelTraits<TypeTag, TTag::ShallowWater>
138
139template<class TypeTag>
140struct LocalResidual<TypeTag, TTag::ShallowWater>
142
143template<class TypeTag>
144struct FluxVariables<TypeTag, TTag::ShallowWater>
146
147template<class TypeTag>
148struct VolumeVariables<TypeTag, TTag::ShallowWater>
149{
150private:
155public:
157};
158
159template<class TypeTag>
160struct IOFields<TypeTag, TTag::ShallowWater>
162
163template<class TypeTag>
164struct AdvectionType<TypeTag, TTag::ShallowWater>
166
167template<class TypeTag>
168struct ViscousFluxType<TypeTag, TTag::ShallowWater>
170
171template<class TypeTag>
172struct FluidSystem<TypeTag, TTag::ShallowWater>
173{
174private:
176public:
178};
179
180} // end properties
181} // end namespace Dumux
182
183#endif
A helper to deduce a vector with the same size as numbers of equations.
A simple implementation of pure water.
A liquid phase consisting of a single component.
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition: adapt.hh:29
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:180
Traits class encapsulating model specifications.
Definition: common/properties.hh:51
A class helping models to define input and output fields.
Definition: common/properties.hh:61
Definition: common/properties.hh:72
The secondary variables within a sub-control volume.
Definition: common/properties.hh:105
Container storing the different types of flux variables.
Definition: common/properties.hh:111
The type for the calculation the advective fluxes.
Definition: common/properties.hh:139
The type of the fluid system to use.
Definition: common/properties.hh:160
The type for the calculation of the (turbulent) viscous (momentum) fluxes.
Definition: common/properties.hh:285
Prepare and compute the shallow water advective flux.
Definition: shallowwaterflux.hh:49
Compute the shallow water viscous momentum flux due to (turbulent) viscosity.
Definition: shallowwaterviscousflux.hh:75
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:95
static constexpr bool enableAdvection()
Enable advection.
Definition: freeflow/shallowwater/model.hh:102
static constexpr int numPhases()
Definition: freeflow/shallowwater/model.hh:99
static constexpr int numEq()
Definition: freeflow/shallowwater/model.hh:98
Traits class for the volume variables of the shallow water model.
Definition: freeflow/shallowwater/model.hh:117
MT ModelTraits
Definition: freeflow/shallowwater/model.hh:120
PV PrimaryVariables
Definition: freeflow/shallowwater/model.hh:118
FSY FluidSystem
Definition: freeflow/shallowwater/model.hh:119
Definition: freeflow/shallowwater/model.hh:128
std::tuple< ModelProperties > InheritsFrom
Definition: freeflow/shallowwater/model.hh:128
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.
Python wrapper for volume variables (finite volume schemes)
Defines the primary variable and equation indices used by the isothermal tracer model.