Landlab modeling environment

Landlab is a Python-based modeling environment that allows scientists and students to build numerical landscape and surface process models without have to code all of the individual components. It is designed for experimentation in disciplines that quantify earth surface dynamics such as geomorphology, hydrology, glaciology, and stratigraphy, and can also be used in related fields.

What can I use this App for?

Compute flows across a gridded terrain -- water, sediment, glacial ice, volcanic material, or landslide debris.
Build a model -- take advantage of code that has already been written so you can concentrate on the science behind the code.
Experiment and compute mass balance across scales -- route material using Landlab and link gridded, point and temporal information.

What goes into a Landlab Model?

Landlab's ModelGrid package makes the modeling process easier, by providing a set of library routines for creating and managing a 2D grid, attaching data to the grid, performing common input and output operations, and providing library functions that handle common numerical operations such as calculating a field of gradients for a particular state variable. By taking care of much of the overhead involved in writing grid-management code, ModelGrid is designed to help you build 2D models quickly and efficiently.
Using Landlab requires that you build a Python script to import, instantiate, and then run your landscape model. We describe such a script as a driver. It’s also possible to do the same set of processes on the fly in an interactive Python environment like iPython.
Typically, a driver file will consist of six distinct sections:
  • Import the Python and Landlab libraries you’ll need to run your model
  • Instantiate the Landlab elements (grid and, if using them, components)
  • Load any necessary data into the grid fields
  • Set the boundary conditions
  • Run the model, typically by creating a for loop or using a Landlab generator (see below)
  • Finalize and handle the data (e.g., plot, export)
Visit the Landlab webpage to learn more about how to Build a Model.

Model Output

Landlab offers an ever-growing library of components that aim to describe individual or closely associated suites of surface processes. Components are designed to be “plug-and-play” and to interact with each other with the minimum of technical difficulties. Each component makes use of Landlab grid fields to enable the sharing of data between the components, and we use a standardized way of interacting with and using each different one.  The output of each model depends on the component used.  Typical outputs include time series plots, grid visualizations, text files, movies and netcdf.  If you can code it in Python, you can implement it in a Landlab component.

Example uses of Landlab

Available Landlab components
The current library includes the following components in essentially full working order:
Under active development are:
  • a vegetation cellular automaton
  • an impact cratering simulator
  • divergent and mixed convergent-divergent flow routers
  • a deltaic simulator

Run the model in HydroShare

The HydroShare Landlab Raster Processing Jupyter Notebook is hosted on the ROGER High Performance Computer at NCSA.  It can be opened from the HydroShare Jupyter Python Notebook.  Landlab is installed on ROGER, which enables this notebook full access to all Landlab components.  View this HydroShare resource for Steps to set up a Notebook on HydroShare.  Or, View this Landlab Landslide Example.  Once you see the HydroShare resource, click on the blue ‘Open With’ button on the top right of the screen. Select ‘JupyterHub-NCSA’ and you will be taken to the Welcome Page for the HydroShare Jupyter Python Notebook Server.

Developer’s Information

If you've installed Landlab from the source code, you've already interacted with the git code management and version control systems, and with Github, which is built onto the basic git framework. However, this same framework offers you powerful ways to organise and track the change you make to the code after install, and to plug any changes you make back into the main code base for Landlab.
Your fork of Landlab is your starting point for all modifications to the code. However, you can create branches from your master fork in which you will actually modify code. The great advantage of this system is that you can have several different branches running in parallel, each aiming to complete a particular objective. The master version of the code is not changed until you merge your completed branch back into the master. If you decide that changes you're making are actually unhelpful or redundant, you can easily roll them back - either by individually reverting each committed change, or by deleting the whole branch.
Our webpage has all the information you need to learn more about developing Landlab components with github and git.
Suggestions to learn more
User Guide
Reference Manual Tutorials
Clinics and Workshops
Curriculum
Papers and Presentations

Credits, Authors, Contributors and Contacts

Landlab was created with the support of the National Science Foundation and developed at University of Colorado Boulder, Tulane University, and University of Washington. Read more About us.
Citing Landlab:
Tucker, G.E., Gasparini, N.M., Istanbulluoglu, E., Hobley, D.E.J., Nudurupati, S.S., Adams, J.M., and Hutton, E. (2013). Landlab v0.2. https://landlab.github.io.