wolfhece.pyshields

Author: HECE - University of Liege, Pierre Archambeau Date: 2024

Copyright (c) 2024 University of Liege. All rights reserved.

This script and its content are protected by copyright law. Unauthorized copying or distribution of this file, via any medium, is strictly prohibited.

Module Contents

wolfhece.pyshields.RHO_PUREWATER = 1000.0[source]
wolfhece.pyshields.RHO_SEAWATER = 1025.0[source]
wolfhece.pyshields.RHO_SEDIMENT = 2650.0[source]
wolfhece.pyshields.KIN_VISCOSITY = 1e-06[source]
wolfhece.pyshields.GRAVITY = 9.81[source]
wolfhece.pyshields.BED_LOAD = 1[source]
wolfhece.pyshields.SUSPENDED_LOAD_50 = 2[source]
wolfhece.pyshields.SUSPENDED_LOAD_100 = 3[source]
wolfhece.pyshields.WASH_LOAD = 4[source]

Pierre Archambeau @date : 2022

Chezy : u = C (RJ)**.5 Strickler : C = K R**(1/6)

–> u = K R**(2/3) J**.5

en 2D : R = h

—> u = K h**(2/3) J**.5

J = u**2 / K**2 / h**(4/3)

mais aussi

J = f/D * u**2 /2 /g

avec D = 4h

—> J = f/(4h) *u**2 /2 /g –> tau = J * rho * h * g

Shields :

Theta = tau / ((rhom-rho) * g * d) Theta = tau / rho / ((s-1) * g * d) avec s = rhom/rho

Theta = J * h / ((s-1) * d)

Strickler :

J = u**2 / K**2 / h**(4/3) tau = J * rho * h * g

tau = (q/K)**2 / h**(7/3) * rho * g

Autres :

J = f/(4h) *u**2 /2 /g tau = J * rho * h * g

tau = f/8 * (q/h)**2 * rho

References:

Telemac-Mascaret, https://gitlab.pam-retd.fr/otm/telemac-mascaret/-/blob/main/sources/gaia/shields.f

Yalin, Ferraira da Silva (2001), Fluvial Processes, IAHR Monograph

Fredsoe, Jorgen and Deigaard Rolf. (1992). Mechanics of Coastal Sediment.

Sediment Transport. Advanced Series on Ocean Engineering - Vol. 3. World Scientific. Singapure.

Madsen, Ole S., Wood, William. (2002). Sediment Transport Outside the

Surf Zone. In: Vincent, L., and Demirbilek, Z. (editors), Coastal Engineering Manual, Part III, Combined wave and current bottom boundary layer flow, Chapter III-6, Engineer Manual 1110-2-1100, U.S. Army Corps of Engineers, Washington, DC.

Nielsen, Peter. (1992). Coastal Bottom Boundary Layers and

Sediment Transport. Advanced Series on Ocean Engineering - Vol. 4. World Scientific. Singapure.

Type:

@author

