landlab

Landslides: Compute probability of failure for shallow landslides

class LandslideProbability(*args, **kwds)[source]

Bases: landlab.core.model_component.Component

Landlab component designed to calculate a probability of failure at each grid node based on the infinite slope stability model stability index (Factor of Safety).

The driving force for failure is provided by the user in the form of groundwater recharge, simply user provided minimum and maximum annual peak values of recharge. The model uses topographic and soils characteristics provided as input in the landslide_driver.

A LandslideProbability calcuation function provides the user with the mean soil relative wetness, mean factor-of-safety, and probabilty of failure at each node.

Construction::
LandslideProbability(grid, number_of_simulations”=250, rechare_minimum=5., groundwater__recharge_maximum=120.)
Parameters:

grid: RasterModelGrid

A grid.

number_of_simulations: float, optional

Number of simulations to run Monte Carlo.

groundwater__recharge_minimum: float, optional

User provided minimum annual maximum recharge recharge (mm/day).

groundwater__recharge_maximum: float, optional

User provided maximum annual maximum recharge recharge (mm/day).

Examples

>>> from landlab import RasterModelGrid
>>> from landlab.components.landslides import LandslideProbability
>>> import numpy as np
>>> grid = RasterModelGrid((5, 4), spacing=(0.2, 0.2))
>>> LS_prob = LandslideProbability(grid)
>>> LS_prob.name
'Landslide Probability'
>>> sorted(LandslideProbability.input_var_names)  
['soil__density',
 'soil__internal_friction_angle',
 'soil__maximum_total_cohesion',
 'soil__minimum_total_cohesion',
 'soil__mode_total_cohesion',
 'soil__thickness',
 'soil__transmissivity',
 'topographic__slope',
 'topographic__specific_contributing_area']
>>> sorted(LS_prob.output_var_names) 
['landslide__mean_factor_of_safety',
 'landslide__probability_of_failure',
 'soil__mean_relative_wetness']
>>> sorted(LS_prob.units) 
[('landslide__mean_factor_of_safety', 'None'),
 ('landslide__probability_of_failure', 'None'),
 ('soil__density', 'kg/m3'),
 ('soil__internal_friction_angle', 'degrees'),
 ('soil__maximum_total_cohesion', 'Pa or kg/m-s2'),
 ('soil__mean_relative_wetness', 'None'),
 ('soil__minimum_total_cohesion', 'Pa or kg/m-s2'),
 ('soil__mode_total_cohesion', 'Pa or kg/m-s2'),
 ('soil__thickness', 'm'),
 ('soil__transmissivity', 'm2/day'),
 ('topographic__slope', 'tan theta'),
 ('topographic__specific_contributing_area', 'm')]
>>> LS_prob.grid.number_of_node_rows
5
>>> LS_prob.grid.number_of_node_columns
4
>>> LS_prob.grid is grid
True
>>> grid['node']['topographic__slope'] = np.random.rand(
...      grid.number_of_nodes)
>>> scatter_dat = np.random.random_integers(1, 10, grid.number_of_nodes)
>>> grid['node']['topographic__specific_contributing_area'] = np.sort(
...      np.random.random_integers(30, 900, grid.number_of_nodes))
>>> grid['node']['soil__transmissivity'] = np.sort(
...      np.random.random_integers(5, 20, grid.number_of_nodes),-1)
>>> grid['node']['soil__mode_total_cohesion'] = np.sort(
...      np.random.random_integers(30, 900, grid.number_of_nodes))
>>> grid['node']['soil__minimum_total_cohesion'] = (
...      grid.at_node['soil__mode_total_cohesion'] - scatter_dat)
>>> grid['node']['soil__maximum_total_cohesion'] = (
...      grid.at_node['soil__mode_total_cohesion'] + scatter_dat)
>>> grid['node']['soil__internal_friction_angle'] = np.sort(
...      np.random.random_integers(26, 40, grid.number_of_nodes))
>>> grid['node']['soil__thickness']= np.sort(
...      np.random.random_integers(1, 10, grid.number_of_nodes))
>>> grid['node']['soil__density'] = (2000. * np.ones(grid.number_of_nodes))
>>> LS_prob = LandslideProbability(grid)
>>> np.allclose(grid.at_node['landslide__probability_of_failure'], 0.)
True
>>> LS_prob.calculate_landslide_probability()
>>> np.allclose(grid.at_node['landslide__probability_of_failure'], 0.)
False
>>> core_nodes = LS_prob.grid.core_nodes
>>> isinstance(LS_prob.landslide__factor_of_safety_histogram[
...      core_nodes[0]], np.ndarray) == True
True
calculate_factor_of_safety(i)[source]

Method calculates factor-of-safety stability index by using node specific parameters, creating distributions of these parameters, and calculating the index by sampling these distributions ‘n’ times.

The index is calculated from the ‘infinite slope stabilty factor-of-safety equation’ in the format of Pack RT, Tarboton DG, and Goodwin CN (1998)The SINMAP approach to terrain stability mapping.

Parameters:

i: int

index of core node ID.

calculate_landslide_probability(**kwds)[source]

Method creates arrays for output variables then loops through all the core nodes to run the method ‘calculate_factor_of_safety.’ Some output variables are assigned as fields to nodes. One output parameter is an factor-of-safety distribution at each node.

Parameters:

self.landslide__factor_of_safety_histogram: numpy.ndarray([

self.grid.number_of_nodes, self.n], dtype=float) This is an output - distribution of factor-of-safety from Monte Carlo simulations (units=’None’)