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 theBedrockLandslider
>>> 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.
- 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.
- 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'))¶