landlab.components.bedrock_landslider.bedrock_landslider

Grid-based simulation of bedrock landslides.

Benjamin Campforts

class BedrockLandslider[source]

Bases: Component

Calculate the location and magnitude of episodic bedrock landsliding.

Landlab component that calculates the location and magnitude of episodic bedrock landsliding following the Cullman criterion. See the publication:

Campforts B., Shobe C.M., Steer P., Vanmaercke M., Lague D., Braun J. (2020) HyLands 1.0: a hybrid landscape evolution model to simulate the impact of landslides and landslide-derived sediment on landscape evolution. Geosci Model Dev: 13(9):3863–86. https://dx.doi.org/10.5194/esurf-6-1-2018

Campforts, B., Shobe, C. M., Overeem, I., & Tucker, G. E. (2022). The Art of Landslides: How Stochastic Mass Wasting Shapes Topography and Influences Landscape Dynamics. Journal of Geophysical Research: Earth Surface, 127(8), 1–16. https://doi.org/10.1029/2022JF006745

Examples

>>> import numpy as np
>>> from numpy import testing
>>> from landlab import RasterModelGrid
>>> from landlab.components import PriorityFloodFlowRouter, BedrockLandslider

Make a RasterModelGrid and create a plateau.

  • 5x5 grid

  • Initial topography is set to plateau value of 10

>>> mg = RasterModelGrid((5, 5), xy_spacing=1.0)
>>> z = mg.add_zeros("topographic__elevation", at="node")
>>> s = mg.add_zeros("soil__depth", at="node")
>>> b = mg.add_zeros("bedrock__elevation", at="node")

Make plateau at 10 m

>>> b += 10

Lower boundary cell to 0

>>> b[2] = 0
>>> z[:] = b + s

Instantiate the PriorityFloodFlowRouter for flow accumulation and the BedrockLandslider

>>> fd = PriorityFloodFlowRouter(
...     mg,
...     separate_hill_flow=True,
...     suppress_out=True,
... )
>>> hy = BedrockLandslider(mg, landslides_return_time=1)

Run the flow director and BedrockLandslider for one timestep

>>> fd.run_one_step()
>>> vol_suspended_sediment_yield, volume_leaving = hy.run_one_step(dt=1)

After one timestep, we can predict exactly where the landslide will occur. The return time is set to 1 year so that probability for sliding is 100%. The angle of internal friction is 1 m/m, the topographical gradient is 10 m/m. At cardinal cells, the sliding plane will be at (1 + 10) / 2 = 5.5 m/m. With a dx of 1, the cardinal cell next to the critical sliding node must be 5.5 m and the diagonal one at 5.5 * sqrt(2) = 7.8 m

>>> testing.assert_almost_equal(
...     [5.5 * np.sqrt(2), 5.5, 5.5 * np.sqrt(2)], z[6:9], decimal=5
... )

References

Required Software Citation(s) Specific to this Component

Campforts B., Shobe C.M., Steer P., Vanmaercke M., Lague D., Braun J. (2020) BedrockLandslider 1.0: a hybrid landscape evolution model to simulate the impact of landslides and landslide-derived sediment on landscape evolution. Geosci Model Dev: 13(9):3863–86. https://dx.doi.org/10.5194/esurf-6-1-2018

Additional References

None Listed

Initialize the BedrockLandslider model.

Parameters:
  • grid (ModelGrid) – Landlab ModelGrid object

  • angle_int_frict (float, optional) – Materials angle of internal friction in [m/m]

  • threshold_slope (float, optional) – Threshold slope used in non-linear deposition scheme [m/m] Default value is set to angle_int_frict if not specified

  • cohesion_eff (float, optional) – Effective cohesion of material [m L^-1 T^-2].

  • landslides_return_time (float, optional) – Return time for stochastic landslide events to occur

  • rho_r (float, optional) – Bulk density rock [m L^-3].

  • fraction_fines_LS (float) – Fraction of permanently suspendable fines in bedrock Value must be between 0 and 1 [-].

  • phi (float, optional) – Sediment porosity, value must be between 0 and 1 [-].

  • max_pixelsize_landslide (int , optional) – Maximum size for landslides in number of pixels

  • verbose_landslides (bool , optional) – Print output as number of simulated landslides per timestep

  • seed (float , optional) – Provide seed to set stochastic model. If not provided, seed is set to 2021. Provide None to keep current seed.

  • landslides_on_boundary_nodes (bool, optional) – Allow landslides to initiate (critical node) and extend over boundary nodes.

  • critical_sliding_nodes (list, optional) – Provide list with critical nodes where landslides have to initiate This cancels the stochastic part of the algorithm and allows the user to form landslides at the provided critical nodes.

