SWE
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Public Member Functions
solver::FWave< T > Class Template Reference

#include <FWave.hpp>

Inheritance diagram for solver::FWave< T >:
solver::WavePropagation< T >

List of all members.

Public Member Functions

 FWave (T i_dryTolerance=(T) 0.01, T i_gravity=(T) 9.81, T i_zeroTolerance=(T) 0.000000001)
void computeNetUpdates (const T &i_hLeft, const T &i_hRight, const T &i_huLeft, const T &i_huRight, const T &i_bLeft, const T &i_bRight, T &o_hUpdateLeft, T &o_hUpdateRight, T &o_huUpdateLeft, T &o_huUpdateRight, T &o_maxWaveSpeed)
void computeNetUpdatesHybrid (const T &i_hLeft, const T &i_hRight, const T &i_huLeft, const T &i_huRight, const T &i_bLeft, const T &i_bRight, const T &i_uLeft, const T &i_uRight, const T i_waveSpeeds[2], T &o_hUpdateLeft, T &o_hUpdateRight, T &o_huUpdateLeft, T &o_huUpdateRight, T &o_maxWaveSpeed)

Detailed Description

template<typename T>
class solver::FWave< T >

FWave Riemann Solver for the Shallow Water Equations.

T should be double or float.


Constructor & Destructor Documentation

template<typename T>
solver::FWave< T >::FWave ( i_dryTolerance = (T) 0.01,
i_gravity = (T) 9.81,
i_zeroTolerance = (T) 0.000000001 
) [inline]

Constructor of the f-wave solver with optional parameters.

Parameters:
i_dryTolerancenumerical definition of "dry".
i_gravitygravity constant.
i_zeroTolerancenumerical definition of zero.

Member Function Documentation

template<typename T>
void solver::FWave< T >::computeNetUpdates ( const T &  i_hLeft,
const T &  i_hRight,
const T &  i_huLeft,
const T &  i_huRight,
const T &  i_bLeft,
const T &  i_bRight,
T &  o_hUpdateLeft,
T &  o_hUpdateRight,
T &  o_huUpdateLeft,
T &  o_huUpdateRight,
T &  o_maxWaveSpeed 
) [inline, virtual]

Compute net updates for the cell on the left/right side of the edge. This is the default method of a standalone f-Wave solver.

Please note: In the case of a Dry/Wet- or Wet/Dry-boundary, wall boundary conditions will be set. The f-Wave solver is not positivity preserving. -> You as the programmer have to take care about "negative water heights"!

Parameters:
i_hLeftheight on the left side of the edge.
i_hRightheight on the right side of the edge.
i_huLeftmomentum on the left side of the edge.
i_huRightmomentum on the right side of the edge.
i_bLeftbathymetry on the left side of the edge.
i_bRightbathymetry on the right side of the edge.
o_hUpdateLeftwill be set to: Net-update for the height of the cell on the left side of the edge.
o_hUpdateRightwill be set to: Net-update for the height of the cell on the right side of the edge.
o_huUpdateLeftwill be set to: Net-update for the momentum of the cell on the left side of the edge.
o_huUpdateRightwill be set to: Net-update for the momentum of the cell on the right side of the edge.
o_maxWaveSpeedwill be set to: Maximum (linearized) wave speed -> Should be used in the CFL-condition.

wave speeds of the f-waves

Implements solver::WavePropagation< T >.

template<typename T>
void solver::FWave< T >::computeNetUpdatesHybrid ( const T &  i_hLeft,
const T &  i_hRight,
const T &  i_huLeft,
const T &  i_huRight,
const T &  i_bLeft,
const T &  i_bRight,
const T &  i_uLeft,
const T &  i_uRight,
const T  i_waveSpeeds[2],
T &  o_hUpdateLeft,
T &  o_hUpdateRight,
T &  o_huUpdateLeft,
T &  o_huUpdateRight,
T &  o_maxWaveSpeed 
) [inline]

Compute net updates for the cell on the left/right side of the edge. This is an expert method, because a lot of (numerical-)knowledge about the problem is assumed/has to be provided. It is the f-Wave entry point for the hybrid solver, which combines the "simple" F-Wave approach with the more complex Augmented Riemann Solver.

wetDryState is assumed to be WetWet.

Parameters:
i_hLeftheight on the left side of the edge.
i_hRightheight on the right side of the edge.
i_huLeftmomentum on the left side of the edge.
i_huRightmomentum on the right side of the edge.
i_bLeftbathymetry on the left side of the edge.
i_bRightbathymetry on the right side of the edge.
i_uLeftvelocity on the left side of the edge.
i_uRightvelocity on the right side of the edge.
waveSpeedsspeeds of the linearized waves (eigenvalues). A hybrid solver will typically provide its own values.
o_hUpdateLeftwill be set to: Net-update for the height of the cell on the left side of the edge.
o_hUpdateRightwill be set to: Net-update for the height of the cell on the right side of the edge.
o_huUpdateLeftwill be set to: Net-update for the momentum of the cell on the left side of the edge.
o_huUpdateRightwill be set to: Net-update for the momentum of the cell on the right side of the edge.
o_maxWaveSpeedwill be set to: Maximum (linearized) wave speed -> Should be used in the CFL-condition.

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends