Flux related to the shallow water model.
More...
Flux related to the shallow water model.
|
template<class Scalar > |
RiemannSolution< Scalar > | Dumux::ShallowWater::exactRiemann (const Scalar dl, const Scalar dr, const Scalar ul, const Scalar ur, const Scalar vl, const Scalar vr, const Scalar grav, const Scalar s=0.0) |
| Exact Riemann solver for Shallow water equations. More...
|
|
template<class Scalar > |
static Scalar | Dumux::ShallowWater::fluxLimiterLET (const Scalar valueLeft, const Scalar valueRight, const Scalar upperH, const Scalar lowerH) |
| Flux limiter function to scale fluxes for small water depths. More...
|
|
template<class Scalar , class GlobalPosition > |
std::array< Scalar, 3 > | Dumux::ShallowWater::riemannProblem (const Scalar waterDepthLeft, const Scalar waterDepthRight, Scalar velocityXLeft, Scalar velocityXRight, Scalar velocityYLeft, Scalar velocityYRight, const Scalar bedSurfaceLeft, const Scalar bedSurfaceRight, const Scalar gravity, const GlobalPosition &nxy) |
| Construct Riemann Problem and solve it. More...
|
|
◆ exactRiemann()
template<class Scalar >
RiemannSolution< Scalar > Dumux::ShallowWater::exactRiemann |
( |
const Scalar |
dl, |
|
|
const Scalar |
dr, |
|
|
const Scalar |
ul, |
|
|
const Scalar |
ur, |
|
|
const Scalar |
vl, |
|
|
const Scalar |
vr, |
|
|
const Scalar |
grav, |
|
|
const Scalar |
s = 0.0 |
|
) |
| |
Exact Riemann solver for Shallow water equations.
This Riemann solver is described in the book "Shock-capturing methods for free-surface shallow flows" from Toro, 2001. We keep the notation for the variables after Toro.
- Parameters
-
dl | water depth on the left side |
dr | water depth on the right side |
ul | veloctiyX on the left side |
ur | velocityX on the right side |
vl | velocityY on the left side |
vr | velocityY on the right side |
grav | gravity constant |
s | sample point (default = 0 since x = 0 for flux computation) |
◆ fluxLimiterLET()
template<class Scalar >
static Scalar Dumux::ShallowWater::fluxLimiterLET |
( |
const Scalar |
valueLeft, |
|
|
const Scalar |
valueRight, |
|
|
const Scalar |
upperH, |
|
|
const Scalar |
lowerH |
|
) |
| |
|
static |
Flux limiter function to scale fluxes for small water depths.
This function acts like a kind of mobility, it limits the water flux for small water depths. The mobility depends on the left and right side state of a variable. The LET-Type function is described at https://en.wikipedia.org/wiki/Relative_permeability The LET-Parameters are fixed. The current parameters are set to a values to get a nice curve. They have no physical meaning.
- Template Parameters
-
Scalar | the scalar type for scalar physical quantities |
- Parameters
-
valueLeft | The value on the left side |
valueRight | The value on the right side |
upperH | Where to start the limit the function (mobility < 1) |
lowerH | Where the limit should reach zero (mobility < 0) |
◆ riemannProblem()
template<class Scalar , class GlobalPosition >
std::array< Scalar, 3 > Dumux::ShallowWater::riemannProblem |
( |
const Scalar |
waterDepthLeft, |
|
|
const Scalar |
waterDepthRight, |
|
|
Scalar |
velocityXLeft, |
|
|
Scalar |
velocityXRight, |
|
|
Scalar |
velocityYLeft, |
|
|
Scalar |
velocityYRight, |
|
|
const Scalar |
bedSurfaceLeft, |
|
|
const Scalar |
bedSurfaceRight, |
|
|
const Scalar |
gravity, |
|
|
const GlobalPosition & |
nxy |
|
) |
| |
Construct Riemann Problem and solve it.
Riemann Problem applies the hydrostatic reconstruction, uses the Riemann invariants to transform the two-dimensional problem to an one-dimensional problem and solves this new problem, and rotates the problem back. Further it applies an flux limiter for the water flux handle drying of elements. The correction of the bed slope surce terme leads to an non-symetric flux term at the interface for the momentum equations since DuMuX computes the fluxes twice from each side this does not matter.
So far we have only the exact Riemann solver, and the reconstruction after Audusse but further solvers and reconstructions ca be implemented.
- Parameters
-
waterDepthLeft | water depth on the left side |
waterDepthRight | water depth on the right side |
velocityXLeft | veloctiyX on the left side |
velocityXRight | velocityX on the right side |
velocityYLeft | velocityY on the left side |
velocityYRight | velocityY on the right side |
bedSurfaceLeft | surface of the bed on the left side |
bedSurfaceRight | surface of the bed on the right side |
gravity | gravity constant |
nxy | the normal vector |