Peano
Loading...
Searching...
No Matches
applications::exahype2::swe Namespace Reference

Namespaces

namespace  frictionlaws
 

Enumerations

enum class  WetDryState {
  DryDry , WetWet , WetDryInundation , WetDryWall ,
  WetDryWallInundation , DryWetInundation , DryWetWall , DryWetWallInundation
}
 

Functions

template<int NumberOfDofs, int NumberOfUnknowns, int NumberOfAuxiliaryVariables>
static GPUCallableMethod void computeFirstDerivatives (double *const __restrict__ oldQWithHalo) InlineMethod
 Partial derivative calculation:
 
template<int NumberOfDofs, int NumberOfUnknowns, int NumberOfAuxiliaryVariables>
static GPUCallableMethod void extrapolateHalo (double *const __restrict__ oldQWithHalo) InlineMethod
 
static GPUCallableMethod double fWave (const double *const __restrict__ QR, const double *const __restrict__ QL, const double *const __restrict__ FR, const double *const __restrict__ FL, const double *const __restrict__ LR, const double *const __restrict__ LL, const tarch::la::Vector< Dimensions, double > &xR, const tarch::la::Vector< Dimensions, double > &xL, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ APDQ, double *const __restrict__ AMDQ) InlineMethod
 F-Wave Riemann Solver for the Shallow Water Equation.
 
static GPUCallableMethod double hllem (const double *const __restrict__ QR, const double *const __restrict__ QL, const double *const __restrict__ FR, const double *const __restrict__ FL, const double *const __restrict__ LR, const double *const __restrict__ LL, const tarch::la::Vector< Dimensions, double > &xR, const tarch::la::Vector< Dimensions, double > &xL, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ APDQ, double *const __restrict__ AMDQ) InlineMethod
 An new formulation of the HLLEM Riemann solver for the Shallow Water Equation with support for inundation.
 
static GPUCallableInlineMethod void eigenvalues (const double *const __restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ L) InlineMethod
 
static GPUCallableInlineMethod double maxEigenvalue (const double *const __restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal) InlineMethod
 
static GPUCallableInlineMethod void maxEigenvalue (const double *const __restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ maxEigenvalue) InlineMethod
 
static GPUCallableInlineMethod void flux (const double *const __restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ F) InlineMethod
 
static GPUCallableInlineMethod void nonconservativeProduct (const double *const __restrict__ Q, const double *const __restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ BTimesDeltaQ) InlineMethod
 

Enumeration Type Documentation

◆ WetDryState

Enumerator
DryDry 

Both cells are dry.

WetWet 

Both cells are wet.

WetDryInundation 

1st cell: wet, 2nd cell: dry.

1st cell lies higher than the 2nd one.

WetDryWall 

1st cell: wet, 2nd cell: dry.

1st cell lies lower than the 2nd one. Momentum is not large enough to overcome the difference.

WetDryWallInundation 

1st cell: wet, 2nd cell: dry.

1st cell lies lower than the 2nd one. Momentum is large enough to overcome the difference.

DryWetInundation 

1st cell: dry, 2nd cell: wet.

1st cell lies lower than the 2nd one.

DryWetWall 

1st cell: dry, 2nd cell: wet.

1st cell lies higher than the 2nd one. Momentum is not large enough to overcome the difference.

DryWetWallInundation 

1st cell: dry, 2nd cell: wet.

1st cell lies higher than the 2nd one. Momentum is large enough to overcome the difference.

Definition at line 6 of file WetDryState.h.

Function Documentation

◆ computeFirstDerivatives()

template<int NumberOfDofs, int NumberOfUnknowns, int NumberOfAuxiliaryVariables>
static GPUCallableMethod void applications::exahype2::swe::computeFirstDerivatives ( double *const __restrict__  oldQWithHalo)
static

Partial derivative calculation:

Backward difference for single derivatives. Central difference for double derivatives.

Only numerator of the finite difference scheme is calculated here.

The division by the denominator takes place in the ncp function after retrieval from the average value.

For single derivatives, one can change the numerical scheme to forward, central or backward by using appropriate neighbour cell values defined above. For double derivatives, only central difference can be used with the variables defined above.

◆ eigenvalues()

static GPUCallableInlineMethod void applications::exahype2::swe::eigenvalues ( const double *const __restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  L 
)
static