wolfhece.pyshields.get_sadim(d: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

s_adim = d**(3/2) * ((s-1) * g)**.5 / (4 * nu)

[-] = [m^1.5 ] * [m^.5 s^-1] / [m^2 s^-1]

wolfhece.pyshields.get_dstar(d: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

compute d*

wolfhece.pyshields.sadim2dstar(sadim: float) float[source]
wolfhece.pyshields.dstar2sadim(dstar: float) float[source]
wolfhece.pyshields.get_d_from_sadim(sadim: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

s_adim = d**(3/2) * ((s-1) * g)**.5 / (4 * nu)

[-] = [m^1.5 ] * [m^.5 s^-1] / [m^2 s^-1]

wolfhece.pyshields.get_d_from_dstar(dstar: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

d_star = d * (g * (s-1) / nu**2)**(1/3)

[-] = [m] * ([m s^-2] / [m^4 s^-2])^(1/3)

wolfhece.pyshields.get_psi_cr(s_adim: float) float[source]

https://nl.mathworks.com/matlabcentral/fileexchange/97447-modified-shields-diagram-and-criterion?tab=reviews

wolfhece.pyshields.get_psi_cr2(dstar: float) float[source]

http://docs.opentelemac.org/doxydocs/v8p2r0/html/shields_8f_source.html

wolfhece.pyshields.get_psi_cr3(dstar: float) float[source]

Fluvial Processes, IAHR 2001, pp 6-9

wolfhece.pyshields.get_shields_cr(d, rhom=RHO_SEDIMENT, rho=RHO_PUREWATER, which=2)[source]
Parameters:
  • d – grain diameter [m]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

  • which – which formula to use (default 2) – see funcs = [(get_sadim, get_psi_cr), (get_dstar, get_psi_cr2), (get_dstar, get_psi_cr3)]

Returns:

[critical_shear_velocity, tau_cr, xadim_val, psicr]

Example:

[critical_shear_velocity, tau_cr, xadim_val, psicr] = get_shields_cr(0.2E-3, 2650)

wolfhece.pyshields._poly(x: float) float[source]
wolfhece.pyshields._dpolydx(x: float) float[source]

derivative of _poly

wolfhece.pyshields.get_sadim_min() float[source]
wolfhece.pyshields.get_tau_from_psiadim(psiadim, d: float, rhom: float = 2650, rho: float = RHO_PUREWATER) float[source]
wolfhece.pyshields.get_d_min(rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]
wolfhece.pyshields._d_cr(x: float, tau_obj: float, rhom: float, rho: float, xadim: float, yadim: float) float[source]

Equation to solve to get d_cr

wolfhece.pyshields._get_d_cr(tau_cr, rhom=RHO_SEDIMENT, rho=RHO_PUREWATER, which=2) float[source]

Critical diameter d_cr for Shields criterion

Parameters:
  • tau_cr – critical shear stress [Pa]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

  • which – which formula to use (default 2) – see funcs = [(get_sadim, get_psi_cr), (get_dstar, get_psi_cr2), (get_dstar, get_psi_cr3)]

wolfhece.pyshields.get_d_cr(q: float, h: float, K: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER, method='brenth', which=2, friction_law: Literal['Strickler', 'Colebrook'] = 'Strickler') list[float][source]
Diamètre critique d’emportement par :
  • Shields

  • Izbach

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

  • method – method to solve the equation (default ‘brenth’)

  • which – which formula to use (default 2) – see funcs = [(get_sadim,get_psi_cr),(get_dstar,get_psi_cr2),(get_dstar,get_psi_cr3)]

wolfhece.pyshields.get_settling_vel(d: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

Vitesse de chute

Parameters:
  • d – grain diameter [m]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

wolfhece.pyshields.get_Rouse(d: float, q: float, h: float, K: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER) float[source]

Vitesse de chute

Parameters:
  • d – grain diameter [m]

  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

wolfhece.pyshields._get_Rouse(d: float, q: float, h: float, K: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER, frac: float = 50) float[source]

Settling velocity function – used in root_scalar

Parameters:
  • d – grain diameter [m]

  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

wolfhece.pyshields.get_transport_mode(d: float, q: float, h: float, K: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER)[source]

Transport mode

return in [BED_LOAD, SUSPENDED_LOAD_50, SUSPENDED_LOAD_100, WASH_LOAD]

Parameters:
  • d – grain diameter [m]

  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

wolfhece.pyshields.get_d_cr_susp(q: float, h: float, K: float, rhom: float = RHO_SEDIMENT, rho: float = RHO_PUREWATER, method='brenth', which=50) float[source]

Diamètre critique d’emportement par suspension à 50% –> cf Rouse 1.2

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

wolfhece.pyshields.shieldsdia_sadim(s_psicr=None, dstar_psicr=None, figax=None) tuple[matplotlib.pyplot.Figure, matplotlib.pyplot.Axes][source]

Plot Shields diagram with sadim as x-axis

Parameters:
  • s_psicr – tuple (S, psicr) for a specific point to plot on the diagram

  • dstar_psicr – tuple (dstar, psicr) for a specific point to plot on the diagram

  • figax – tuple (fig, ax) to plot on a specific figure and axes

wolfhece.pyshields.shieldsdia_dstar(s_psicr=None, dstar_psicr=None, figax=None) tuple[matplotlib.pyplot.Figure, matplotlib.pyplot.Axes][source]

Plot Shields diagram with dstar as x-axis

Parameters:
  • s_psicr – tuple (S, psicr) for a specific point to plot on the diagram

  • dstar_psicr – tuple (dstar, psicr) for a specific point to plot on the diagram

  • figax – tuple (fig, ax) to plot on a specific figure and axes

wolfhece.pyshields.shieldsdia_dim(figax=None) tuple[matplotlib.pyplot.Figure, matplotlib.pyplot.Axes][source]

Plot Shields diagram with dimensional values

wolfhece.pyshields.get_friction_slope_2D_Manning(q: float, h: float, n: float) float[source]

Compute friction slope j for 2D flow with Manning/Strickler friction law

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • n – Manning friction coefficient [m^{-1/3}.s]

wolfhece.pyshields.get_friction_slope_2D_Strickler(q: float, h: float, K: float) float[source]

Compute friction slope j for 2D flow with Strickler friction law

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m^{1/3}/s]

wolfhece.pyshields.get_friction_slope_2D_Colebrook(q: float, h: float, K: float) float[source]

Compute friction slope j for 2D flow with Colebrook-White friction law

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • K – height of roughness [m] - will be used to compute k/D or k/(4h) in 2D flow

wolfhece.pyshields.get_shear_velocity_2D_Manning(q: float, h: float, n: float) float[source]

Compute shear velocity u_* for 2D flow with Manning/Strickler friction law

Parameters:
  • j – friction slope [-]

  • h – water depth [m]

  • q – discharge [m3/s]

  • n – Manning friction coefficient [m-1/3.s]

wolfhece.pyshields.get_shear_velocity_2D_Colebrook(q: float, h: float, K: float) float[source]

Compute shear velocity u_* for 2D flow with Colebrook-White friction law

Parameters:
  • j – friction slope [-]

  • h – water depth [m]

  • q – discharge [m3/s]

  • K – Colebrook-White friction coefficient [m]

wolfhece.pyshields.get_Shields_2D_Manning(s: float, d: float, q: float, h: float, n: float) float[source]

Compute Shields dimensionless parameter for 2D flow with Manning/Strickler friction law

Parameters:
  • s – sediment density / water density [-]

  • d – sediment diameter [m]

  • q – discharge [m3/s]

  • h – water depth [m]

  • n – Manning friction coefficient [m-1/3.s]

See also get_Shields_2D_Strickler

wolfhece.pyshields.get_Shields_2D_Strickler(s: float, d: float, q: float, h: float, K: float) float[source]

Compute Shields dimensionless parameter for 2D flow with Manning/Strickler friction law

Parameters:
  • s – sediment density / water density [-]

  • d – sediment diameter [m]

  • q – discharge [m3/s]

  • h – water depth [m]

  • K – Strickler friction coefficient [m1/3/s]

See also get_Shields_2D_Manning

wolfhece.pyshields.izbach_d_cr(q: float, h: float, rhom: float = 2650, rho: float = RHO_PUREWATER, method='ridder') float[source]

https://en.wikipedia.org/wiki/Izbash_formula

u_c/ ((s-1) * g * d)**.5 = 1.7

avec :

(s-1) = (rho_m - rho) / rho u_c = 85% u_moyen)

–> d = u_c**2 / ((s-1) * g) / 1.7**2

–> d = (0.85 * q/h)**2 / ((s-1) * g) / 1.7**2

Parameters:
  • q – discharge [m3/s]

  • h – water depth [m]

  • rhom – sediment density [kg/m3]

  • rho – water density [kg/m3]

  • method – method to solve the equation (default ‘ridder’)