class BasicSa

# Model BasicSa¶

terrainbento BasicSa model program.

Erosion model using depth-dependent linear diffusion with a soil layer, basic stream power, and discharge proportional to drainage area.

Landlab components used:
class BasicSa(clock, grid, m_sp=0.5, n_sp=1.0, water_erodibility=0.0001, regolith_transport_parameter=0.1, soil_production__maximum_rate=0.001, soil_production__decay_depth=0.5, soil_transport_decay_depth=0.5, **kwargs)[source]

BasicSa model program.

This model program explicitly resolves a soil layer. This soil layer is produced by weathering that decays exponentially with soil thickness and hillslope transport is soil-depth dependent. Given a spatially varying soil thickness $$H$$ and a spatially varying bedrock elevation $$\eta_b$$, model BasicSa evolves a topographic surface described by $$\eta$$ with the following governing equations:

\begin{align}\begin{aligned}\eta = \eta_b + H\\\frac{\partial H}{\partial t} = P_0 \exp (-H/H_s) - \delta (H) K A^{M} S^{N} - \nabla q_h\\\frac{\partial \eta_b}{\partial t} = -P_0 \exp (-H/H_s) - (1 - \delta (H) ) K Q^{m} S^{N}\\q_h = -D H^* \left[1-\exp \left( -\frac{H}{H_0} \right) \right] \nabla \eta\end{aligned}\end{align}

where $$Q$$ is the local stream discharge, $$S$$ is the local slope, $$m$$ and $$n$$ are the discharge and slope exponent parameters, $$K$$ is the erodibility by water, $$D$$ is the regolith transport parameter, $$H$$ is the regolith thickness, $$H_s$$ is the sediment production decay depth, $$P_0$$ is the maximum sediment production rate, and $$H_0$$ is the sediment transport decay depth. $$q_s$$ represents the hillslope sediment flux per unit width.

The function $$\delta (H)$$ is used to indicate that water erosion will act on soil where it exists, and on the underlying lithology where soil is absent. To achieve this, $$\delta (H)$$ is defined to equal 1 when $$H > 0$$ (meaning soil is present), and 0 if $$H = 0$$ (meaning the underlying parent material is exposed).

Refer to Barnhart et al. (2019) Table 5 for full list of parameter symbols, names, and dimensions.

The following at-node fields must be specified in the grid:
• topographic__elevation

• soil__depth

__init__(clock, grid, m_sp=0.5, n_sp=1.0, water_erodibility=0.0001, regolith_transport_parameter=0.1, soil_production__maximum_rate=0.001, soil_production__decay_depth=0.5, soil_transport_decay_depth=0.5, **kwargs)[source]
Parameters
• clock (terrainbento Clock instance) –

• grid (landlab model grid instance) – The grid must have all required fields.

• m_sp (float, optional) – Drainage area exponent ($$m$$). Default is 0.5.

• n_sp (float, optional) – Slope exponent ($$n$$). Default is 1.0.

• water_erodibility (float, optional) – Water erodibility ($$K$$). Default is 0.0001.

• regolith_transport_parameter (float, optional) – Regolith transport efficiency ($$D$$). Default is 0.1.

• soil_production__maximum_rate (float, optional) – Maximum rate of soil production ($$P_{0}$$). Default is 0.001.

• soil_production__decay_depth (float, optional) – Decay depth for soil production ($$H_{s}$$). Default is 0.5.

• soil_transport_decay_depth (float, optional) – Decay depth for soil transport ($$H_{0}$$). Default is 0.5.

• **kwargs – Keyword arguments to pass to ErosionModel. Importantly these arguments specify the precipitator and the runoff generator that control the generation of surface water discharge ($$Q$$).

Returns

BasicSa

Return type

model object

Examples

This is a minimal example to demonstrate how to construct an instance of model BasicSa. For more detailed examples, including steady-state test examples, see the terrainbento tutorials.

To begin, import the model class.

>>> from landlab import RasterModelGrid
>>> from landlab.values import random
>>> from terrainbento import Clock, BasicSa
>>> clock = Clock(start=0, stop=100, step=1)
>>> grid = RasterModelGrid((5,5))
>>> _ = random(grid, "topographic__elevation")
>>> _ = random(grid, "soil__depth")


Construct the model.

>>> model = BasicSa(clock, grid)


Running the model with model.run() would create output, so here we will just run it one step.

>>> model.run_one_step(1.)
>>> model.model_time
1.0

run_one_step(step)[source]

Advance model BasicSa for one time-step of duration step.

The run_one_step method does the following:

1. Creates rain and runoff, then directs and accumulates flow.

2. Assesses the location, if any, of flooded nodes where erosion should not occur.

3. Assesses if a PrecipChanger is an active boundary handler and if so, uses it to modify the erodibility by water.

4. Calculates detachment-limited erosion by water.

5. Produces soil and calculates soil depth with exponential weathering.

6. Calculates topographic change by depth-dependent linear diffusion.

7. Finalizes the step using the ErosionModel base class function finalize__run_one_step. This function updates all boundary handlers handlers by step and increments model time by step.

Parameters

step (float) – Increment of time for which the model is run.

main()[source]

Executes model.