A two-dimensional shallow water equations model. More...
#include <dumux/common/properties.hh>
#include <dumux/common/properties/model.hh>
#include <dumux/common/numeqvector.hh>
#include <dumux/flux/shallowwaterflux.hh>
#include <dumux/flux/shallowwaterviscousflux.hh>
#include <dumux/flux/fluxvariablescaching.hh>
#include <dumux/material/components/simpleh2o.hh>
#include <dumux/material/fluidsystems/1pliquid.hh>
#include "localresidual.hh"
#include "volumevariables.hh"
#include "fluxvariables.hh"
#include "indices.hh"
#include "iofields.hh"
Go to the source code of this file.
A two-dimensional shallow water equations model.
The two-dimensional shallow water equations (SWEs) can be written as:
\[ \frac{\partial \mathbf{U}}{\partial t} + \frac{\partial \mathbf{F}}{\partial x} + \frac{\partial \mathbf{G}}{\partial y} - \mathbf{S_b} - \mathbf{S_f} = 0 \]
The first equation is the water balance equation (volume balance) and the following two equations balance the momentum in x-direction and y-direction. \( \mathbf{U} \), \( \mathbf{F} \) and \( \mathbf{G} \) are defined as:
\[ \mathbf{U} = \begin{bmatrix} h \\ uh \\ vh \end{bmatrix}, \mathbf{F} = \begin{bmatrix} hu \\ hu^2 + \frac{1}{2} gh^2 - \nu\frac{\partial uh}{\partial x} \\ huv - \nu\frac{\partial vh}{\partial x} \end{bmatrix}, \mathbf{G} = \begin{bmatrix} hv \\ huv - \nu\frac{\partial uh}{\partial y} \\ hv^2 + \frac{1}{2} gh^2 - \nu\frac{\partial vh}{\partial y} \end{bmatrix} \]
\( h \) is the water depth (in \( m \)), \( u \) the velocity in x-direction and \( v \) the velocity in y-direction (in \( ms^{-1} \)). \( g \) is the constant of gravity (in \( ms^{-2} \)). \( \nu \) is the effective turbulent viscosity (in \( m^2s^{-1} \)). By default the shallow water model neglects the viscous terms, but they can be enabled by setting the parameter ShallowWater.EnableViscousFlux = true
.
The source terms for bed slope \( \mathbf{S_b} \) and bottom friction \( \mathbf{S_f} \) are given as:
\[ \mathbf{S_b} = \begin{bmatrix} 0 \\ -gh \frac{\partial z}{\partial x} \\ -gh \frac{\partial z}{\partial y}\end{bmatrix}, \mathbf{S_f} = \begin{bmatrix} 0 \\ -\frac{\tau_{x}}{\rho} \\ -\frac{\tau_{y}}{\rho}\end{bmatrix}. \]
\( z \) is the bed surface (in \( m \)), \( \tau_{x} \) and \( \tau_{y} \) the bottom shear stress (in \( Nm^{-2} \)) in x- an y-direction, respectively. \( \rho \) is the water density (in \( kgm^{-3} \)). The bed slope source term \( \mathbf{S_b} \) is covered by the hydrostatic reconstruction within the flux computation and must therefore not be treated separately within the computation of the source terms. On the contrary, the bottom friction source term must be implemented in the problem (have a look at the shallow water example).
When using a fully implicit Euler time discretization, note the following: Large time step sizes (CFL > 1) can lead to a strong smearing of sharp fronts. This can be seen in the movement of fast traveling waves (e.g. dam break waves). Nevertheless, the fully implicit time discretization shows good results in cases where slowly moving waves are considered. Thus, the model is a good choice for simulating flow in rivers and channels, where the fully-implicit discretization allows large time steps and reduces the overall computation time drastically.
Namespaces | |
namespace | Dumux |
namespace | Dumux::Properties |
namespace | Dumux::Properties::TTag |
Type tag for numeric models. | |