Keywords
component, modular, model
Start Date
26-6-2018 9:00 AM
End Date
26-6-2018 10:20 AM
Abstract
Modeling software expresses, in numerical form, our ideas about how environmental systems work. The codes we use to express these ideas should ideally be flexible enough to evolve as the ideas themselves evolve, but all too often the software engineering becomes a barrier to progress. In this paper, we present the design concepts behind Landlab Toolkit, which is a Python programming library intended to speed the process of creating and modifying two-dimensional, grid-based numerical models. Landlab’s design goals included: (1) making it simple to create and configure 2D grids of various types, (2) supporting re-usable components, (3) allowing multiple components to share a common grid and data arrays, (4) operating in a high-level, open-source language that offers a rich set of libraries. The first goal is met by providing a several grid classes from which a grid of desired scale and dimensions can be constructed. A grid object contains a set of graph elements (such as nodes, links, and patches) along with data structures that describe the connectivity among them. To meet goal 2, Landlab uses a standard design for components, which are also implemented as classes. Goal 3 is met by allowing components to attach fields to the grid, where a field is a data array that is tied to a particular type of grid element. Finally, implementing Landlab in Python achieves Goal 4. To illustrate how this functionality works in practice, we present several examples of Landlab-built models, including applications in overland-flow dynamics, landform evolution, and cellular automata.
Design and Applications of Landlab: A Modular Python-Language Framework for Building 2D Numerical Models of Earth-Surface Processes
Modeling software expresses, in numerical form, our ideas about how environmental systems work. The codes we use to express these ideas should ideally be flexible enough to evolve as the ideas themselves evolve, but all too often the software engineering becomes a barrier to progress. In this paper, we present the design concepts behind Landlab Toolkit, which is a Python programming library intended to speed the process of creating and modifying two-dimensional, grid-based numerical models. Landlab’s design goals included: (1) making it simple to create and configure 2D grids of various types, (2) supporting re-usable components, (3) allowing multiple components to share a common grid and data arrays, (4) operating in a high-level, open-source language that offers a rich set of libraries. The first goal is met by providing a several grid classes from which a grid of desired scale and dimensions can be constructed. A grid object contains a set of graph elements (such as nodes, links, and patches) along with data structures that describe the connectivity among them. To meet goal 2, Landlab uses a standard design for components, which are also implemented as classes. Goal 3 is met by allowing components to attach fields to the grid, where a field is a data array that is tied to a particular type of grid element. Finally, implementing Landlab in Python achieves Goal 4. To illustrate how this functionality works in practice, we present several examples of Landlab-built models, including applications in overland-flow dynamics, landform evolution, and cellular automata.
Stream and Session
A4: Model Integration Frameworks: A Discussion of Typologies, Standards, Languages, and Platforms