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.
Defines the primary variable and equation indices used by the isothermal 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)