Pyclaw Limiters¶
- clawpack.pyclaw.limiters.tvd.limit(num_eqn, wave, s, limiter, dtdx)¶
Apply a limiter to the waves
Function that limits the given waves using the methods contained in limiter. This is the vectorized version of the function acting on a row of waves at a time.
- Input:
wave - (ndarray(:,num_eqn,num_waves)) The waves at each interface
s - (ndarray(:,num_waves)) Speeds for each wave
- limiter - (
int
list) Array of typeint
determining which limiter to use
- limiter - (
- dtdx - (ndarray(:)) \(\Delta t / \Delta x\) ratio, used for CFL
dependent limiters
- Output:
(ndarray(:,num_eqn,num_waves)) - Returns the limited waves
- Version:
1.1 (2009-07-05)
clawpack.pyclaw.limiters.tvd
¶
Library of limiter functions to be applied to waves
This module contains all of the standard limiters found in clawpack. To use any of the limiters, use the function limit to limit the appropriate waves. Refer to each limiter and the function limit’s doc strings.
This is a list of the provided limiters and their corresponding method number, note that some of the limiters actually correspond to a more general function which can be controlled more directly. Refer to the limiter function and its corresponding documentation for details.
CFL Independent Limiters¶
minmod -
minmod_limiter()
superbee -
superbee_limiter()
van leer - \((r + |r|) / (1 + |r|)\)
mc -
mc_limiter()
Beam-warming - \(r\)
Frommm - \(1/2 (1 + r)\)
Albada 2 - \((r^2 + r) / (1 + r^2)\)
Albada 3 - \(1/2 (1+r) (1 - (|1-r|^3) / (1+|r|^3))\)
van Leer with Klein sharpening, k=2 -
van_leer_klein_sharpening_limiter()
CFL Dependent Limiters¶
Roe’s linear third order scheme - \(1 + (r-1) (1 + cfl) / 3\)
Arora-Roe (= limited version of the linear third order scheme) -
arora_roe()
Theta Limiter, theta=0.95 (safety on nonlinear waves) -
theta_limiter()
Theta Limiter, theta=0.75 -
theta_limiter()
Theta Limiter, theta=0.5 -
theta_limiter()
CFL-Superbee (Roe’s Ultrabee) -
cfl_superbee()
CFL-Superbee (Roe’s Ultrabee) with theta=0.95 (nonlinear waves) -
cfl_superbee_theta()
beta=2/3 limiter -
beta_limiter()
beta=2/3 limiter with theta=0.95 (nonlinear waves) -
beta_limiter()
Hyperbee -
hyperbee_limiter()
SuperPower -
superpower_limiter()
Cada-Torrilhon modified -
cada_torrilhon_limiter()
Cada-Torrilhon modified, version for nonlinear waves -
cada_torrilhon_limiter_nonlinear()
upper bound limiter (1st order) -
upper_bound_limiter()
- All limiters have the same function call signature:
- Input:
r - (ndarray(:))
cfl - (ndarray(:)) Local CFL number
- Output:
(ndarray(:)) -
Newer limiters are based on work done by Friedemann Kemm [kemm_2009], paper in review.
- Authors:
Kyle Mandli and Randy LeVeque (2008-08-21) Initial version
Kyle Mandli (2009-07-05) Added CFL depdendent limiters
- clawpack.pyclaw.limiters.tvd.arora_roe(r, cfl)¶
Arora-Roe limiter, limited version of the linear third order scheme
- clawpack.pyclaw.limiters.tvd.beta_limiter(r, cfl, theta=0.95, beta=0.6666666666666666)¶
Modification of CFL Superbee limiter with theta and beta parameters
- Additional Input:
theta
beta
- clawpack.pyclaw.limiters.tvd.cada_torrilhon_limiter(r, cfl, epsilon=0.001)¶
Cada-Torrilhon modified
- Additional Input:
epsilon =
- clawpack.pyclaw.limiters.tvd.cada_torrilhon_limiter_nonlinear(r, cfl)¶
Cada-Torrilhon modified, version for nonlinear waves
- clawpack.pyclaw.limiters.tvd.cfl_superbee(r, cfl)¶
CFL-Superbee (Roe’s Ultrabee) without theta parameter
- clawpack.pyclaw.limiters.tvd.cfl_superbee_theta(r, cfl, theta=0.95)¶
CFL-Superbee (Roe’s Ultrabee) with theta parameter
- clawpack.pyclaw.limiters.tvd.hyperbee_limiter(r, cfl)¶
Hyperbee
- clawpack.pyclaw.limiters.tvd.mc_limiter(r, cfl)¶
MC vectorized limiter
- clawpack.pyclaw.limiters.tvd.minmod_limiter(r, cfl)¶
Minmod vectorized limiter
- clawpack.pyclaw.limiters.tvd.superbee_limiter(r, cfl)¶
Superbee vectorized limiter
- clawpack.pyclaw.limiters.tvd.superpower_limiter(r, cfl, caut=1.0)¶
SuperPower limiter
- Additional input:
caut = Limiter parameter
- clawpack.pyclaw.limiters.tvd.theta_limiter(r, cfl, theta=0.95)¶
Theta limiter
- Additional Input:
theta =
- clawpack.pyclaw.limiters.tvd.upper_bound_limiter(r, cfl, theta=1.0)¶
Upper bound limiter (1st order)
- Additional Input:
theta =
- clawpack.pyclaw.limiters.tvd.van_leer_klein_sharpening_limiter(r, cfl)¶
van Leer with Klein sharpening, k=2