Abstract

Abstract. Numerical simulation of the form and characteristics of Earth's surface provides insight into its evolution. Landlab is an open-source Python package that contains modularized elements of numerical models for Earth's surface, thus reducing time required for researchers to create new or reimplement existing models. Landlab contains a gridding engine which represents the model domain as a dual graph of structured quadrilaterals (e.g., raster) or irregular Voronoi polygon–Delaunay triangle mesh (e.g., regular hexagons, radially symmetric meshes, and fully irregular meshes). Landlab also contains components – modular implementations of single physical processes – and a suite of utilities that support numerical methods, input/output, and visualization. This contribution describes package development since version 1.0 and backward-compatibility-breaking changes that necessitate the new major release, version 2.0. Substantial changes include refactoring the grid, improving the component standard interface, dropping Python 2 support, and creating 31 new components – for a total of 58 components in the Landlab package. We describe reasons why many changes were made in order to provide insight for designers of future packages. We conclude by discussing lessons about the dynamics of scientific software development gained from the experience of using, developing, maintaining, and teaching with Landlab.

Highlights

  • Landlab is a Python package to support the creation of numerical models in Earth surface dynamics

  • Numerical modeling is especially important for Earth surface dynamics because of the timescale mismatch between human observation and system evolution

  • We found the presence of ∗args and ∗∗kwds in the run_one_step problematic because it complicated wrapping components with a Basic Model Interface (BMI; Peckham et al, 2013; Hutton and Piper, 2020a) for use with the Python Modeling Tool (PyMT; Hutton and Piper, 2020b)

Read more

Summary

Introduction

Landlab is a Python package to support the creation of numerical models in Earth surface dynamics. Landlab is an open-source Python-language package that provides the common elements of infrastructure needed to support the creation of new models. Based on experience using and developing with Landlab, the development team identified changes to Landlab that were not backwards compatible, indicating a major release was necessary to convey to Landlab users to expect substantial changes This motivated the creation of Landlab v2.0, the focus of this contribution. A new major version was needed to support (a) backward-compatibility-breaking changes associated with refactoring core data structures and (b) removal of support below Python version 3 The scope of this contribution is to review the core concepts that underpin Landlab’s design We will not present detailed description of the use of the software, discuss numerical methods, or review the literature that supports each process implemented in Landlab. Methods and supporting literature can be found in key publications introducing each component (see Sect. 5), and guidance on software usage can be found on the Landlab website

The three Landlab audiences
Landlab core concepts
Grids inherit from graphs
Improved treatment of diagonals
Boundary condition flags
Summary
Updates to the component standard interface
Changes to the component run method
New component metadata standard
Additional component content requirements and recommendations
Removed or modified components and utilities
Reorganization of the Landlab documentation
Packages built to work with Landlab
Citation of Landlab and parts of Landlab
Lessons on geoscientific software development
Value of testing
Collaborative development of research software requires many skills
Balancing the burden on developers and users
How do I get started?
Conclusions
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.