__init__(grid, angle_int_frict=1.0, threshold_slope=None, cohesion_eff=10000.0, landslides_return_time=100000.0, rho_r=2700, grav=9.81, fraction_fines_LS=0, phi=0, max_pixelsize_landslide=1000000000.0, seed=2021, verbose_landslides=False, landslides_on_boundary_nodes=True, critical_sliding_nodes=None, min_deposition_slope=0)[source]

Initialize the BedrockLandslider model.

Parameters:
  • grid (ModelGrid) – Landlab ModelGrid object

  • angle_int_frict (float, optional) – Materials angle of internal friction in [m/m]

  • threshold_slope (float, optional) – Threshold slope used in non-linear deposition scheme [m/m] Default value is set to angle_int_frict if not specified

  • cohesion_eff (float, optional) – Effective cohesion of material [m L^-1 T^-2].

  • landslides_return_time (float, optional) – Return time for stochastic landslide events to occur

  • rho_r (float, optional) – Bulk density rock [m L^-3].

  • fraction_fines_LS (float) – Fraction of permanently suspendable fines in bedrock Value must be between 0 and 1 [-].

  • phi (float, optional) – Sediment porosity, value must be between 0 and 1 [-].

  • max_pixelsize_landslide (int , optional) – Maximum size for landslides in number of pixels

  • verbose_landslides (bool , optional) – Print output as number of simulated landslides per timestep

  • seed (float , optional) – Provide seed to set stochastic model. If not provided, seed is set to 2021. Provide None to keep current seed.

  • landslides_on_boundary_nodes (bool, optional) – Allow landslides to initiate (critical node) and extend over boundary nodes.

  • critical_sliding_nodes (list, optional) – Provide list with critical nodes where landslides have to initiate This cancels the stochastic part of the algorithm and allows the user to form landslides at the provided critical nodes.

static __new__(cls, *args, **kwds)
cite_as = '\n    @Article{gmd-13-3863-2020,\n        AUTHOR = {Campforts B., Shobe C.M., Steer P., Vanmaercke M., Lague D., Braun J.},\n        TITLE = {BedrockLandslider 1.0: a hybrid landscape evolution model to\n                 simulate the impact of landslides and landslide-derived sediment\n                 on landscape evolution.},\n        JOURNAL = {Geoscientific Model Development},\n        VOLUME = {13},\n        YEAR = {2020},\n        NUMBER = {9},\n        PAGES = {3863--3886},\n        URL = {https://doi.org/10.5194/gmd-13-3863-2020},\n        DOI = {10.5194/gmd-13-3863-2020}\n    }'
property coords

Return the coordinates of nodes on grid attached to the component.

property current_time

Current time.

Some components may keep track of the current time. In this case, the current_time attribute is incremented. Otherwise it is set to None.

Return type:

current_time

definitions = (('LS_sediment__flux', 'Sediment flux originating from landslides                 (volume per unit time of sediment entering each node)'), ('flow__receiver_node', 'Node array of receivers (node that receives flow from current node)'), ('flow__upstream_node_order', 'Node array containing downstream-to-upstream ordered list of node IDs'), ('hill_flow__receiver_node', 'Node array of receivers (node that receives flow from current node)'), ('hill_flow__receiver_proportions', 'Node array of proportion of flow sent to each receiver.'), ('hill_topographic__steepest_slope', 'The steepest *downhill* slope'), ('landslide__deposition', 'Total deposition of derived sediment'), ('landslide__erosion', 'Total erosion caused by landsliding '), ('landslide_sediment_point_source', 'Landslide derived sediment, as point sources on all the                 critical nodes where landslides initiate,                 before landslide runout is calculated '), ('soil__depth', 'Depth of soil or weathered bedrock'), ('topographic__elevation', 'Land surface topographic elevation'), ('topographic__steepest_slope', 'The steepest *downhill* slope'))
property fraction_fines

Fraction of permanently suspendable fines in bedrock. Value must be between 0 and 1 [-].

classmethod from_path(grid, path)

