Landlab (http://landlab.github.io) is an open-source Python library of code that enables users to easily build unique earth surface processes models to address specific hypotheses. The Landlab library contains gridding engines for building regular and irregular grids, process components that act on grid variables, tools for storing and sharing data among the grid and components, and plotting and analysis tools. Process components represent individual processes occurring at the earth’s surface (e.g. growth and death of vegetation, surface water infiltration, linear diffusion of sediment), or drivers of these processes (e.g. rainfall, solar radiation). Users can build models by combining existing process components, or build new components if a required process component does not exist. Landlab was developed by members of the CSDMS community with support from CSDMS and the National Science Foundation (two ACI - SI2 grants).
Why build another modeling tool?
Landlab has the rare distinction of being built to make modeling accessible to a wide variety of earth scientists, including those who do not traditionally use computational models. In contrast, most other models are designed to answer a specific hypothesis posed by the developers.
What does this mean for new users?
- Landlab is extensively documented.
- Users can contact developers with issues.
- There are tutorials to teach users how to use Landlab.
- There are classroom tutorials to teach students about different surface processes.
- Many Landlab tutorials are accessible through Hydroshare, an online collaborative environment for sharing data and models, which allows users to test-out Landlab without installing it locally.
- Landlab has integrated testing to ensure that new code contributions will not break existing code.
- There is documentation to make contributing code a bit easier.
Landlab Components and ModelsNumerous people have contributed components and models to landlab. Of these, 52 are described in the CSDMS repository and are listed below. Would you like to add a Landlab component to the below list? Start here:
|ChannelProfiler||The ChannelProfiler extracts and plots channel networks from a landlab grid.||Barnhart, Katy|
|ChiFinder||Calculate Chi Indices||Hobley, Daniel|
|DepressionFinderAndRouter||Find depressions on a topographic surface.||Hobley, Dan|
||Soil depth-dependent linear hillslope diffuser||Glade, Rachel|
|DepthDependentTaylorDiffuser||This component implements a depth-dependent Taylor series diffusion rule, combining concepts of Ganti et al. (2012) and Johnstone and Hilley (2014).||Glade, Rachel|
|DetachmentLtdErosion||Simulate detachment limited sediment transport.||Adams, Jordan|
||Component for calculating drainage density in Landlab given a channel network||Shobe, Charles|
||Landlab component for fluvial erosion/deposition.||Shobe, Charles|
|ExponentialWeatherer||Exponential soil production function in the style of Ahnert (1976)||Glade, Rachel|
|FastscapeEroder||Compute fluvial erosion using stream power theory (“fastscape” algorithm)||Hobley, Daniel|
|FireGenerator||This component generates a random fire event or fire time series from the Weibull statistical distribution.||Adams, Jordan|
|Flexure||Deform the lithosphere with 1D or 2D flexure.||Hutton, Eric|
|FlowAccumulator||Component to accumulate flow and calculate drainage area.||Barnhart, Katy|
|FlowDirectorD8||Single-path (steepest direction) flow direction with diagonals on rasters.||Barnhart, Katy|
|FlowDirectorDinf||Flow direction on a raster grid by the D infinity method.||Barnhart, Katy|
|FlowDirectorMFD||Multiple-path flow direction with or without out diagonals.||Barnhart, Katy|
|FlowDirectorSteepest||Single-path (steepest direction) flow direction without diagonals.||Barnhart, Katy|
|FractureGridGenerator||Create a 2D grid with randomly generated fractures.||Tucker, Greg|
||Cellular automaton model of hillslope evolution||Tucker, Gregory|
|GroundwaterDupuitPercolator||The GroundwaterDupuitPercolator solves the Boussinesq equation for flow in an unconfined aquifer over an impermeable aquifer base and calculates groundwater return flow to the surface.||Litwin, David|
|HackCalculator||Calculate Hack parameters.||Barnhart, Katy|
|LakeMapperBarnes||Temporarily fills depressions and reroutes flow across them||Hobley, Daniel|
|Landlab||Python software framework for writing, assembling, and running 2D numerical models||Tucker, Greg|
|Landslides||Landlab component that simulates landslide probability of failure as well as mean relative wetness and probability of saturation.||Strauch, Ronda|
|LateralEroder||Laterally erode neighbor node through fluvial erosion.||Langston, Abigail|
|LinearDiffuser||Landlab component that models soil creep as a linear diffusion process||Tucker, Greg|
|Lithology||Create a Lithology object with different properties||Barnhart, Katy|
|LossyFlowAccumulator||Component to calculate drainage area and accumulate flow, while permitting dynamic loss or gain of flow downstream.||Hobley, Dan|
|NormalFault||NormalFault implements relative rock motion due to a normal fault.||Barnhart, Katy|
||Component simulating overland flow using a 2-D numerical approximation of the shallow-water equations following the de Almeida et al., 2012 algorithm for storage-cell inundation modeling.||Adams, Jordan|
|OverlandFlowBates||This component simulates overland flow using the 2-D numerical model of shallow-water flow over topography using the Bates et al. (2010) algorithm for storage-cell inundation modeling.||Adams, Jordan|
|PerronNLDiffuse||Nonlinear diffusion, following Perron (2011).||Hobley, Daniel|
|PotentialEvapotranspiration||Calculates potential evapotranspiration||Nudurupati, Sai|
|PotentialityFlowRouter||Multidirectional flow routing using a novel method.||Hobley, Daniel|
|PrecipitationDistribution||Generate random sequence of precipitation events||Adams, Jordan|
|Radiation||Compute 1D and 2D total incident shortwave radiation.||Nudurupati, Sai|
||Landlab component for 2-D calculation of fluvial sediment transport and bedrock erosion||Shobe, Charles|
|SedDepEroder||Compute fluvial erosion using using “tools and cover” theory||Hobley, Daniel|
|SinkFiller||Fill sinks in a landscape to the brim, following the Barnes et al. (2014) algorithms.||Hobley, Daniel|
||Landlab component that calculates soil infiltration based on the Green-Ampt solution.||Rengers, Francis|
|SoilMoisture||Compute the decay of soil moisture saturation at storm-interstorm time period||Nudurupati, Sai|
|SpatialPrecipitationDistribution||Generate random sequence of spatially-resolved precipitation events||Hobley, Daniel|
|SpeciesEvolver||Evolve life in a landscape.||Lyons, Nathan|
|SteepnessFinder||Calculate steepness and concavity indices from gridded topography||Hobley, Daniel|
|StreamPowerSmoothThresholdEroder||Compute fluvial erosion using stream power theory with a numerically smoothed threshold||Tucker, Greg|
|TaylorNonLinearDiffuser||Model non-linear soil creep after Ganti et al. (2012)||Glade, Rachel|
||A Python package for multi-model analysis in long-term drainage basin evolution||Barnhart, Katy|
|TransportLengthHillslopeDiffuser||Transport length hillslope diffusion.||Mouchene, Margaux|
|VegCA||Landlab component that simulates inter-species plant competition using a 2D cellular automata model.||Nudurupati, Sai|
|Vegetation||Model plant dynamics using multiple representative plant species||Nudurupati, Sai|
|ZoneController||Controls zones and populates them with taxa.||Lyons, Nathan|
|ZoneTaxon||A zone-based taxon||Lyons, Nathan|