# TransportLengthHillslopeDiffuser: Hillslope diffusion component in the style of Carretier et al. (2016), and Davy and Lague (2009)#

class TransportLengthHillslopeDiffuser(*args, **kwds)[source]#

Bases: Component

Transport length hillslope diffusion.

Hillslope diffusion component in the style of Carretier et al. (2016, ESurf), and Davy and Lague (2009)

\begin{align}\begin{aligned}\frac{dz}{dt} = -E + D (+ U)\\D = \frac{q_s}{L}\\E = k S\\L = \frac{dx}{(1 - (S / S_c)^2}\end{aligned}\end{align}

Works on regular raster-type grid (RasterModelGrid, dx=dy). To be coupled with FlowDirectorSteepest for the calculation of steepest slope at each timestep.

Component written by Margaux Mouchene, 2017

Parameters:
• grid (ModelGrid) – Landlab ModelGrid object

• erodibility (float) – Erodibility coefficient [L/T]

• slope_crit (float (default=1.)) – Critical slope [L/L]

Examples

>>> import numpy as np
>>> from landlab import RasterModelGrid
>>> from landlab.components import FlowDirectorSteepest
>>> from landlab.components import TransportLengthHillslopeDiffuser


Define grid and initial topography:

• 3x5 grid

• east and west boundaries are open, north and south are closed

• Initial topography is plane at base level on the boundaries and 1m of elevation elsewhere (core)

>>> mg = RasterModelGrid((5, 5))
>>> mg.set_closed_boundaries_at_grid_edges(False, True, False, True)
>>> z = [
...     [0.0, 0.0, 0.0, 0.0, 0.0],
...     [0.0, 1.0, 1.0, 1.0, 0.0],
...     [0.0, 1.0, 1.0, 1.0, 0.0],
...     [0.0, 1.0, 1.0, 1.0, 0.0],
...     [0.0, 0.0, 0.0, 0.0, 0.0],
... ]
>>> _ = mg.add_field("topographic__elevation", z, at="node")


Instantiate Flow director (steepest slope type) and TL hillslope diffuser

>>> fdir = FlowDirectorSteepest(mg)
>>> tl_diff = TransportLengthHillslopeDiffuser(
...     mg, erodibility=0.001, slope_crit=0.6
... )


Run the components for ten short timepsteps

>>> for t in range(10):
...     fdir.run_one_step()
...     tl_diff.run_one_step(1.0)
...


Check final topography

>>> np.allclose(
...     mg.at_node["topographic__elevation"].reshape(mg.shape),
...     [
...         [0.0, 0.0, 0.0, 0.0, 0.0],
...         [0.0, 0.96175283, 0.99982519, 0.96175283, 0.0],
...         [0.0, 0.96175283, 0.99982519, 0.96175283, 0.0],
...         [0.0, 0.96175283, 0.99982519, 0.96175283, 0.0],
...         [0.0, 0.0, 0.0, 0.0, 0.0],
...     ],
... )
True


References

Required Software Citation(s) Specific to this Component

None Listed

Carretier, S., Martinod, P., Reich, M., Godderis, Y. (2016). Modelling sediment clasts transport during landscape evolution. Earth Surface Dynamics 4(1), 237-251. https://dx.doi.org/10.5194/esurf-4-237-2016

Davy, P., Lague, D. (2009). Fluvial erosion/transport equation of landscape evolution models revisited. Journal of Geophysical Research 114(F3), F03007. https://dx.doi.org/10.1029/2008jf001146

Initialize Diffuser.

Parameters:
• grid (ModelGrid) – Landlab ModelGrid object

• erodibility (float) – Erodibility coefficient [L/T]

• slope_crit (float (default=1.)) – Critical slope [L/L]

__init__(grid, erodibility=0.001, slope_crit=1.0)[source]#

Initialize Diffuser.

Parameters:
• grid (ModelGrid) – Landlab ModelGrid object

• erodibility (float) – Erodibility coefficient [L/T]

• slope_crit (float (default=1.)) – Critical slope [L/L]

run_one_step(dt)[source]#

Advance transport length-model hillslope diffusion component by one time step of size dt and tests for timestep stability.

Parameters:

dt (float (time)) – The imposed timestep.

tldiffusion(dt)[source]#

Calculate hillslope diffusion for a time period ‘dt’.

Parameters:
• grid (ModelGrid) – Landlab ModelGrid object

• dt (float (time)) – The imposed timestep.