◆ extrapolateHalo()

template<int NumberOfDofs, int NumberOfUnknowns, int NumberOfAuxiliaryVariables>
static GPUCallableMethod void applications::exahype2::swe::extrapolateHalo ( double *const __restrict__  oldQWithHalo)
static

◆ flux()

static GPUCallableInlineMethod void applications::exahype2::swe::flux ( const double *const __restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  F 
)
static

◆ fWave()

static GPUCallableMethod double applications::exahype2::swe::fWave ( const double *const __restrict__  QR,
const double *const __restrict__  QL,
const double *const __restrict__  FR,
const double *const __restrict__  FL,
const double *const __restrict__  LR,
const double *const __restrict__  LL,
const tarch::la::Vector< Dimensions, double > &  xR,
const tarch::la::Vector< Dimensions, double > &  xL,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  APDQ,
double *const __restrict__  AMDQ 
)
static

F-Wave Riemann Solver for the Shallow Water Equation.

Note: This solver does not support inundation. For dry cells, we assume an infinitely high solid wall at the shore-line, which is equivalent to reflecting boundary conditions. Thus no water is able to pass the shoreline, and we have to assure that the particle velocity at the boundary is zero.

Literature:

@article{bale2002wave, title={A wave propagation method for conservation laws and balance laws with spatially varying flux functions}, author={Bale, D.S. and LeVeque, R.J. and Mitran, S. and Rossmanith, J.A.}, journal={SIAM Journal on Scientific Computing}, volume={24}, number={3}, pages={955–978}, year={2002}, publisher={Citeseer}}

@book{leveque2002finite, Author = {LeVeque, R. J.}, Date-Added = {2011-09-13 14:09:31 +0000}, Date-Modified = {2011-10-31 09:46:40 +0000}, Publisher = {Cambridge University Press}, Title = {Finite Volume Methods for Hyperbolic Problems}, Volume = {31}, Year = {2002}}

@webpage{levequeclawpack, Author = {LeVeque, R. J.}, Lastchecked = {January, 05, 2011}, Title = {Clawpack Sofware}, Url = {https://github.com/clawpack/clawpack-4.x/blob/master/geoclaw/2d/lib}}

◆ hllem()

static GPUCallableMethod double applications::exahype2::swe::hllem ( const double *const __restrict__  QR,
const double *const __restrict__  QL,
const double *const __restrict__  FR,
const double *const __restrict__  FL,
const double *const __restrict__  LR,
const double *const __restrict__  LL,
const tarch::la::Vector< Dimensions, double > &  xR,
const tarch::la::Vector< Dimensions, double > &  xL,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  APDQ,
double *const __restrict__  AMDQ 
)
static

An new formulation of the HLLEM Riemann solver for the Shallow Water Equation with support for inundation.

Literature:

@article{DUMBSER2016275, title = {A new efficient formulation of the HLLEM Riemann solver for general conservative and non-conservative hyperbolic systems}, journal = {Journal of Computational Physics}, volume = {304}, pages = {275-319}, year = {2016}, issn = {0021-9991}, doi = {https://doi.org/10.1016/j.jcp.2015.10.014}, url = {https://www.sciencedirect.com/science/article/pii/S0021999115006786}, author = {Michael Dumbser and Dinshaw S. Balsara}}

@article{KURGANOV, title = {A Second-Order Well-Balanced Positivity Preserving Central-Upwind Scheme for the Saint-Venant System}, year = {2007}, month = {03}, pages = {}, volume = {5}, journal = {Communications in mathematical sciences}, author = {Kurganov, Alexander and Petrova, G.}, doi = {10.4310/CMS.2007.v5.n1.a6}}

◆ maxEigenvalue() [1/2]

static GPUCallableInlineMethod double applications::exahype2::swe::maxEigenvalue ( const double *const __restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal 
)
static

◆ maxEigenvalue() [2/2]

static GPUCallableInlineMethod void applications::exahype2::swe::maxEigenvalue ( const double *const __restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  maxEigenvalue 
)
static

◆ nonconservativeProduct()

static GPUCallableInlineMethod void applications::exahype2::swe::nonconservativeProduct ( const double *const __restrict__  Q,
const double *const __restrict__  deltaQ,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const double  t,
const double  dt,
const int  normal,
double *const __restrict__  BTimesDeltaQ 
)
static