Create a component from an input file.

Parameters:
  • grid (ModelGrid) – A landlab grid.

  • path (str or file_like) – Path to a parameter file, contents of a parameter file, or a file-like object.

Returns:

A newly-created component.

Return type:

Component

property grid

Return the grid attached to the component.

initialize_optional_output_fields()

Create fields for a component based on its optional field outputs, if declared in _optional_var_names.

This method will create new fields (without overwrite) for any fields output by the component as optional. New fields are initialized to zero. New fields are created as arrays of floats, unless the component also contains the specifying property _var_type.

initialize_output_fields(values_per_element=None)

Create fields for a component based on its input and output var names.

This method will create new fields (without overwrite) for any fields output by, but not supplied to, the component. New fields are initialized to zero. Ignores optional fields. New fields are created as arrays of floats, unless the component specifies the variable type.

Parameters:

values_per_element (int (optional)) – On occasion, it is necessary to create a field that is of size (n_grid_elements, values_per_element) instead of the default size (n_grid_elements,). Use this keyword argument to acomplish this task.

input_var_names = ('flow__receiver_node', 'flow__upstream_node_order', 'hill_flow__receiver_node', 'hill_flow__receiver_proportions', 'hill_topographic__steepest_slope', 'soil__depth', 'topographic__elevation', 'topographic__steepest_slope')
property landslides_size

List with the size of simulated landslides. The list is reset every time the _landslide_erosion function is called

property landslides_volume

List with the volume of simulated landslides. The list is reset every time the _landslide_erosion function is called

property landslides_volume_bed

List with the volume of bedrock eroded by landslides. The list is reset every time the _landslide_erosion function is called

property landslides_volume_sed

List with the volume of sediment eroded by landslides. The list is reset every time the _landslide_erosion function is called

name = 'BedrockLandslider'
optional_var_names = ()
output_var_names = ('LS_sediment__flux', 'landslide__deposition', 'landslide__erosion', 'landslide_sediment_point_source', 'soil__depth', 'topographic__elevation')
property phi

Sediment porosity, value must be between 0 and 1 [-].

run_one_step(dt)[source]

Advance BedrockLandslider component by one time step of size dt.

Parameters:

dt (float) – The imposed timestep.

Returns:

  • vol_suspended_sediment_yield (float) – volume of sediment evacuated as syspended sediment.

  • volume_leaving (float) – Volume of sediment leaving the domain.

property shape

Return the grid shape attached to the component, if defined.

unit_agnostic = True
units = (('LS_sediment__flux', 'm3/s'), ('flow__receiver_node', '-'), ('flow__upstream_node_order', '-'), ('hill_flow__receiver_node', '-'), ('hill_flow__receiver_proportions', '-'), ('hill_topographic__steepest_slope', '-'), ('landslide__deposition', 'm'), ('landslide__erosion', 'm'), ('landslide_sediment_point_source', 'm3'), ('soil__depth', 'm'), ('topographic__elevation', 'm'), ('topographic__steepest_slope', '-'))
classmethod var_definition(name)

Get a description of a particular field.

Parameters:

name (str) – A field name.

Returns:

A description of each field.

Return type:

tuple of (name, *description*)

classmethod var_help(name)

Print a help message for a particular field.

Parameters:

name (str) – A field name.

classmethod var_loc(name)

Location where a particular variable is defined.

Parameters:

name (str) – A field name.

Returns:

The location (‘node’, ‘link’, etc.) where a variable is defined.

Return type:

str

var_mapping = (('LS_sediment__flux', 'node'), ('flow__receiver_node', 'node'), ('flow__upstream_node_order', 'node'), ('hill_flow__receiver_node', 'node'), ('hill_flow__receiver_proportions', 'node'), ('hill_topographic__steepest_slope', 'node'), ('landslide__deposition', 'node'), ('landslide__erosion', 'node'), ('landslide_sediment_point_source', 'node'), ('soil__depth', 'node'), ('topographic__elevation', 'node'), ('topographic__steepest_slope', 'node'))
classmethod var_type(name)

Returns the dtype of a field (float, int, bool, str…).

Parameters:

name (str) – A field name.

Returns:

The dtype of the field.

Return type:

dtype

classmethod var_units(name)

Get the units of a particular field.

Parameters:

name (str) – A field name.

Returns:

Units for the given field.

Return type:

str