A small package including a one-dimensional well-balanced Shallow Water Equations solver.
Project description
Shallow Water Equations Solver
This package provides a well-balanced solver for the one-dimensional Saint-Venant equations, based on the principles outlined in this paper.
Installation
The package is available through pip, and may be installed via:
pip install SWE_Solver
Main Usage
To utilize this package, you can call the plotSWE
function with the following parameters:
h, u = plotSWE(B, h0, u0, Nx, tEnd, timePoints, g=1, method='C')
Parameters:
- B (callable): Bottom topography function. This function defines the topographic profile and should take spatial coordinates as input and return the bottom elevation at those coordinates.
- h0 (array): Initial water height profile. This should be an array of length
Nx
, representing the initial water height at different spatial locations. - u0 (array): Initial water velocity profile. Similar to h0, this should be an array of length
Nx
, representing the initial water velocity at different spatial locations. - Nx (int): Number of spatial grid points.
- tEnd (float): End time of the simulation. The simulation starts at time t=0.
- timePoints (list): List of time points at which you want to visualize the results.
- g (float, optional): Gravitational constant. Default is
1
. - method (str, optional): Method selection (
'A'
,'B'
or'C'
). Default is'C'
.
Returns:
- h (array): Array containing the water height profile at the final time point.
- u (array): Array containing the water velocity profile at the final time point.
Pre-Coded Examples
A number of pre-coded examples are available through the library, through the function exampleSWE
.
h, u = exampleSWE(state="still_flat", method='C')
Parameters
- state (String): Name of the example. Has to be one of
"still_flat"
(Constant height, zero velocity, flat bottom),"still_tilted"
(Constant total height, zero velocity, tilted bottom),,"still_tilted_pert"
(Perturbed constant total height, perturbed zero velocity, tilted bottom),"moving_flat"
(Constant height, constant velocity, flat bottom),"moving_tilted"
(Constant total height, constant velocity, tilted bottom),"evolving_wave"
(Step function for height, constant discharge, flat bottom),"standing_wave"
(Final profile of"evolving_wave"
for method'C'
, representing an equilibrium),"standing_wave_pert"
(Final profile of"evolving_wave"
for method'C'
, with a perturbation),"forming_collision"
(Constant water height, positive velocity on the right, negative velocity on the left, flat bottom),"spike_flattening"
(Water height given by a Gaussian, zero velocity, flat bottom),"over_bump"
(Constant total water height, constant velocity, bottom given by a Gaussian). Defaults to"still_flat"
. - method (String): Name of the method used. Has to be one of
'A'
,'B'
,'C'
. Defaults to'C'
.
Returns
- h (array): Array containing the water height profile at the final time point.
- u (array): Array containing the water velocity profile at the final time point.
Example
from SWE_Solver import plotSWE
from math import sqrt
from scipy.special import erf
Nx = 50
B = lambda x: 1
f = lambda T: 1 + sqrt(3) / (1 - erf(-0.5 / 0.1)) * (erf((T - 0.5) / 0.1) - erf (-0.5 / 0.1))
h0 = [f(_/ (Nx-1)) for _ in range(Nx)]
u0 = [2.0 / h0[_] for _ in range(Nx)]
_ = plotSWE(B, h0, u0, Nx, tEnd=1.0, timePoints=[0.0, 0.1, 0.5, 1.0])
The above is equivalent to the simple example given by
from SWE_Solver import exampleSWE
_ = exampleSWE("evolving_wave", 'C')
In this example, we're using a spatial grid with 50 points, running the simulation up to t=1
seconds, and visualizing the results at times 0.0
, 0.1
, 0.5
and 1.0
seconds, with gravitational constant g=1
(default value) and using method='C'
(default value).
This produces the result in the following figure.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for SWE_Solver-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0b5fa5878f60c6c8a82b8a1331c00aaeaf4d08951b14978a1d5f9d07d2366a6 |
|
MD5 | 45689c61eeab81d170b68ab3df2effac |
|
BLAKE2b-256 | 26cbab2c20926bd8a0882b1fb49de0804e21f654ead51de6f4abe0f9bd7fd15f |