<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">ESurf</journal-id><journal-title-group>
    <journal-title>Earth Surface Dynamics</journal-title>
    <abbrev-journal-title abbrev-type="publisher">ESurf</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Earth Surf. Dynam.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2196-632X</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/esurf-8-379-2020</article-id><title-group><article-title>Short communication: Landlab v2.0: a software <?xmltex \hack{\break}?> package for Earth surface dynamics</article-title><alt-title>Landlab 2.0</alt-title>
      </title-group><?xmltex \runningtitle{Landlab~2.0}?><?xmltex \runningauthor{K.~R.~Barnhart et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2 aff10">
          <name><surname>Barnhart</surname><given-names>Katherine R.</given-names></name>
          <email>krbarnhart@usgs.gov</email>
        <ext-link>https://orcid.org/0000-0001-5682-455X</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff3 aff4">
          <name><surname>Hutton</surname><given-names>Eric W. H.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff2 aff3">
          <name><surname>Tucker</surname><given-names>Gregory E.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-0364-5800</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff5">
          <name><surname>Gasparini</surname><given-names>Nicole M.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff6">
          <name><surname>Istanbulluoglu</surname><given-names>Erkan</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff7">
          <name><surname>Hobley</surname><given-names>Daniel E. J.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-2371-0534</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff5">
          <name><surname>Lyons</surname><given-names>Nathan J.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0001-6965-3374</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff8">
          <name><surname>Mouchene</surname><given-names>Margaux</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff6">
          <name><surname>Nudurupati</surname><given-names>Sai Siddhartha</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-2090-7561</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff9">
          <name><surname>Adams</surname><given-names>Jordan M.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff6">
          <name><surname>Bandaragoda</surname><given-names>Christina</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>Cooperative Institute for Research in Environmental Sciences, <?xmltex \hack{\break}?> University of Colorado, Boulder, Colorado, USA</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Department of Geological Sciences, University of Colorado, Boulder, Colorado, USA</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Community Surface Dynamics Modeling System Integration Facility, <?xmltex \hack{\break}?> University of Colorado, Boulder, Colorado, USA</institution>
        </aff>
        <aff id="aff4"><label>4</label><institution>Institute for Arctic and Alpine Research, University of Colorado, Boulder, Colorado, USA</institution>
        </aff>
        <aff id="aff5"><label>5</label><institution>Department of Earth and Environmental Sciences, Tulane University, New Orleans, Louisiana, USA</institution>
        </aff>
        <aff id="aff6"><label>6</label><institution>Department of Civil and Environmental Engineering, University of Washington, Seattle, Washington, USA</institution>
        </aff>
        <aff id="aff7"><label>7</label><institution>School of Earth and Ocean Sciences, Cardiff University, Cardiff, Wales, UK</institution>
        </aff>
        <aff id="aff8"><label>8</label><institution>University of Grenoble Alpes, INRAE, ETNA, 38402 Saint-Martin-d'Hères, France</institution>
        </aff>
        <aff id="aff9"><label>9</label><institution>Science and Math Division, Delgado Community College, New Orleans, Louisiana, USA</institution>
        </aff>
        <aff id="aff10"><label>a</label><institution>present affiliation: US Geological Survey, Landslide Hazards Program, 1711 Illinois St., Golden, CO, USA</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Katherine R. Barnhart (krbarnhart@usgs.gov)</corresp></author-notes><pub-date><day>26</day><month>May</month><year>2020</year></pub-date>
      
      <volume>8</volume>
      <issue>2</issue>
      <fpage>379</fpage><lpage>397</lpage>
      <history>
        <date date-type="received"><day>14</day><month>February</month><year>2020</year></date>
           <date date-type="rev-request"><day>4</day><month>March</month><year>2020</year></date>
           <date date-type="rev-recd"><day>22</day><month>April</month><year>2020</year></date>
           <date date-type="accepted"><day>9</day><month>May</month><year>2020</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2020 Katherine R. Barnhart et al.</copyright-statement>
        <copyright-year>2020</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020.html">This article is available from https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020.html</self-uri><self-uri xlink:href="https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020.pdf">The full text article is available as a PDF file from https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020.pdf</self-uri>
      <abstract><title>Abstract</title>
    <p id="d1e240">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 <italic>components</italic> – 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.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<?pagebreak page380?><sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d1e255">Landlab is a Python package to support the creation of numerical models in Earth surface dynamics. Numerical models support researchers to simulate past, present, and future dynamics of a system. This enables conceptual model validation, testing of alternative hypotheses, and prediction under uncertainty. Numerical modeling is especially important for Earth surface dynamics because of the timescale mismatch between human observation and system evolution. Landlab is an open-source Python-language package that provides the common elements of infrastructure needed to support the creation of new models. These include a model domain representation (the <italic>model grid</italic>), physical process <italic>components</italic>, and utilities that support use and extension of the package. Landlab's modular design lowers the barriers of entry to computational research, reduces researcher time, and supports publication of reproducible scientific research products <xref ref-type="bibr" rid="bib1.bibx7" id="paren.1"><named-content content-type="pre">e.g.,</named-content></xref>. Development and maintenance of Landlab follows modern software development standards such as version control, integrated testing and documentation, continuous integration, and multiplatform binary distribution <xref ref-type="bibr" rid="bib1.bibx2 bib1.bibx38 bib1.bibx51 bib1.bibx61 bib1.bibx76 bib1.bibx86" id="paren.2"><named-content content-type="pre">e.g.,</named-content></xref>. Our open-source development and use of semantic versioning
(SemVer 2.0.0, <uri>https://semver.org</uri>, last access: 12 May 2020) provides a necessary but not sufficient tool for reproducible research in Earth surface dynamics <xref ref-type="bibr" rid="bib1.bibx20" id="paren.3"><named-content content-type="pre">e.g.,</named-content></xref>.</p>
      <p id="d1e283">Landlab was designed as a key element in the Community Surface Dynamics Modeling System (CSDMS) suite of tools <xref ref-type="bibr" rid="bib1.bibx57" id="paren.4"/>. Initial development of Landlab began in 2012 and culminated in a version 1.0 release (referred to as v1.0) described by <xref ref-type="bibr" rid="bib1.bibx30" id="text.5"/>. Figure <xref ref-type="fig" rid="Ch1.F1"/> provides examples of the breadth of modeling efforts implemented with Landlab.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1" specific-use="star"><?xmltex \currentcnt{1}?><label>Figure 1</label><caption><p id="d1e296">Examples of modeling applications implemented with Landlab span a wide range of timescales and topics. A recent selection of examples intended to highlight diversity of applications includes the following examples:
<bold>(a)</bold> sediment provenance studies <xref ref-type="bibr" rid="bib1.bibx70" id="paren.6"><named-content content-type="post">reproduction modified from their Fig. 2</named-content></xref>, <bold>(b)</bold> landscape evolution of anticlines <xref ref-type="bibr" rid="bib1.bibx89" id="paren.7"><named-content content-type="post">reproduction of their Fig. 8</named-content></xref>,
<bold>(c)</bold> cellular automaton simulation of normal fault facets <xref ref-type="bibr" rid="bib1.bibx80" id="paren.8"><named-content content-type="post">reproduction of their Fig. 9</named-content></xref>, <bold>(d)</bold> the evolution of post-glacial drainage networks <xref ref-type="bibr" rid="bib1.bibx44" id="paren.9"><named-content content-type="post">reproduction of their Fig. 4</named-content></xref>, <bold>(e)</bold> estimates of landslide probability  <xref ref-type="bibr" rid="bib1.bibx74" id="paren.10"><named-content content-type="post">reproduction modified from their Fig. 9</named-content></xref>, <bold>(f)</bold> and coevolution of vegetation and erosion <xref ref-type="bibr" rid="bib1.bibx68" id="paren.11"><named-content content-type="post">reproduction of their Fig. 3</named-content></xref>. All subpanels except <bold>(d)</bold> covered by CC BY license. Permission to reproduce <bold>(d)</bold> was obtained through Copyright Clearance Center RightsLink.</p></caption>
        <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020-f01.png"/>

      </fig>

      <p id="d1e362">Subsequent to the release of v1.0, the core development team and many community members have contributed additional features and bug fixes to the software. 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.</p>
      <p id="d1e365">The scope of this contribution is to review the core concepts that underpin Landlab's design (Sect. <xref ref-type="sec" rid="Ch1.S3"/>), describe the changes and new features added since v1.0 (Sect. <xref ref-type="sec" rid="Ch1.S4"/>), discuss citation of software (Sect. <xref ref-type="sec" rid="Ch1.S5"/>), and document lessons we have learned about community software development from developing and maintaining Landlab (Sect. <xref ref-type="sec" rid="Ch1.S6"/>). Before concluding we provide recommendations for those interested in being involved with Landlab (Sect. <xref ref-type="sec" rid="Ch1.S7"/>). We note that while much of the contribution discusses general issues of scientific software development, Sect. <xref ref-type="sec" rid="Ch1.S4"/> is inherently specific to Landlab and describes technical details of changes between v1.0 and v2.0. For a  comprehensive description of the design and theory behind Landlab v1.0 the reader is referred to <xref ref-type="bibr" rid="bib1.bibx30" id="text.12"/>. Additionally, 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. In general, methods and supporting literature can be found in key publications introducing each component (see Sect. <xref ref-type="sec" rid="Ch1.S5"/>), and guidance on software usage can be found on the Landlab website.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>The three Landlab audiences</title>
      <p id="d1e394">The design of the Landlab package, its development practices, and the changes made in v2.0 are best understood in light of the three audiences who interact with the package. Unlike software that is developed by dedicated software engineers who may not use the software themselves, Landlab developers also use the software for their research and teaching. Thus, the first audience is <italic>user-developers</italic>, people who extend, modify, or otherwise contribute to the source code in order to accomplish their goals. Notably, most Landlab user-developers have little to no background in software engineering. The second audience is <italic>users</italic>: people who use Landlab to write their own programs but do not modify or contribute to  Landlab's source code. Among this group, it is natural for some to transition to becoming user-developers, who contribute new components or utilities to the main Landlab code base. The final audience is <italic>teachers–students</italic>, people who use Landlab in an instructional classroom setting as part of a course.</p>
      <p id="d1e406">In creating the source code, writing the documentation, determining the development practices, and maintaining the package, the needs, abilities, and time constraints of all three audiences must be balanced. This is particularly important for packages like Landlab with a small active developer community (<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>) and a research-scale user community (e.g., tens to hundreds of researchers and perhaps a few thousand students over the lifetime of the software, rather than millions of users). Our approach is to adopt many of the key design principles underlying modern academic software design best practice <xref ref-type="bibr" rid="bib1.bibx87 bib1.bibx81" id="paren.13"><named-content content-type="pre">e.g.,</named-content></xref>. These include an extensive automatic test suite, integrated documentation, version control, continuous integration, lint checking, and releasing binary packages for users. These design choices were made to ensure that Landlab is sustainable into the future to support the user–developer–learner communities <xref ref-type="bibr" rid="bib1.bibx30" id="paren.14"><named-content content-type="pre">see</named-content></xref>. Community contributors play an important role in developing community open-source software. Two of their most important roles are improving and refining documentation when<?pagebreak page381?> it is unclear and identifying software bugs. Because Landlab currently has a relatively small user base with limited experience contributing to documentation, it takes longer (months to years) for documentation to be refined by users compared to software with more users (days to months). The relatively long “refinement residence time” means that a commitment to high-quality tests is critically important (see Sect. <xref ref-type="sec" rid="Ch1.S6.SS1"/>).</p>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Landlab core concepts</title>
      <p id="d1e441">A core design principle behind the Landlab package is <italic>modularity</italic>. Separating the elements of a numerical model into reusable parts decreases the human time associated with creating a new model or extending a current one. The design of Landlab is discussed extensively in <xref ref-type="bibr" rid="bib1.bibx30" id="text.15"/>. Here we briefly summarize the key points to provide context to the changes and new features that are discussed further in Sect. <xref ref-type="sec" rid="Ch1.S4"/>.</p>
      <p id="d1e452">The modular design of Landlab comprises the following categories of software infrastructure:
<?xmltex \hack{\newpage}?>
<list list-type="order"><list-item>
      <p id="d1e459"><italic>Model grids</italic>: data structures implemented as Python classes that represent the computational domain, connectivity between parts of the domain, and provide a centralized location to store state variables.</p></list-item><list-item>
      <p id="d1e465"><italic>Utilities</italic>: functions that provide solutions to common problems (e.g., numerical functions for gradients, mapping, and flux divergence; basic plotting; watershed delineation; and file input/output).</p></list-item><list-item>
      <p id="d1e471"><italic>Components</italic>: representation of core surface processes (e.g., stream power, flow accumulation, and precipitation) as a Python class with a common interface.</p></list-item></list></p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2" specific-use="star"><?xmltex \currentcnt{2}?><label>Figure 2</label><caption><p id="d1e478">Grid elements of <monospace>RasterModelGrid</monospace> <bold>(a)</bold> without and <bold>(b)</bold> with diagonals.</p></caption>
        <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020-f02.png"/>

      </fig>

      <p id="d1e497">The grid represents a 2-D domain as a <italic>dual graph</italic>. Each graph in the dual graph is a set of points, connected by lines, and outlining polygons. The two graphs are offset from one another such that the points of one graph are located inside of the polygons of the other graph. Each graph is a <italic>planar graph</italic>, meaning that the lines connecting points do not cross. In Landlab, we refer to the first graph as composed of <italic>nodes</italic> connected by <italic>links</italic> which outline <italic>patches</italic>. <italic>Corners</italic> are located inside patches and are connected by <italic>faces</italic>, which<?pagebreak page382?> outline <italic>cells</italic>. With this framework, data identified at a given point in space have both a connectivity to other points defined by its lines and a uniquely associated spatial area and set of bounding edges drawn the from enclosing polygon in the other graph (Fig. <xref ref-type="fig" rid="Ch1.F2"/>).</p>
      <p id="d1e527">There are four aspects of the grid that are worth highlighting. First is that the Landlab model grids provide information about the connectivity and adjacency of all grid <italic>elements</italic> (nodes, links, patches, corners, faces, and cells). Second, the model grids use a consistent framework for the numbering of grid elements and identifying a <italic>direction</italic> for each link and face (note that this is a topologic direction based on the orientation of the link in <inline-formula><mml:math id="M2" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M3" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> space, not a flow direction). This permits consistent application of numerical methods based on grid element ID that may be transferred to grids of different shapes and sizes.</p>
      <p id="d1e550">Third, Landlab supports regular and irregular model grids through the same interface. The Landlab model grid library includes data structures for networks, regular rasters, general irregular meshes (Voronoi cells with Delaunay triangulated nodes), regular hexagons, and radially symmetric irregular meshes. Landlab v2.0 assumes all links and faces are straight. The model grids were designed to accommodate extension to more exotic 2-D geometries.</p>
      <p id="d1e553">Finally, the model grid may be used to store data <italic>fields</italic> at any grid element. Fields represent state variables and are useful when multiple components use or modify the state variables. When a field is stored on the grid, Landlab enforces characteristics such as the number of elements and provides the ability to use adjacency information associated with the grid.</p>
      <p id="d1e559">The Landlab model grids keep track of boundary conditions using arrays of integers with flags indicating characteristics such as fixed-value, fixed-gradient, or closed to flux (<monospace>grid.status_at_X</monospace> where <monospace>X</monospace> is the name of the grid element). Note that we will use <monospace>preformatted</monospace> style text to indicate Landlab syntax. Thus far, most applications with Landlab use nodes and links as the primary grid elements. Thus, sets of standard boundary condition flags are presently only implemented for these two types of grid elements.</p>
      <p id="d1e571">Utilities fall into two subcategories: general numerical utilities and application-focused utilities. In the first category are general functions to calculate quantities such as gradients or flux divergence and map values from one grid element to another. Development has created numerical utilities focused on finite-difference/volume numerical solutions to differential equations and cellular automaton applications. The focus on finite-difference and finite-volume utilities, however, reflects the interests of developers rather than the potential characteristics of the package. In the second category are application-focused utilities. These utilities are typically developed for use in a particular component but have grown to have broader use within the package. For example the watershed utility submodule was developed to support the <monospace>SpeciesEvolver</monospace> but provides the broadly applicable ability to label watersheds.</p>
      <p id="d1e578">Components are Python objects with a standard interface that implement a single Earth surface process, set of equations, or analysis compatible with the component interface (e.g., calculation of drainage density). All components require a Landlab model grid to instantiate and have a built-in function that advances the component forward in time or updates it based on the current values stored as fields. Components can be coupled by accessing and modifying the same fields stored on the model grid elements.</p>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Changes and new features added since Landlab v1.0</title>
      <p id="d1e589">Landlab v2.0 contains many changes to the core source code that add new features. We have compiled tables describing the pre-existing, refactored, and new core capabilities of the Landlab package. These include data structures (Table <xref ref-type="table" rid="Ch1.T1"/>), utilities (Table <xref ref-type="table" rid="Ch1.T2"/>), new components (Table <xref ref-type="table" rid="Ch1.T3"/>), and pre-existing or refactored components (Table <xref ref-type="table" rid="Ch1.T4"/>). We<?pagebreak page383?> list core package, development environment, testing, tutorial, and documentation dependencies in Table <xref ref-type="table" rid="Ch1.T5"/>.</p>

<?xmltex \floatpos{p}?><table-wrap id="Ch1.T1" specific-use="star"><?xmltex \currentcnt{1}?><label>Table 1</label><caption><p id="d1e605">Major data structures in Landlab v2.0.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Name</oasis:entry>
         <oasis:entry colname="col2">Summary</oasis:entry>
         <oasis:entry colname="col3">New/refactored?</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3"><italic>Graphs</italic></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>NetworkGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Graph with only nodes and links.</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualVoronoiGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Unstructured dual graph of node–link–patch</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Delaunay triangles and corner–face–cell Voronoi</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">polygons.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualHexGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Dual graph of node–link–patch triangles and</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">corner–face–cell regular hexagons.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualRadialGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Dual graph with radially symmetric nodes.</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualStructuredQuadGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Dual graph of structured quadrilaterals. Link and</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">face lengths vary, and orthogonality of links and</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">faces is not required. This graph does not yet support</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">a grid.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualRectilinearGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Dual graph of quadrilaterals. Link and face lengths</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">may be variable, but angles are orthogonal. This</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">graph does not yet support a grid.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DualUniformRectilinearGraph</monospace></oasis:entry>
         <oasis:entry colname="col2">Dual graph of constant-sized rectangles. <inline-formula><mml:math id="M4" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M5" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> link</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">and face lengths may be different but are constant</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">across the grid and are orthogonal.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3"><italic>Model grids</italic></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>NetworkModelGrid</monospace></oasis:entry>
         <oasis:entry colname="col2">Model grid that inherits from the <monospace>NetworkGraph</monospace>.</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>VoronoiDelaunayModelGrid</monospace></oasis:entry>
         <oasis:entry colname="col2">Model grid that inherits from the</oasis:entry>
         <oasis:entry colname="col3">Refactored</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>DualVoronoiGraph</monospace>.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>HexModelGrid</monospace></oasis:entry>
         <oasis:entry colname="col2">Model grid that inherits from the <monospace>DualHexGraph</monospace>.</oasis:entry>
         <oasis:entry colname="col3">Refactored</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>RadialModelGrid</monospace></oasis:entry>
         <oasis:entry colname="col2">Model grid that inherits from the</oasis:entry>
         <oasis:entry colname="col3">Refactored</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>DualRadialGraph</monospace>.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>RasterModelGrid</monospace></oasis:entry>
         <oasis:entry colname="col2">Model grid that inherits from the</oasis:entry>
         <oasis:entry colname="col3">Refactored</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>DualUniformRectilinearGraph</monospace>.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3"><italic>Other data structures</italic></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>EventLayers</monospace></oasis:entry>
         <oasis:entry colname="col2">Data structure that keeps track of a time series of</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">thicknesses and a generic set of properties at all of</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">one grid element (e.g., cells). In <monospace>EventLayers</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">every time point is recorded, such that erosion of</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">layers retains a series of zero thickness.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>EventLayers</monospace> is more appropriate if a user is</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">interested in chronostratigraphy.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>MaterialLayers</monospace></oasis:entry>
         <oasis:entry colname="col2">Same as <monospace>EventLayers</monospace> except that when erosion</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">occurs, no layer is recorded, and when equivalent</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">material is deposited, layers can be joined.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DataRecord</monospace></oasis:entry>
         <oasis:entry colname="col2">Data structure to store a generic set of variables in</oasis:entry>
         <oasis:entry colname="col3">New</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">time and/or on grid elements.</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup>

</oasis:table><?xmltex \hack{\vspace*{2mm}}?></table-wrap>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2" specific-use="star"><?xmltex \currentcnt{2}?><label>Table 2</label><caption><p id="d1e1116">Major new utilities in Landlab v2.0.</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.90}[.90]?><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Submodule</oasis:entry>
         <oasis:entry colname="col2">Summary</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>landlab.utils.distance_to_divide</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate distance between nodes and watershed divides.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>landlab.utils.flow__distance</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate distance between nodes and watershed outlets.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>landlab.utils.watershed</monospace></oasis:entry>
         <oasis:entry colname="col2">Identify and label nodes that belong to individual watershed.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>landlab.values</monospace></oasis:entry>
         <oasis:entry colname="col2">Create generic, reproducible, synthetic fields based on Python dictionaries or Yaml input files.</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?>

</oasis:table><?xmltex \hack{\vspace*{2mm}}?></table-wrap>

<?xmltex \floatpos{p}?><table-wrap id="Ch1.T3" specific-use="star"><?xmltex \currentcnt{3}?><label>Table 3</label><caption><p id="d1e1188">New components added since Landlab v1.0.</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.81}[.81]?><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Component</oasis:entry>
         <oasis:entry colname="col2">Summary</oasis:entry>
         <oasis:entry colname="col3">Required citation<inline-formula><mml:math id="M7" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Additional references</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>ChannelProfiler</monospace></oasis:entry>
         <oasis:entry colname="col2">Extract channel networks</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DepthDependentDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Linear, depth-dependent diffusion of</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.17"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx39" id="text.18"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">topography</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DepthDependentTaylorDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Nonlinear, depth-dependent diffusion of</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.19"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx39" id="text.20"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">topography</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx28" id="text.21"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DischargeDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Diffuse sediment proportional to an implicit</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">water discharge value</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>ErosionDeposition</monospace></oasis:entry>
         <oasis:entry colname="col2">Fluvial erosion and transport</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.22"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx24" id="text.23"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>ExponentialWeatherer</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate weathering rate based on</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.24"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx3" id="text.25"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">exponential function of soil thickness</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx5" id="text.26"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>Flexure1D</monospace></oasis:entry>
         <oasis:entry colname="col2">1-D lithospheric flexure under loading</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>FlowAccumulator</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate drainage area and discharge</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx17" id="text.27"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>FlowDirectorD8</monospace></oasis:entry>
         <oasis:entry colname="col2">Direct flow based on D8 scheme</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx55" id="text.28"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>FlowDirectorDINF</monospace></oasis:entry>
         <oasis:entry colname="col2">Direct flow based on D<inline-formula><mml:math id="M8" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:math></inline-formula> scheme</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx75" id="text.29"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FlowDirectorMFD</monospace></oasis:entry>
         <oasis:entry colname="col2">Direct flow to multiple downstream receivers</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx64" id="text.30"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx27" id="text.31"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>FlowDirectorSteepest</monospace></oasis:entry>
         <oasis:entry colname="col2">Direct flow based on D4 scheme</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>GroundwaterDupuitPercolator</monospace></oasis:entry>
         <oasis:entry colname="col2">Model flow in a shallow unconfined aquifer</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx48" id="text.32"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx21" id="text.33"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">using the Dupuit–Forcheimer approximation</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx52" id="text.34"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>HackCalculator</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate Hack's law parameters for drainage basins</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>LakeMapperBarnes</monospace></oasis:entry>
         <oasis:entry colname="col2">Identify and route flow through lakes</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx8" id="text.35"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>LandslideProbability</monospace></oasis:entry>
         <oasis:entry colname="col2">Simulate landslide probability of failure,</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx74" id="text.36"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">mean relative wetness, and probability</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">of saturation</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>LateralEroder</monospace></oasis:entry>
         <oasis:entry colname="col2">Lateral erosion of fluvial channels</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx47" id="text.37"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>LithoLayers</monospace></oasis:entry>
         <oasis:entry colname="col2">Manage layered material with variable</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx9" id="text.38"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">properties</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>Lithology</monospace></oasis:entry>
         <oasis:entry colname="col2">Manage material with spatially variable</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx9" id="text.39"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">properties</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>LossyFlowAccumulator</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate drainage area and discharge while</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx17" id="text.40"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">permitting dynamic loss or gain of flow</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">downstream</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>NormalFault</monospace></oasis:entry>
         <oasis:entry colname="col2">Vertical uplift on a generic fault</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>PotentialityFlowRouter</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate a discharge field using a matrix</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">solution</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>Profiler</monospace></oasis:entry>
         <oasis:entry colname="col2">Extract generic profiles across a Landlab</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">field</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>SinkFillerBarnes</monospace></oasis:entry>
         <oasis:entry colname="col2">Fill depressions in a surface</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx8" id="text.41"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>Space</monospace></oasis:entry>
         <oasis:entry colname="col2">Fluvial erosion by stream power with</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx72" id="text.42"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">alluvium conservation and entrainment</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SpatialPrecipitationDistribution</monospace></oasis:entry>
         <oasis:entry colname="col2">Generate spatially resolved precipitation</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx73" id="text.43"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">events</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SpeciesEvolver</monospace></oasis:entry>
         <oasis:entry colname="col2">Evolve life in a landscape</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx50" id="text.44"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx4" id="text.45"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx49" id="text.46"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>StreamPowerSmoothThresholdEroder</monospace></oasis:entry>
         <oasis:entry colname="col2">Fluvial erosion with a smoothed-threshold</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.47"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx17" id="text.48"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">version of stream power</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>TaylorNonLinearDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Nonlinear diffusion of topography</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx11" id="text.49"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx28" id="text.50"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>TransportLengthHillslopeDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Nonlocal hillslope diffusion</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx24" id="text.51"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx18" id="text.52"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>TrickleDownProfiler</monospace></oasis:entry>
         <oasis:entry colname="col2">Extract profiles downstream of arbitrary</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">points</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?></oasis:table><table-wrap-foot><p id="d1e1191"><inline-formula><mml:math id="M6" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula> In addition to <xref ref-type="bibr" rid="bib1.bibx30" id="text.16"/> and this contribution.</p></table-wrap-foot></table-wrap>

<?xmltex \floatpos{p}?><table-wrap id="Ch1.T4" specific-use="star"><?xmltex \currentcnt{4}?><label>Table 4</label><caption><p id="d1e2017">Landlab components in v1.0 (after <xref ref-type="bibr" rid="bib1.bibx30" id="altparen.53"/>, their Table 5).</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.85}[.85]?><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Component</oasis:entry>
         <oasis:entry colname="col2">Summary</oasis:entry>
         <oasis:entry colname="col3">Required citation<inline-formula><mml:math id="M10" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Additional references</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>ChiFinder</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculates the chi index along a channel</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx60" id="text.55"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">network</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DepressionFinderAndRouter</monospace></oasis:entry>
         <oasis:entry colname="col2">A lake filler that can route flow across</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx78" id="text.56"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">depressions</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DepthSlopeProductErosion</monospace></oasis:entry>
         <oasis:entry colname="col2">Detachment limited fluvial erosion</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">calculated using depth–slope product for</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">shear stress</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>DetachmentLtdErosion</monospace></oasis:entry>
         <oasis:entry colname="col2">General implementation of detachment</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx31" id="text.57"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">limited fluvial erosion</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>DrainageDensity</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate drainage density</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx77" id="text.58"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FastscapeEroder</monospace></oasis:entry>
         <oasis:entry colname="col2">Implements fluvial erosion according to</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx17" id="text.59"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">stream power, using the Fastscape</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">algorithms</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FireGenerator</monospace></oasis:entry>
         <oasis:entry colname="col2">Produces intervals between fire events,</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx62" id="text.60"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">following a Weibull distribution</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>Flexure</monospace></oasis:entry>
         <oasis:entry colname="col2">Simple lithospheric flexure under loading</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx36" id="text.61"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx46" id="text.62"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>FractureGridGenerator</monospace></oasis:entry>
         <oasis:entry colname="col2">Generate fractures in a model grid</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>gFlex</monospace></oasis:entry>
         <oasis:entry colname="col2">A more complex flexure model, utilizing</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx84" id="text.63"/></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">gFlex</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>KinwaveImplicitOverlandFlow</monospace></oasis:entry>
         <oasis:entry colname="col2">Locally implicit implementation of the</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">2-D kinematic wave model</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>KinwaveOverlandFlowModel</monospace></oasis:entry>
         <oasis:entry colname="col2">Simple implementation of the</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">2-D kinematic wave model</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>LinearDiffuser</monospace></oasis:entry>
         <oasis:entry colname="col2">Linear diffusion of topography</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx22" id="text.64"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>OverlandFlow</monospace></oasis:entry>
         <oasis:entry colname="col2">An inertial approximation of the shallow</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx1" id="text.65"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx25" id="text.66"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">water equations for overland flow applications</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>OverlandFlowBates</monospace></oasis:entry>
         <oasis:entry colname="col2">An inertial approximation of the shallow</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx15" id="text.67"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">water equations for overland flow application</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>PerronNLDiffuse</monospace></oasis:entry>
         <oasis:entry colname="col2">Nonlinear hillslope diffusion</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx59" id="text.68"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>PotentialEvapotranspiration</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate potential evapotranspiration across</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx6" id="text.69"/>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">a surface</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx90" id="text.70"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>PrecipitationDistribution</monospace></oasis:entry>
         <oasis:entry colname="col2">Generate a storm sequence of intervals and</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx26" id="text.71"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">intensities</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>Radiation</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate total incident shortwave solar</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx16" id="text.72"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">radiation</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SedDepEroder</monospace></oasis:entry>
         <oasis:entry colname="col2">Sediment-flux-dependent, shear-stress-based</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx29" id="text.73"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">fluvial incision</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><monospace>SinkFiller</monospace></oasis:entry>
         <oasis:entry colname="col2">An algorithm to fill depressions in a surface</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx79" id="text.74"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SoilMoisture</monospace></oasis:entry>
         <oasis:entry colname="col2">Compute local inter-storm water balance and</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx45" id="text.75"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">root-zone soil moisture saturation fraction</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SoilInfiltrationGreenAmpt</monospace></oasis:entry>
         <oasis:entry colname="col2">Infiltrate surface water into a soil following</oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx65" id="text.76"/></oasis:entry>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx40" id="text.77"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">the Green–Ampt method</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>SteepnessFinder</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculates steepness indices for a channel</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx88" id="text.78"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">network</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>StreamPowerEroder</monospace></oasis:entry>
         <oasis:entry colname="col2">Implements fluvial erosion according to</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx17" id="text.79"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">stream power, using the Fastscape</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">algorithms</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>VegCA</monospace></oasis:entry>
         <oasis:entry colname="col2">Cellular automata algorithm to simulate</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx90" id="text.80"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">spatial organization of plant functional types</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>Vegetation</monospace></oasis:entry>
         <oasis:entry colname="col2">Calculate above-ground live and dead</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><xref ref-type="bibr" rid="bib1.bibx90" id="text.81"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">biomass and leaf area index</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?></oasis:table><table-wrap-foot><p id="d1e2023"><inline-formula><mml:math id="M9" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula> In addition to <xref ref-type="bibr" rid="bib1.bibx30" id="text.54"/> and this contribution.</p></table-wrap-foot></table-wrap>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T5" specific-use="star"><?xmltex \currentcnt{5}?><label>Table 5</label><caption><p id="d1e2812">Dependencies and citations.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Category</oasis:entry>
         <oasis:entry colname="col2">Name</oasis:entry>
         <oasis:entry colname="col3">Citation</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Core Package</oasis:entry>
         <oasis:entry colname="col2"><monospace>bmipy</monospace></oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx57" id="text.82"/>, <xref ref-type="bibr" rid="bib1.bibx34" id="text.83"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>matplotlib</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx33" id="text.84"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>netcdf4</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx83" id="text.85"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pyyaml</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pyshp</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>scipy</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx82" id="text.86"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>statsmodels</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx69" id="text.87"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pandas</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx53" id="text.88"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>xarray</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx32" id="text.89"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Testing</oasis:entry>
         <oasis:entry colname="col2"><monospace>coveralls</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pytest</monospace></oasis:entry>
         <oasis:entry colname="col3">
                  <xref ref-type="bibr" rid="bib1.bibx43" id="text.90"/>
                </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pytest-cov</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pyyaml</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pytest-datadir</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Tutorials</oasis:entry>
         <oasis:entry colname="col2"><monospace>dask</monospace></oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx23" id="text.91"/>, <xref ref-type="bibr" rid="bib1.bibx66" id="text.92"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>jupyter</monospace></oasis:entry>
         <oasis:entry colname="col3"><xref ref-type="bibr" rid="bib1.bibx58" id="text.93"/>, <xref ref-type="bibr" rid="bib1.bibx42" id="text.94"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>holoviews</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>nbformat</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Development</oasis:entry>
         <oasis:entry colname="col2"><monospace>black</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>flake8</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>isort</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Documentation</oasis:entry>
         <oasis:entry colname="col2"><monospace>sphinx</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>sphinx_rtd_theme</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>pandoc</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>tornado</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>entrypoints</monospace></oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e3182">This section focuses on the technical details of what has changed between Landlab v1.0 and v2.0. One might glean comparable information from reading the software repositories' change logs. Inclusion of the technical details here is intended to summarize key changes. In addition, where relevant, we describe why changes or improvements were made. This explanation is intended both for current and future users of Landlab as well as for those interested in scientific software development generally.</p>
      <p id="d1e3185">Changes that broke backward compatibility were required to incorporate some of the new features in Landlab v2.0. This necessitated a new major version. These changes included (i) binding of the boundary condition flags to model grids (Sect. <xref ref-type="sec" rid="Ch1.S4.SS1.SSS3"/>), (ii) a revision to the <monospace>Component</monospace> standard interface (Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>), (iii) deprecation and removal of certain components and utilities (Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>), (iv) dropping Python 2 support (following sunsetting of this version at the end of 2019 by the Python Software Foundation). Additionally, we completely revised the documentation structure (Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>). Landlab v2.0 is designed to work with a number of other Python tools for numerical modeling. They are summarized in Sect. <xref ref-type="sec" rid="Ch1.S4.SS5"/>.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Improvements to the Landlab model grids</title>
      <p id="d1e3210">Here we highlight three improvements to the Landlab model grid in v2.0.</p>
<sec id="Ch1.S4.SS1.SSS1">
  <label>4.1.1</label><title>Grids inherit from graphs</title>
      <p id="d1e3220">Each Landlab model grid combines a dual graph topology with the ability to store fields at grid elements and keep track of boundary conditions. While the concept of a dual graph is not new in Landlab v2.0, the package architecture has been revised to create a set of graph classes from which the Landlab model grids inherit (Table <xref ref-type="table" rid="Ch1.T1"/>).</p>
      <p id="d1e3225">The Landlab graphs describe the topology and connectivity of a dual graph of nodes–links–patches/corners–faces–cells and specify the <inline-formula><mml:math id="M11" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M12" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> coordinates of the nodes and corners. The package contains support for 1-D and 2-D graphs and for graphs not yet used in Landlab grids (e.g., <monospace>DualStructuredQuadGraph</monospace>). It was designed to be reusable by projects external to Landlab. While the graph capabilities do not yet support 3-D graphs, the package was designed with extension to 3-D in mind.</p>
      <p id="d1e3245">Building the model grids to inherit from the graph data structure results in all model grids containing a complete set of topology-derived attributes (e.g., <monospace>grid.links_at_node</monospace>) and attribute naming consistency between model grids. In addition, all of the topology-derived attributes are only created when needed (just-in-time memory allocation) and are cached. This was inconsistently implemented in v1.0 and provides an improvement for memory management and speed.</p>
      <p id="d1e3251">The graph and model grid data structures are all built on the <monospace>xarray</monospace> Python package's <monospace>Dataset</monospace> <xref ref-type="bibr" rid="bib1.bibx32" id="paren.95"/>. Using <monospace>xarray.Dataset</monospace> provides a number of advantages including improved input and output to the NetCDF format, use of <monospace>xarray</monospace>'s optimized data structures, and the possibility to take advantage of <monospace>xarray</monospace>-compatible parallelization-related tools <xref ref-type="bibr" rid="bib1.bibx23 bib1.bibx66" id="paren.96"><named-content content-type="pre">e.g., <monospace>dask</monospace>;</named-content></xref> without breaking backwards compatibility.</p>
</sec>
<sec id="Ch1.S4.SS1.SSS2">
  <label>4.1.2</label><title>Improved treatment of diagonals</title>
      <p id="d1e3289">The <monospace>RasterModelGrid</monospace> can optionally contain an additional grid element called a <italic>diagonal</italic>, which not only connects nodes but also crosses corners (Fig. <xref ref-type="fig" rid="Ch1.F2"/>). Including this grid element violates the assumption of a plane graph because the diagonal elements cross one another. However, use of diagonal elements has a long history in Earth surface dynamics modeling; in order to support historical algorithms <xref ref-type="bibr" rid="bib1.bibx55" id="paren.97"><named-content content-type="pre">e.g., D8 flow routing,</named-content></xref>, Landlab's <monospace>RasterModelGrid</monospace> contains support for diagonals. This permits studies that cross-compare implementations with and without diagonals <xref ref-type="bibr" rid="bib1.bibx71" id="paren.98"><named-content content-type="pre">e.g.,</named-content></xref>.</p>
      <p id="d1e3314">Landlab v1.0 had a partial implementation of diagonals in which there was no consistent way to refer to the diagonals or the group of linear elements composed of both links and diagonals. In addition, we had an incomplete set of adjacency structures describing diagonals, and we had no mechanism to store values at diagonals on fields. We now consistently call the set of links and diagonals <italic>d8s</italic> and have implemented adjacency structures and some numerical functions for diagonals and d8s that mirror those for links. Landlab assigns a unique ID to each grid element <xref ref-type="bibr" rid="bib1.bibx30" id="paren.99"><named-content content-type="pre">see</named-content><named-content content-type="post">their Fig. 4</named-content></xref>. For example, the nodes are identified with ID numbers from 0 to the number of nodes minus 1, and links are identified with numbers from 0 to the number of links minus 1. The unique IDs assigned to the d8s refer first to the links and then to the diagonals (in this contribution we will use “d8” to refer to the grid element and “D8” to refer to the flow-routing approach).</p>
</sec>
<sec id="Ch1.S4.SS1.SSS3">
  <label>4.1.3</label><title>Boundary condition flags</title>
      <?pagebreak page385?><p id="d1e3335">Landlab v2.0 provides boundary condition status arrays for nodes, links, corners, faces, and, if applicable, diagonals and d8s. Because cells and patches are uniquely associated with their own nodes and corners, we do not supply specific status arrays for those elements. Boundary condition status is indicated by a set of flags that indicate the status <xref ref-type="bibr" rid="bib1.bibx30" id="paren.100"><named-content content-type="pre">Table <xref ref-type="table" rid="Ch1.T6"/> indicates flag names; see</named-content><named-content content-type="post">their Sect. 3.1.4 for discussion of boundary conditions</named-content></xref>. Landlab does not enforce whether a component honors boundary condition flags – the status arrays and flags are provided simply as a convenience to developers. As in v1.0, we enforce internal consistency of boundary conditions across connected grid element types. For example, an update to boundary status at a node will automatically propagate into the connecting links as appropriate and vice versa.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T6" specific-use="star"><?xmltex \currentcnt{6}?><label>Table 6</label><caption><p id="d1e3350">Boundary condition flag changes.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Landlab v1.0 Name</oasis:entry>
         <oasis:entry colname="col2">Landlab v2.0 Name</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>BAD_INDEX_VALUE</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BAD_INDEX</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>CORE_NODE</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_NODE_IS_CORE</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FIXED_VALUE_BOUNDARY</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_NODE_IS_FIXED_VALUE</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FIXED_GRADIENT_BOUNDARY</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_NODE_IS_FIXED_GRADIENT</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>LOOPED_BOUNDARY</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_NODE_IS_LOOPED</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>CLOSED_BOUNDARY</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_NODE_IS_CLOSED</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>ACTIVE_LINK</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_LINK_IS_ACTIVE</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>INACTIVE_LINK</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_LINK_IS_INACTIVE</monospace></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><monospace>FIXED_LINK</monospace></oasis:entry>
         <oasis:entry colname="col2"><monospace>ModelGrid.BC_LINK_IS_FIXED</monospace></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e3477">Prior to v2.0, the flags used to indicate node and link status were not formally attached to the model grids and instead existed as separate variables provided by the package. In v2.0 we made boundary condition flags attributes of the grid so that these flags are inseparable from the grids that use them. We also modified the names for clarity (Table <xref ref-type="table" rid="Ch1.T6"/>).</p>
</sec>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Updates to the component standard interface</title>
      <p id="d1e3491">Scientific software and data are much easier to work with when they follows standards. Software tools in particular become much more accessible when they provide a <italic>standard interface</italic>: a common set of functions that look and act in a similar way across many different elements of the software. Landlab's components use a lightweight interface that is inspired by the CSDMS Basic Model Interface (BMI) <xref ref-type="bibr" rid="bib1.bibx57 bib1.bibx34" id="paren.101"/> but which takes advantage of object-oriented features of the Python language, allowing it to be more compact. Landlab also includes built-in functionality that converts any Landlab component into a BMI component, for use in frameworks like the CSDMS Python Modeling Tool <xref ref-type="bibr" rid="bib1.bibx35" id="paren.102"/>. In addition to its interface, each Landlab component also encodes metadata in a standardized format; these metadata include, for example, information about the input and output fields of the component.</p>
      <p id="d1e3503">We made changes to the expectations of component interface, metadata, and code standards based on our experience developing components, supporting community members, and using components in science applications. The enhanced interface standard is designed to improve usability and documentation and to make clearer expectations for contributed components. We have implemented automated tests that ensure existing and contributed components meet this interface standard.</p>
<sec id="Ch1.S4.SS2.SSS1">
  <label>4.2.1</label><?xmltex \opttitle{Changes to the component \_\_\texttt{init}\_\_ method}?><title>Changes to the component __<monospace>init</monospace>__ method</title>
      <p id="d1e3517">The design of many numerical model programs follows the “initialize-run-finalize” pattern <xref ref-type="bibr" rid="bib1.bibx57 bib1.bibx34" id="paren.103"><named-content content-type="pre">e.g.,</named-content></xref>. In the BMI, the initialization step is handled by the standard <monospace>initialize( )</monospace> function, and stepwise updating is handled by the <monospace>update( )</monospace> function. For Landlab components, which are implemented as Python objects, the class __<monospace>init</monospace>__ method implements initialization, and stepwise updating is normally handled by a method called either <monospace>run_one_step</monospace> or <monospace>update</monospace>. <xref ref-type="bibr" rid="bib1.bibx30" id="text.104"><named-content content-type="post">their Sect. 3.3.1</named-content></xref> defined the interface for Landlab components with the function signature for instantiation (<monospace>Component.__init__</monospace>) and advancing forward (<monospace>Component.</monospace><monospace>run_one_step</monospace>). The v1.0 component instantiation interface defined with the function definition as follows: <monospace>__init__(self, grid, arg1, arg2 …, kwd1</monospace> <inline-formula><mml:math id="M13" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <monospace>a</monospace>, <monospace>kwd2</monospace> <inline-formula><mml:math id="M14" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <monospace>b</monospace>, <monospace>kwd3</monospace> <inline-formula><mml:math id="M15" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <monospace>c</monospace>, …, <inline-formula><mml:math id="M16" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace>). Here <monospace>arg1</monospace> represents a generic argument, and <monospace>kwd1</monospace> <inline-formula><mml:math id="M17" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <monospace>a</monospace> represents a generic keyword argument. The <inline-formula><mml:math id="M18" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace> was included so that a user could make a single dictionary (or Yaml file) containing all of the keyword arguments for all components used in a model and pass the same dictionary to all components. However, an undesirable side effect of this design was that a slight misspelling of a keyword argument would result in use of the default value with no error raised. To remedy this flaw we revised the instantiation standard to remove the <inline-formula><mml:math id="M19" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace>; that is, a user may now only supply the component with input parameters that are explicitly declared in its signature.</p>
      <p id="d1e3654">In addition we expanded the requirements for component instantiation. These requirements help promote standardization among Landlab components. One new requirement is that components must inherit from the <monospace>Component</monospace> base class and call the instantiation method of the base class (<monospace>super</monospace>) as part of their instantiation. This ensures that all components take full advantage of the base class functionality and internal checking; for example, the base class will automatically make sure that all of the output fields listed in the header metadata are created, so the component author only needs to ensure that the metadata are present. A related requirement is that by the end of instantiation, all output fields made by the component must exist and have the data type specified by the component metadata. This provides for other components that may check for these fields as input. Finally, a component must raise a sensible error when bad values are provided (for example if an unsupported grid type or unused keyword argument is provided).</p>
</sec>
<?pagebreak page388?><sec id="Ch1.S4.SS2.SSS2">
  <label>4.2.2</label><title>Changes to the component run method</title>
      <p id="d1e3671">The v1.0 component interface defined a run method with a function signature <monospace>run_one_step</monospace>(<monospace>dt</monospace>, <inline-formula><mml:math id="M20" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula><monospace>args</monospace>, <inline-formula><mml:math id="M21" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace>), where <monospace>dt</monospace> represents the duration of time the model runs forward, <inline-formula><mml:math id="M22" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula><monospace>args</monospace> represents a generic list of arguments, and <inline-formula><mml:math id="M23" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace> represents a generic set of keyword arguments. In practice, we found that many Landlab components were not able to follow this interface standard because it was not flexible enough. For example, some components do not require a <monospace>dt</monospace> and thus did not take <monospace>dt</monospace>. We also found the presence of <inline-formula><mml:math id="M24" display="inline"><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup></mml:math></inline-formula><monospace>args</monospace> and <inline-formula><mml:math id="M25" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>*</mml:mo><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><monospace>kwds</monospace> in the <monospace>run_one_step</monospace> problematic because it complicated wrapping components with a Basic Model Interface <xref ref-type="bibr" rid="bib1.bibx57 bib1.bibx34" id="paren.105"><named-content content-type="pre">BMI;</named-content></xref> for use with the Python Modeling Tool <xref ref-type="bibr" rid="bib1.bibx35" id="paren.106"><named-content content-type="pre">PyMT;</named-content></xref>.</p>
      <p id="d1e3779">The revised interface balances standardization and flexibility. Components are no longer required to provide a method with the name <monospace>run_one_step</monospace>, but if they do not, then an alternative update/execution function must be<?pagebreak page389?> provided and its usage clearly documented in the header docstring of the component. The new expectation is that if <monospace>run_one_step</monospace> is used, it will take either a time duration or nothing. Thus components with a <monospace>run_one_step</monospace> method can be easily incorporated into PyMT. Pre-existing components that took arguments or keyword arguments in their <monospace>run_one_step</monospace> method have been refactored to either provide those values at instantiation or to use <italic>properties</italic>, <italic>getters</italic>, and <italic>setters</italic>. The terms getter and setter come from object-oriented programming, and they refer to small functions that retrieve the value of (get) or assign a value to (set) a particular variable. Although it might seem odd to create functions to handle such seemingly trivial tasks, the practice has the advantage of enabling defensive programming (e.g., a setter can check for the right data type), allowing a program to create a particular variable only when it is requested (which can save memory), and supporting built-in documentation (in the form of function documentation) for each variable. In Landlab (as in Python practice generally) getters and setters are implemented using the Python <monospace>@property</monospace> decorator. Those variables that use getters and setters are considered to be public, meaning that programmers using the component can easily inspect and, if desired, change their values. Other variables are considered private: used only by the component internally and not to be modified (to indicate this, the names of private variables are preceded by an underscore character).</p>
</sec>
<sec id="Ch1.S4.SS2.SSS3">
  <label>4.2.3</label><title>New component metadata standard</title>
      <p id="d1e3816">For both data and software, standardized metadata promote efficiency, interoperability, and reuse. To that end, each Landlab component includes a set of metadata in the header of the class that defines the component. Our experience with component metadata in Landlab led us to revise its design for version 2.0.</p>
      <p id="d1e3819">The metadata section of a Landlab component describes its input fields, output fields, field units, the type of grid element associated with each field, and a long-format description of the field. Metadata are now organized into a single Python dictionary, which has a key-value pair for each field used by the component. The new data structure makes it easier to test for completeness and consistency across components. Each key is a string indicating the field name. The associated value is itself a dictionary that has a standard, required set of keys (Table <xref ref-type="table" rid="Ch1.T7"/>).</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T7"><?xmltex \currentcnt{7}?><label>Table 7</label><caption><p id="d1e3827">Metadata for fields component fields.</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.85}[.85]?><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Name</oasis:entry>
         <oasis:entry colname="col2">Description</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">“dtype”</oasis:entry>
         <oasis:entry colname="col2">The data type for the items in the field indicated as a Python</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">data type (e.g., float, int).</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">“intent”</oasis:entry>
         <oasis:entry colname="col2">A string indicating the input/output intent of the field. Valid</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">options are “in”, “out”, and “inout”.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">“optional”</oasis:entry>
         <oasis:entry colname="col2">Boolean indicating whether the field is an optional input or</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">output.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">“units”</oasis:entry>
         <oasis:entry colname="col2">String indicating the units of the field. Some components</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">are unit agnostic, in which case these units can be</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">interpreted as dimensions (see description of</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><monospace>Component.unit_agnostic</monospace> in Sect. 4.2.4).</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">“mapping”</oasis:entry>
         <oasis:entry colname="col2">String indicating the type of grid element associated with the</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">field (e.g., node, link).</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">“doc”</oasis:entry>
         <oasis:entry colname="col2">String describing the field.</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?></oasis:table></table-wrap>

</sec>
<sec id="Ch1.S4.SS2.SSS4">
  <label>4.2.4</label><title>Additional component content requirements and recommendations</title>
      <p id="d1e3976">Here we highlight the few remaining component requirements and recommendations. The use of <italic>must</italic> indicates a requirement, while the use of <italic>may</italic> or <italic>should</italic> indicates a recommendation.
<?xmltex \hack{\newpage}?>
<list list-type="bullet"><list-item>
      <p id="d1e3992">All public attributes must be documented <italic>properties</italic> of the <monospace>Component</monospace> class; that is, they have the <monospace>@property</monospace> standard Python decorator. This ensures that other users are able to identify what each public attribute is and prevents variable modification unless the developer explicitly permits it. This change has little impact on developers time because a developer may elect to use only private attributes.</p></list-item><list-item>
      <p id="d1e4005">If a developer envisions that the public attribute of a component may be modified, they must create a <monospace>setter</monospace> for it. This provides a place for a component author to write checks that ensure a user cannot incorrectly assign invalid component attributes.</p></list-item><list-item>
      <p id="d1e4012">Field names shared between multiple components must use a consistent definition and dimensions. Some components require parameters and fields to use a particular set of units, while others are unit agnostic. This is flagged in the component attribute <monospace>Component.unit_agnostic</monospace>. It is up to the user to ensure that an application uses consistent units across all fields, components, and input parameters.</p></list-item><list-item>
      <p id="d1e4019">Arguments and keyword arguments should start with lowercase letters.</p></list-item><list-item>
      <p id="d1e4023">The grid should be the only argument to the component __<monospace>init</monospace>__. All other inputs are provided as keyword arguments.</p></list-item><list-item>
      <p id="d1e4030">Keyword arguments should have reasonable default values so that all keywords are truly optional.</p></list-item><list-item>
      <p id="d1e4034">The main method of a component (either <monospace>run_one_step</monospace> or a custom-designed update/execution function) should return either nothing, the grid, or a single calculated value.</p></list-item></list></p><?xmltex \hack{\newpage}?>
</sec>
</sec>
<?pagebreak page390?><sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Removed or modified components and utilities</title>
      <p id="d1e4050">Several obsolete components and utilities have been removed from Landlab v2.0. Other components were substantially modified. Here we describe these changes.
<list list-type="bullet"><list-item>
      <p id="d1e4055">The <monospace>FlowRouter</monospace> component, which did D8 and D4/steepest descent flow routing and accumulation, was removed and replaced with the <monospace>FlowAccumulator</monospace> and a family of <monospace>FlowDirector</monospace> components. This change provides greater flexibility in options for flow-routing algorithms (e.g., multiple flow directions, D<inline-formula><mml:math id="M26" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:math></inline-formula>).</p></list-item><list-item>
      <p id="d1e4077">The routing-based surface-water erosion components (such as <monospace>StreamPowerEroder</monospace>) now use a single consistent method for handling the input runoff rate. The keyword argument <monospace>runoff_rate</monospace> to the <monospace>FlowAccumulator</monospace> can now specify a float, array, or field name indicating the runoff rate. This is then accumulated to create the field <monospace>surface__water_discharge</monospace>, which can be used by components that model surface-water erosion.</p></list-item><list-item>
      <p id="d1e4093">The <monospace>ModelParameterDictionary</monospace> was removed because it represents an old-style input file that has been superseded by the Yaml format.</p></list-item><list-item>
      <p id="d1e4100">A new <monospace>ChannelProfiler</monospace> component replaces the previous  channel-profiling submodule (<monospace>landlab.plot.channel_profile</monospace>).</p></list-item><list-item>
      <p id="d1e4110">The <monospace>noclobber</monospace> keyword argument for field creation was changed to <monospace>clobber</monospace> because the original name required double negatives and was not intuitive. <monospace>noclobber=False</monospace> is equivalent to <monospace>clobber</monospace> <inline-formula><mml:math id="M27" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <monospace>True</monospace>.</p></list-item><list-item>
      <p id="d1e4137">The ability to pass an array of flooded nodes to the <monospace>run_one_step</monospace> method in surface-water erosion components was removed and replaced with a keyword argument to __<monospace>init</monospace>__ called <monospace>erode_flooded_nodes</monospace>.</p></list-item></list></p>
</sec>
<sec id="Ch1.S4.SS4">
  <label>4.4</label><title>Reorganization of the Landlab documentation</title>
      <p id="d1e4157">The Landlab online documentation is now consolidated onto a single Sphinx-based platform (<uri>https://landlab.readthedocs.io/</uri>, last access: 12 May 2020). Consolidating the documentation onto a single platform with a consistent interface reduces duplication of information, improves consistency, and permits comprehensive searches. The site design is similar to that of widely used scientific Python packages and was modeled after that of <monospace>pandas</monospace> <xref ref-type="bibr" rid="bib1.bibx53" id="paren.107"/>. The revised documentation pages include installation instructions, a user guide (including tutorials), a guide for developers, and an API reference that contains formatted versions of inline documentation within the source code. The documentation source is written in reStructuredText format, and the source files are provided as part of the Landlab package.</p>
</sec>
<sec id="Ch1.S4.SS5">
  <label>4.5</label><title>Packages built to work with Landlab</title>
      <p id="d1e4177">Landlab was designed as a generic, extensible modeling framework for Earth surface dynamics. Because Landlab exposes a BMI <xref ref-type="bibr" rid="bib1.bibx34" id="paren.108"/>, it is compatible with the PyMT package <xref ref-type="bibr" rid="bib1.bibx35" id="paren.109"/> – a Python package that supports running and coupling models that expose a BMI. PyMT provides access to a suite of models written in multiple languages (e.g., Python, Fortran, C<inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula>) and a standard interface for initializing and running.</p>
      <p id="d1e4196">In addition, two packages have been built using Landlab to support applications in sensitivity analysis, calibration, validation, and multimodel comparison <xref ref-type="bibr" rid="bib1.bibx12 bib1.bibx13 bib1.bibx14" id="paren.110"><named-content content-type="pre">see</named-content><named-content content-type="post">for example applications</named-content></xref>. First, <monospace>terrainbento</monospace> is a Python package for multimodel analysis that provides an extensible set of 27 Landlab-built models for long-term drainage basin and landform evolution, along with general classes for handling boundary conditions through an input-file format <xref ref-type="bibr" rid="bib1.bibx11" id="paren.111"/>. Second, <monospace>umami</monospace> is used to calculate model–data comparison metrics for observed and simulated topography <xref ref-type="bibr" rid="bib1.bibx10" id="paren.112"/>.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Citation of Landlab and parts of Landlab</title>
      <p id="d1e4228">Citation of scientific software is an outstanding challenge <xref ref-type="bibr" rid="bib1.bibx54" id="paren.113"><named-content content-type="pre">e.g.,</named-content></xref>. Scientific software is cited less frequently than it is used <xref ref-type="bibr" rid="bib1.bibx56" id="paren.114"><named-content content-type="pre">e.g.,</named-content></xref>. Indicating a recommended citation for use of Landlab is additionally challenging because, depending on the portion of Landlab used, the set of citations required may vary. We describe our recommendations for which citations to use and present a tool within Landlab to improve citation discoverability.</p>
      <p id="d1e4241">Any time any part of Landlab is used, <xref ref-type="bibr" rid="bib1.bibx30" id="text.115"/> should be cited; if the version used is <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn></mml:mrow></mml:math></inline-formula>, then this contribution should be additionally cited. These two citations acknowledge the development of the Landlab package itself. We also recommend that authors state the specific version of Landlab used (the version can be found by evaluating <monospace>landlab.__version__</monospace>).</p>
      <p id="d1e4260">Each application of Landlab may use a different set of components, each with a different citation for the software itself and general set of theory references (Tables <xref ref-type="table" rid="Ch1.T3"/> and <xref ref-type="table" rid="Ch1.T4"/>). Additionally, some parts of Landlab may internally use others; thus a user may not easily be able to assess the entire set of elements of Landlab their application has used and what to cite for each part.</p><?xmltex \setfigures?><?xmltex \setlistings?><?xmltex \floatpos{t}?><fig id="Ch1.F3" specific-use="star"><?xmltex \currentcnt{1}?><label>Listing 1</label><caption><p id="d1e4271">Using the Landlab citation registry.</p></caption>
        <?xmltex \igopts{width=455.244094pt}?><graphic xlink:href="https://esurf.copernicus.org/articles/8/379/2020/esurf-8-379-2020-l01.png"/>

      </fig>

      <p id="d1e4280">This challenge is not new. For example, it is faced by the <monospace>scipy</monospace> package, which addresses it by providing a core-package citation – <xref ref-type="bibr" rid="bib1.bibx82" id="text.116"/> – and indicating that users should look to the reference section of the documentation for additional citations. Similarly, the codes<?pagebreak page391?> distributed through the Computational Infrastructure for Geodynamics (CIG) have a citation builder that distinguishes between citations specific to the software implementation, primary citations describing the code development and numerical methods, and secondary citations that pertain to parts of the code a user may or may not have used <xref ref-type="bibr" rid="bib1.bibx41" id="paren.117"/>. This example from CIG highlights a further challenge: a component may have one or more citations for each of the following categories: (i) the theory behind the implemented idea, (ii) a description of the software implementation itself, (iii) any specialized algorithms developed for the implementation, and (iv) the first reported use of the software in a publication.</p>
      <p id="d1e4292">Should one of these or all of these be the recommended and/or required citations for a given software component? We do not think it is our role to decide which citations, if any, a component author indicates as recommended or required. Additionally, it is not our place – as the software developers behind Landlab – to determine which citations best represent the theory behind an implementation. Instead we provide two places for a component author to indicate what they think the minimum required citations are as follows: a component attribute called <monospace>Component.cite_as</monospace> which lists required citations for a given component and a section in the component docstring that provides the broader reference context. These two categories are reflected by the two citation columns in Tables <xref ref-type="table" rid="Ch1.T3"/> and <xref ref-type="table" rid="Ch1.T4"/>. Clearly, a component developer has the authority to decide exactly what to put in either of these locations.</p>
      <p id="d1e4302">To aid discoverability of citations, we have created the Landlab <italic>citation registry</italic>, a tool that compiles citation-related metadata for the specific set of Landlab components used in an application (Listing <xref ref-type="fig" rid="Ch1.F3"/>). The citation registry compiles citation information for all components currently instantiated in a Python session by automatically interrogating their <monospace>cite_as</monospace> properties.</p>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Lessons on geoscientific software development</title>
      <p id="d1e4321">In this section we highlight several lessons about software development we have learned in the processes of supporting and improving Landlab v1.0 to its current v2.0 state and working with the growing community of users.</p>
      <p id="d1e4324">We reflect on these lessons because the production of research software is itself research, and there are many aspects of scientific software which are distinct from other software, notably that (i) the development lifecycle includes additional stages because the methods used to implement a piece of software may not exist at the outset of a project, (ii) requirements evolve because they are part of the research, and (iii) the state of the scientific field may be complex and evolving <xref ref-type="bibr" rid="bib1.bibx19" id="paren.118"><named-content content-type="pre">e.g.,</named-content></xref>.</p>
<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>Value of testing</title>
      <p id="d1e4339">The development of docstring and unit tests within Landlab was motivated by following software development best practices <xref ref-type="bibr" rid="bib1.bibx86 bib1.bibx87" id="paren.119"><named-content content-type="pre">e.g.,</named-content></xref>. That is, our focus was on ensuring that the package behaves as described and, where an analytical solution exists, that Landlab correctly solves it. While using a testing suite is standard in many software development contexts, it is relatively uncommon in scientific software development <xref ref-type="bibr" rid="bib1.bibx63" id="paren.120"><named-content content-type="pre">e.g.,</named-content></xref>. Tests do not ensure that elements of the Landlab software represent the truth or guarantee that a model is appropriate for a specific application; in other words, Landlab cannot and does not attempt to <italic>validate</italic> <xref ref-type="bibr" rid="bib1.bibx67" id="paren.121"><named-content content-type="pre">sensu</named-content></xref> the assumptions of its components. Instead, the tests <italic>verify</italic> <xref ref-type="bibr" rid="bib1.bibx67" id="paren.122"/> that the software is behaving as expected and that numerical methods are solving stated equations reliably. Through coupled use of an automatic testing suite and continuous integration  we ensure that changes to the code base do not break existing tests.</p>
      <p id="d1e4367">The process of developing Landlab, working with its user community, and revising it to v2.0 illustrated another, obvious in retrospect, benefit of the tests: developing a set of tests for the package interface and numerical behavior <italic>make it possible to refactor</italic>. Without these tests, it would have been<?pagebreak page392?> much more difficult to implement beneficial revisions (such as refactoring the model grid to derive from the graph-based class).</p>
      <p id="d1e4373">Writing effective unit tests that ensure Landlab components reliably solve their equations under a variety of initial and boundary conditions is not a trivial task. When a set of equations that a component solves have an analytical solution then the numerics of a component can be verified based on the ability to reproduce such a relationship <xref ref-type="bibr" rid="bib1.bibx85" id="paren.123"><named-content content-type="pre">e.g., stream power erosion produces a known slope-area relationship,</named-content></xref>. When such analytical predictions do not exist—as is often the case—a more detailed analysis of the equations must be performed in order to create a full verification test. Even in the absence of such analytical solutions, however, many existing components have made headway during development simply by testing for mass balance and timestep consistency, and the value of such simplifications should not be ignored.</p>
      <p id="d1e4381">In contrast, it is much easier to design and implement tests for the Landlab <italic>interface</italic> (e.g., when an invalid value is passed to a component, is the correct type of error raised). In general, designing a thorough set of tests is a learned skill that requires thinking through many edge cases of model behavior.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Collaborative development of research software requires many skills</title>
      <p id="d1e4395">Scientific software development requires distinct skills. Based on working with community user-developers and onboarding new members of the core development team, we describe the set of skills that are needed to interact with a project like Landlab as a user-developer. Our intention here is to document a concrete example so that efforts to create scientific software development curricula can be based on use-cases. In the case of Landlab, the skills required to contribute to the project include:
<list list-type="order"><list-item>
      <p id="d1e4400">Python programming, including functions, classes, and basic package organization.</p></list-item><list-item>
      <p id="d1e4404">Fundamental elements of version control using git (branching, commits).</p></list-item><list-item>
      <p id="d1e4408">GitHub for collaboration (issues trackers, merging, pull requests, managing forks, code reviews).</p></list-item><list-item>
      <p id="d1e4412">Package dependency management (currently implemented with conda environments).</p></list-item><list-item>
      <p id="d1e4416">Conceptual design and practical implementation of unit tests.</p></list-item><list-item>
      <p id="d1e4420">reStructuredText  syntax for creating documentation.</p></list-item></list></p>
      <p id="d1e4423">In addition, there are a number of skills that not all user-developers need but are necessary to have within the project team in order to maintain continuous integration, documentation, building binaries, and distributing (e.g., <monospace>sphinx</monospace>, configuring and debugging continuous integration platforms).</p>
      <p id="d1e4429">The importance of these skills is highlighted in the context of <italic>technical debt</italic>, or the cost of implementing a fast and easy solution now, as opposed to a better approach that may take longer. For example, we have found that it is much easier to create content than to make it accessible (this observation motivated the restructuring of the documentation described in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>). It is also easier to write code than to write thorough and effective tests for it, yet omitting tests greatly increases the risk of serious bugs, which can invalidate the research that the software is meant to facilitate.</p>
</sec>
<sec id="Ch1.S6.SS3">
  <label>6.3</label><title>Balancing the burden on developers and users</title>
      <p id="d1e4446">Open-source software (scientific or otherwise) commonly has many more users than developers or user-developers (e.g., <monospace>numpy</monospace>). Under those circumstances, moderate investments in developer time are justified to make use faster or more intuitive for users. However, Landlab is a case with slightly different dynamics, which are worth reflecting on. Landlab is an example of a niche scientific software package with a relatively small development community. Here we reflect on some of the development dynamics of this type of scientific software and the relative burdens for use on developers and users.</p>
      <p id="d1e4452">Our goal is to create an extensible software package that solves a variety of Earth surface dynamics problems and is accessible to undergraduates and active researchers <italic>and</italic> to support community members in contributing to the code (transitioning from users to user-developers). Effectively serving the community requires a balance between minimizing technical debt (by enforcing standards within the code base), while also making development and contribution accessible to inexperienced but motivated community members.</p>
      <p id="d1e4458">One aspect of our approach, inspired by experience working with community members, is to be flexible with the software engineering and interface standards. This includes relaxing standards when necessary. For example, while a strict interface standard for components would likely reduce technical debt, our experience is that such rigidity would raise a substantial barrier to community contribution. This means that we need to strike a balance in our design principles between standardization and flexibility (e.g., relaxing the standard for the <monospace>run_one_step</monospace> method described in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>).</p>
      <p id="d1e4466">Second, we embrace the idea that good is better than not at all. That is, some tests are better than none, meaningful tests are better than non-meaningful ones, and bare-bones documentation is better than none. We find that documentation improves the most when users try to use it, find that it is insufficient or unclear, and interact with developers through the online and open GitHub Issues forum. Users and developers<?pagebreak page393?> then together revise the text. Because the development team is small and supported primarily by grants, we rely on users to indicate where improvements must be made.</p>
</sec>
</sec>
<sec id="Ch1.S7">
  <label>7</label><title>How do I get started?</title>
      <p id="d1e4478">We highly encourage all contributions to Landlab. The package is designed as an extensible piece of community software, and we look forward to it growing to meet community needs. Common ways that an interested individual might get started include the following: identifying or making improvements to the documentation and example notebooks, finding and fixing bugs, and describing and creating desired features – such as new components. For information about how to get started, including source code and prepackaged binary installation (via PyPI or conda-forge), visit the website at <uri>https://landlab.readthedocs.io/</uri> (last access: 12 May 2020).</p>
</sec>
<sec id="Ch1.S8" sec-type="conclusions">
  <label>8</label><title>Conclusions</title>
      <p id="d1e4492">Landlab v2.0 provides the community with a robust and extensible package for modeling Earth surface dynamics. It is distributed as source code and as prepackaged binaries for Linux, MacOS, and Windows. An extensive set of unit tests ensure reliability of the code base. This version provides substantial improvements over v1.0 including (i) a revised set of model grid classes, (ii) updates to the component interface, (iii) 31 new components, (iv) expanded and consolidated documentation, and (v) a tool for identifying appropriate citations. The backward-compatibility-breaking changes made in Landlab v2.0 reflect changes necessary based on use and development of the package. The modular design of Landlab means that developers only need to create the new piece they need, and researchers can mix and match components to create a desired model. As a tested, version-controlled, and documented software package, Landlab reduces barriers to computational modeling and supports reproducible research.</p>
</sec>

      
      </body>
    <back><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d1e4499">The v2.0 version of the software is provided as a supplement to this contribution and is archived with Zenodo <xref ref-type="bibr" rid="bib1.bibx37" id="paren.124"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d1e4508">KRB and EWHH led the design and v2.0 refactoring of the Landlab package with input from all coauthors. KRB wrote the original draft of the paper, with input from all coauthors. All authors edited the paper. KRB, EWHH, GET, NMG, DEJH, NJL, MM, SSN, and JMA contributed to the Landlab code base. All authors designed and taught short courses which provided usability testing and resulted in critical improvements to package architecture and documentation. CB expanded accessibility of Landlab using advanced cyberinfrastructure by leading integration of Landlab with the HydroShare platform. GET, NMG, EI, and EWHH conceptualized Landlab and created its prototype. GET, NMG, EI, and DEJH acquired the core funding to support Landlab, with additional funding acquired by KRB, CB, and NJL.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e4514">The authors declare that they have no conflict of interest.</p>
  </notes><ack><title>Acknowledgements</title><p id="d1e4521">Funding sources for Landlab are acknowledged in the next section. In addition, we recognize support and guidance from the Community Surface Dynamics Modeling System. We thank Tristan Salles and Wolfgang Schwanghart for thoughtful reviews, and Simon Mudd for serving as handling editor. Tony Castronova and the  Consortium of Universities for the Advancement of Hydrologic Science, Inc. support use of Landlab on the HydroShare Platform (NSF EAR 1338606). Landlab Group members on HydroShare have freely shared research, data, training, and teaching resources with Landlab and HydroShare communities. Landlab relies on free open-source package builds from TravisCI and Appveyor for our continuous integration. Our documentation is hosted for free by ReadTheDocs.</p><p id="d1e4523">Landlab would not exist without decades of open-source software development. In this spirit, we thank all community members who have asked questions, made issues, commented on documentation that did not make sense, and contributed code to the package. Below we list the results of our best efforts to compile all non-author community contributors to the Landlab package source code. The are as follows (in alphabetical order): Guiseppe Cippolla, Jon Czuba, Vanessa Gabel, Rachel Glade, Jenny Knuth, Abby Langston, David Litwin, Amanda Manaster, Allison Pfeiffer, Francis Rengers, Charlie Shobe, and Rhonda Strauch.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d1e4528">This research has been supported by the US National Science Foundation (grant nos. 1147454, 1450409, 1147519, 1450338, 1148305, 1450412, 1246761, 1725774, 1902600, 1226297, and 1831623), the Marie Curie/Sêr Cymru II Cofund Research Fellowship (grant no. 663830-CU-035), a Software Sustainability Institute Fellowship, and a Tulane University Oliver Fund Scholar Award.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d1e4534">This paper was edited by Simon Mudd and reviewed by Tristan Salles and Wolfgang Schwanghart.</p>
  </notes><?xmltex \hack{\newpage}?><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Adams et al.(2017)Adams, Gasparini, Hobley, Tucker, Hutton,
Nudurupati, and Istanbulluoglu</label><?label adams2017landlab?><mixed-citation>Adams, J. M., Gasparini, N. M., Hobley, D. E. J., Tucker, G. E., Hutton, E. W. H., Nudurupati, S. S., and Istanbulluoglu, E.: The Landlab v1.0 OverlandFlow component: a Python tool for computing shallow-water flow across watersheds, Geosci. Model Dev., 10, 1645–1663, <ext-link xlink:href="https://doi.org/10.5194/gmd-10-1645-2017" ext-link-type="DOI">10.5194/gmd-10-1645-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Adorf et al.(2019)Adorf, Ramasubramani, Anderson, and
Glotzer</label><?label adorf2019professionally?><mixed-citation>Adorf, C. S., Ramasubramani, V., Anderson, J. A., and Glotzer, S. C.: How to
Professionally Develop Reusable Scientific Software – And When Not To, Comput. Sci. Eng., 21, 66–79, <ext-link xlink:href="https://doi.org/10.1109/mcse.2018.2882355" ext-link-type="DOI">10.1109/mcse.2018.2882355</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Ahnert(1976)</label><?label ahnert1976brief?><mixed-citation>
Ahnert, F.: Brief description of a comprehensive three-dimensional
process-response model of landform development, Z. Geomorphol. Suppl. Band, 25, 29–49, 1976.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Albert et al.(2016)Albert, Schoolmaster Jr, Tagliacollo, and
Duke-Sylvester</label><?label albert2016barrier?><mixed-citation>Albert, J. S., Schoolmaster Jr., D. R., Tagliacollo, V., and Duke-Sylvester,
S. M.: Barrier Displacement on a Neutral Landscape: Toward a Theory of
Continental Biogeography, System. Biol., 66, 167–182, <ext-link xlink:href="https://doi.org/10.1093/sysbio/syw080" ext-link-type="DOI">10.1093/sysbio/syw080</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Armstrong(1976)</label><?label armstrong1976three?><mixed-citation>
Armstrong, A. C.: A three dimensional simulation of slope forms, Z. Geomorphol., 25, 20–28, 1976.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>ASCE(2005)</label><?label asce2005evapotranspiration?><mixed-citation>
ASCE: The ASCE Standardized Reference Evapotranspiration Equation, in:
Standardization of Reference Evapotranspiration Task Committee Final Report, edited by: Allen, R. G., Walter, I. A., Elliot, R. L., Howell, T. A., Itenﬁsu, D., Jensen, M. E., and Snyder, R. L., Technical Committee report to the Environmental and Water Resources Institute of the American Society of Civil Engineers from the Task Committee on Standardization of Reference Evapotranspiration, Reston, VA, USA, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Bandaragoda et al.(2019)Bandaragoda, Castronova, Istanbulluoglu,
Strauch, Nudurupati, Phuong, Adams, Gasparini, Barnhart, Hutton, Hobley,
Tarboton, Tucker, David, Idaszak, and Wang</label><?label bandaragoda2019enabling?><mixed-citation>Bandaragoda, C., Castronova, A., Istanbulluoglu, E., Strauch, R., Nudurupati,
S., Phuong, J., Adams, J., Gasparini, N., Barnhart, K. R., Hutton, E.,
Hobley, D., Lyons, N. J., Tucker, G. E., Tarboton, D. G., Idaszak, R., and Wang, S.-W.: Enabling Collaborative Numerical Modeling in Earth Sciences using Knowledge Infrastructure, Environ. Model. Softw., 120, 104424, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2019.03.020" ext-link-type="DOI">10.1016/j.envsoft.2019.03.020</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Barnes et al.(2014)Barnes, Lehman, and Mulla</label><?label barnes2014priority?><mixed-citation>Barnes, R., Lehman, C., and Mulla, D.: Priority-flood: An optimal
depression-filling and watershed-labeling algorithm for digital elevation
models, Comput. Geosci., 62, 117–127, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2013.04.024" ext-link-type="DOI">10.1016/j.cageo.2013.04.024</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Barnhart et al.(2018)Barnhart, Hutton, Gasparini, and
Tucker</label><?label barnhart2018lithology?><mixed-citation>Barnhart, K. R., Hutton, E., Gasparini, N., and Tucker, G.: Lithology: A
Landlab submodule for spatially variable rock properties, J. Open Sour. Softw., 3, 979, <ext-link xlink:href="https://doi.org/10.21105/joss.00979" ext-link-type="DOI">10.21105/joss.00979</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Barnhart et al.(2019a)Barnhart, Hutton, and
Tucker</label><?label barnhart2019umami?><mixed-citation>Barnhart, K. R., Hutton, E., and Tucker, G.: umami: A Python package for Earth surface dynamics objective function construction, J. Open Sour. Softw., 4, 1776, <ext-link xlink:href="https://doi.org/10.21105/joss.01776" ext-link-type="DOI">10.21105/joss.01776</ext-link>, 2019a.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Barnhart et al.(2019b)Barnhart, Glade, Shobe, and
Tucker</label><?label barnhart2019terrain?><mixed-citation>Barnhart, K. R., Glade, R. C., Shobe, C. M., and Tucker, G. E.: Terrainbento 1.0: a Python package for multi-model analysis in long-term drainage basin evolution, Geosci. Model Dev., 12, 1267–1297,
<ext-link xlink:href="https://doi.org/10.5194/gmd-12-1267-2019" ext-link-type="DOI">10.5194/gmd-12-1267-2019</ext-link>, 2019b.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Barnhart et al.(2020a)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><?label barnhart2019aainverting?><mixed-citation>Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi, M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 1. Conceptualization and sensitivity analysis,
J. Geophys. Res.-Earth, 125, e2018JF004961, <ext-link xlink:href="https://doi.org/10.1029/2018JF004961" ext-link-type="DOI">10.1029/2018JF004961</ext-link>, 2020a.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Barnhart et al.(2020b)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><?label barnhart2019calibration?><mixed-citation>Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi, M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 2. Calibration and validation, J. Geophys. Res.-Earth, 125, e2018JF004963, <ext-link xlink:href="https://doi.org/10.1029/2018JF004963" ext-link-type="DOI">10.1029/2018JF004963</ext-link>, 2020b.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Barnhart et al.(2020c)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><?label barnhart2019parameters?><mixed-citation>Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi,
M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 3. Determining parameter ranges for select
mature geomorphic transport laws and connecting changes in fluvial erodibility to changes in climate, J. Geophys. Res.-Earth, e2019JF005287, <ext-link xlink:href="https://doi.org/10.1029/2019JF005287" ext-link-type="DOI">10.1029/2019JF005287</ext-link>, 2020c.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Bates et al.(2010)Bates, Horritt, and Fewtrell</label><?label bates2010simple?><mixed-citation>Bates, P. D., Horritt, M. S., and Fewtrell, T. J.: A simple inertial formulation of the shallow water equations for efficient two-dimensional
flood inundation modelling, J. Hydrol., 387, 33–45,
<ext-link xlink:href="https://doi.org/10.1016/j.jhydrol.2010.03.027" ext-link-type="DOI">10.1016/j.jhydrol.2010.03.027</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Bras(1990)</label><?label bras1990hydrology?><mixed-citation>
Bras, R.: Hydrology: An introduction to hydrologic science, Addison-Wesley,
Reading, MA, USA, 1990.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Braun and Willett(2013)</label><?label braun2013very?><mixed-citation>Braun, J. and Willett, S. D.: A very efficient O(n), implicit and parallel
method to solve the stream power equation governing fluvial incision and
landscape evolution, Geomorphology, 180-181, 170–179,
<ext-link xlink:href="https://doi.org/10.1016/j.geomorph.2012.10.008" ext-link-type="DOI">10.1016/j.geomorph.2012.10.008</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Carretier et al.(2016)Carretier, Martinod, Reich, and
Godderis</label><?label carretier2016modelling?><mixed-citation>Carretier, S., Martinod, P., Reich, M., and Godderis, Y.: Modelling sediment
clasts transport during landscape evolution, Earth Surf. Dynam., 4, 237–251, <ext-link xlink:href="https://doi.org/10.5194/esurf-4-237-2016" ext-link-type="DOI">10.5194/esurf-4-237-2016</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Carver et al.(2016)Carver, Hong, and
Thiruvathukal</label><?label carver2016software?><mixed-citation>
Carver, J. C., Hong, N. P. C., and Thiruvathukal, G. K.: Software engineering
for science, CRC Press, Boca Raton, FL, USA, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Chen et al.(2018)Chen, Dallmeier-Tiessen, Dasler, Feger, Fokianos,
Gonzalez, Hirvonsalo, Kousidis, Lavasa, Mele, Rodriguez, imko, Smith,
Trisovic, Trzcinska, Tsanaktsidis, Zimmermann, Cranmer, Heinrich, Watts,
Hildreth, Iglesias, Lassila-Perini, and Neubert</label><?label chen2018open?><mixed-citation>Chen, X., Dallmeier-Tiessen, S., Dasler, R., Feger, S., Fokianos, P., Gonzalez, J. B., Hirvonsalo, H., Kousidis, D., Lavasa, A., Mele, S., Rodriguez, D. R., Šimko, T., Smith, T., Trisovic, A., Trzcinska, A., Tsanaktsidis, I., Zimmermann, M., Cranmer, K., Heinrich, L., Watts, G., Hildreth, M., Iglesias, L. L., Lassila-Perini, K., and Neubert, S.: Open is not enough, Nat. Phys., 15, 113–119, <ext-link xlink:href="https://doi.org/10.1038/s41567-018-0342-2" ext-link-type="DOI">10.1038/s41567-018-0342-2</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Childs(1971)</label><?label childs1971drainage?><mixed-citation>Childs, E. C.: Drainage of Groundwater Resting on a Sloping Bed, Water Resour. Res., 7, 1256–1263, <ext-link xlink:href="https://doi.org/10.1029/wr007i005p01256" ext-link-type="DOI">10.1029/wr007i005p01256</ext-link>, 1971.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Culling(1963)</label><?label culling1963soil?><mixed-citation>Culling, W. E. H.: Soil Creep and the Development of Hillside Slopes, J. Geol., 71, 127–161, <ext-link xlink:href="https://doi.org/10.1086/626891" ext-link-type="DOI">10.1086/626891</ext-link>, 1963.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Dask Development Team(2016)</label><?label dask2015dask?><mixed-citation>Dask Development Team: Dask: Library for dynamic task scheduling, available at: <uri>https://dask.org</uri> (last access: 12 May 2020), 2016.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Davy and Lague(2009)</label><?label davy2019fluvial?><mixed-citation>Davy, P. and Lague, D.: Fluvial erosion/transport equation of landscape
evolution models revisited, J. Geophys. Res., 114, F03007, <ext-link xlink:href="https://doi.org/10.1029/2008jf001146" ext-link-type="DOI">10.1029/2008jf001146</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>de Almeida et al.(2012)de Almeida, Bates, Freer, and
Souvignet</label><?label dalmeida2012improving?><mixed-citation>de Almeida, G. A. M., Bates, P., Freer, J. E., and Souvignet, M.: Improving
the stability of a simple formulation of the shallow water equations for 2-D
flood modeling, Water Resour. Res., 48, W05528, <ext-link xlink:href="https://doi.org/10.1029/2011wr011570" ext-link-type="DOI">10.1029/2011wr011570</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Eagleson(1978)</label><?label eagleson1978climate?><mixed-citation>Eagleson, P. S.: Climate, soil, and vegetation: 2. The distribution of annual
precipitation derived from observed storm sequences, Water Resour. Res., 14, 713–721, <ext-link xlink:href="https://doi.org/10.1029/wr014i005p00713" ext-link-type="DOI">10.1029/wr014i005p00713</ext-link>, 1978.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Freeman(1991)</label><?label freeman1991calculating?><mixed-citation>Freeman, T. G.: Calculating catchment area with divergent flow based on a
regular grid, Comput. Geosci., 17, 413–422, <ext-link xlink:href="https://doi.org/10.1016/0098-3004(91)90048-i" ext-link-type="DOI">10.1016/0098-3004(91)90048-i</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Ganti et al.(2012)Ganti, Passalacqua, and
Foufoula-Georgiou</label><?label ganti2012sub?><mixed-citation>Ganti, V., Passalacqua, P., and Foufoula-Georgiou, E.: A sub-grid scale closure for nonline<?pagebreak page395?>ar hillslope sediment transport models, J. Geophys. Res.-Earth, 117, F02012, <ext-link xlink:href="https://doi.org/10.1029/2011jf002181" ext-link-type="DOI">10.1029/2011jf002181</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Hobley et al.(2011)Hobley, Sinclair, Mudd, and
Cowie</label><?label hobley2011field?><mixed-citation>Hobley, D. E. J., Sinclair, H. D., Mudd, S. M., and Cowie, P. A.: Field
calibration of sediment flux dependent river incision, J. Geophys. Res., 116, F04017, <ext-link xlink:href="https://doi.org/10.1029/2010jf001935" ext-link-type="DOI">10.1029/2010jf001935</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Hobley et al.(2017)Hobley, Adams, Nudurupati, Hutton, Gasparini,
Istanbulluoglu, and Tucker</label><?label hobley2017creative?><mixed-citation>Hobley, D. E. J., Adams, J. M., Nudurupati, S. S., Hutton, E. W. H., Gasparini, N. M., Istanbulluoglu, E., and Tucker, G. E.: Creative computing with Landlab: an open-source toolkit for building, coupling, and exploring
two-dimensional numerical models of Earth-surface dynamics, Earth Surf. Dynam., 5, 21–46, <ext-link xlink:href="https://doi.org/10.5194/esurf-5-21-2017" ext-link-type="DOI">10.5194/esurf-5-21-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Howard(1994)</label><?label howard1994detachment?><mixed-citation>Howard, A. D.: A detachment-limited model of drainage basin evolution, Water
Resour. Res., 30, 2261–2285, <ext-link xlink:href="https://doi.org/10.1029/94wr00757" ext-link-type="DOI">10.1029/94wr00757</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Hoyer and Hamman(2016)</label><?label hoyer2017xarray?><mixed-citation>Hoyer, S. and Hamman, J.: xarray: N-D labeled Arrays and Datasets in Python,
J. Open Res. Softw., 5, 10, <ext-link xlink:href="https://doi.org/10.5334/jors.148" ext-link-type="DOI">10.5334/jors.148</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Hunter(2007)</label><?label hunter2007matplotlib?><mixed-citation>Hunter, J. D.: Matplotlib: A 2D Graphics Environment, Comput. Sci. Eng., 9, 90–95, <ext-link xlink:href="https://doi.org/10.1109/mcse.2007.55" ext-link-type="DOI">10.1109/mcse.2007.55</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Hutton and Piper(2020a)</label><?label bmi_python_v2?><mixed-citation>Hutton, E. W. H. and Piper, M.: csdms/bmi-python: v2.0, zenodo, <ext-link xlink:href="https://doi.org/10.5281/zenodo.3647556" ext-link-type="DOI">10.5281/zenodo.3647556</ext-link>, 2020a.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Hutton and Piper(2020b)</label><?label pymt_v1?><mixed-citation>Hutton, E. W. H. and Piper, M.: csdms/pymt: The Python Modeling Toolkit,
zenodo, <ext-link xlink:href="https://doi.org/10.5281/zenodo.3644240" ext-link-type="DOI">10.5281/zenodo.3644240</ext-link>, 2020b.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Hutton and Syvitski(2008)</label><?label hutton2008sedflux?><mixed-citation>Hutton, E. W. H. and Syvitski, J. P.: Sedflux 2.0: An advanced process-response model that generates three-dimensional stratigraphy, Comput. Geosci., 34, 1319–1337, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2008.02.013" ext-link-type="DOI">10.1016/j.cageo.2008.02.013</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Hutton et al.(2020)Hutton, Barnhart, Hobley, Tucker, Nudurupati,
Adams, Gasparini, Shobe, Strauch, Knuth, Mouchene, Lyons, Litwin, Glade,
Giuseppecipolla95, Manaster, Langston, Thyng, and Rengers</label><?label landlab_v2?><mixed-citation>Hutton, E. W. H., Barnhart, K. R., Hobley, D. E. J., Tucker, G. E., Nudurupati, S. S., Adams, J. M., Gasparini, N. M., Shobe, C. M., Strauch, R., Knuth, J., Mouchene, M., Lyons, N., Litwin, D., Glade, R., Cipolla, G.,  Manaster, A., Langston, A., Thyng, K., and Rengers, F.: landlab/landlab: Mrs. Weasley, zenodo, <ext-link xlink:href="https://doi.org/10.5281/zenodo.3776837" ext-link-type="DOI">10.5281/zenodo.3776837</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Hwang et al.(2017)Hwang, Fish, Soito, Smith, and
Kellogg</label><?label hwang2017software?><mixed-citation>Hwang, L., Fish, A., Soito, L., Smith, M., and Kellogg, L. H.: Software and the scientist: Coding and citation practices in geodynamics, Earth Space Sci., 4, 670–680, <ext-link xlink:href="https://doi.org/10.1002/2016EA000225" ext-link-type="DOI">10.1002/2016EA000225</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Johnstone and Hilley(2015)</label><?label johnstone2015lithologic?><mixed-citation>Johnstone, S. A. and Hilley, G. E.: Lithologic control on the form of
soil-mantled hillslopes, Geology, 43, 83–86, <ext-link xlink:href="https://doi.org/10.1130/g36052.1" ext-link-type="DOI">10.1130/g36052.1</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Julien et al.(1995)Julien, Saghafian, and Ogden</label><?label julien2995raster?><mixed-citation>Julien, P. Y., Saghafian, B., and Ogden, F. L.: Raster-based hydrologic modeling of spatially-varied surface runoff, J. Am. Water Resour. Assoc., 31, 523–536, <ext-link xlink:href="https://doi.org/10.1111/j.1752-1688.1995.tb04039.x" ext-link-type="DOI">10.1111/j.1752-1688.1995.tb04039.x</ext-link>, 1995.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Kellogg et al.(2018)Kellogg, Hwang, Gassmoller, Bangerth, and
Heister</label><?label kellogg2019role?><mixed-citation>Kellogg, L. H., Hwang, L. J., Gassmoller, R., Bangerth, W., and Heister, T.:
The Role of Scientific Communities in Creating Reusable Software: Lessons From Geophysics, Comput. Sci. Eng., 21, 25–35, <ext-link xlink:href="https://doi.org/10.1109/mcse.2018.2883326" ext-link-type="DOI">10.1109/mcse.2018.2883326</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx42"><?xmltex \def\ref@label{{Kluyver et~al.(2016)Kluyver, Ragan-Kelley, P{\'{e}}rez, Granger,
Bussonnier, Frederic, Kelley, Hamrick, Grout, Corlay, Ivanov, Avila, Abdalla, and Willing}}?><label>Kluyver et al.(2016)Kluyver, Ragan-Kelley, Pérez, Granger,
Bussonnier, Frederic, Kelley, Hamrick, Grout, Corlay, Ivanov, Avila, Abdalla, and Willing</label><?label kluyver2016jupyter?><mixed-citation>
Kluyver, T., Ragan-Kelley, B., Pérez, F., Granger, B., Bussonnier, M.,
Frederic, J., Kelley, K., Hamrick, J., Grout, J., Corlay, S., Ivanov, P.,
Avila, D., Abdalla, S., and Willing, C.: Jupyter Notebooks – a publishing
format for reproducible computational workflows, in: Positioning and Power in
Academic Publishing: Players, Agents and Agendas, edited by: Loizides, F. and
Schmidt, B., IOS Press, Amsterdam, the Netherlands, 87–90, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Krekel et al.(2004)Krekel, Oliveira, Pfannschmidt, Bruynooghe,
Laugher, and Bruhin</label><?label pytest532?><mixed-citation>Krekel, H., Oliveira, B., Pfannschmidt, R., Bruynooghe, F., Laugher, B., and
Bruhin, F.: pytest 5.3.2, available at: <uri>https://github.com/pytest-dev/pytest</uri> (last access: 12 May 2020), 2004.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Lai and Anders(2018)</label><?label lai2018modeled?><mixed-citation>Lai, J. and Anders, A. M.: Modeled Postglacial Landscape Evolution at the
Southern Margin of the Laurentide Ice Sheet: Hydrological Connection of
Uplands Controls the Pace and Style of Fluvial Network Expansion, J. Geophys. Res.-Earth, 123, 967–984, <ext-link xlink:href="https://doi.org/10.1029/2017JF004509" ext-link-type="DOI">10.1029/2017JF004509</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Laio et al.(2001)Laio, Porporato, Ridolfi, and
Rodriguez-Iturbe</label><?label laio2001plants?><mixed-citation>Laio, F., Porporato, A., Ridolfi, L., and Rodriguez-Iturbe, I.: Plants in
water-controlled ecosystems: active role in hydrologic processes and response
to water stress II. Probabilistic soil moisture dynamics, Adv. Water Resour., 24, 707–723, <ext-link xlink:href="https://doi.org/10.1016/s0309-1708(01)00005-7" ext-link-type="DOI">10.1016/s0309-1708(01)00005-7</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Lambeck(1988)</label><?label lambeck1988geophysical?><mixed-citation>
Lambeck, K.: Geophysical Geodesy: The Slow Deformations of the Earth, Clarendon, Oxford, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Langston and Tucker(2018)</label><?label langston2018developing?><mixed-citation>Langston, A. L. and Tucker, G. E.: Developing and exploring a theory for the
lateral erosion of bedrock channels for use in landscape evolution models,
Earth Surf. Dynami., 6, 1–27, <ext-link xlink:href="https://doi.org/10.5194/esurf-6-1-2018" ext-link-type="DOI">10.5194/esurf-6-1-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Litwin et al.(2020)Litwin, Tucker, Barnhart, and
Harman</label><?label litwin2020groundwater?><mixed-citation>Litwin, D., Tucker, G., Barnhart, K., and Harman, C.: GroundwaterDupuitPercolator: A Landlab component for groundwater flow, J. Open Sour. Softw., 5, 1935, <ext-link xlink:href="https://doi.org/10.21105/joss.01935" ext-link-type="DOI">10.21105/joss.01935</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Lyons et al.(2019)Lyons, Val, Albert, Willenbring, and
Gasparini</label><?label lyons2019topographic?><mixed-citation>Lyons, N. J., Val, P., Albert, J. S., Willenbring, J. K., and Gasparini, N. M.: Topographic controls on divide migration, stream capture, and diversification in riverine life, Earth Surf. Dynam. Discuss., <ext-link xlink:href="https://doi.org/10.5194/esurf-2019-55" ext-link-type="DOI">10.5194/esurf-2019-55</ext-link>, in review, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Lyons et al.(2020)Lyons, Albert, and Gasparini</label><?label lyons2020species?><mixed-citation>Lyons, N. J., Albert, J. S., and Gasparini, N. M.: SpeciesEvolver: A Landlab
component to evolve life in simulated landscapes, J. Open Sour. Softw., 5, 2066, <ext-link xlink:href="https://doi.org/10.21105/joss.02066" ext-link-type="DOI">10.21105/joss.02066</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Mandli et al.(2016)Mandli, Ahmadia, Berger, Calhoun, George,
Hadjimichael, Ketcheson, Lemoine, and LeVeque</label><?label mandli2016clawpack?><mixed-citation>Mandli, K. T., Ahmadia, A. J., Berger, M., Calhoun, D., George, D. L.,
Hadjimichael, Y., Ketcheson, D. I., Lemoine, G. I., and LeVeque, R. J.:
Clawpack: building an open source ecosystem for solving hyperbolic PDEs, PeerJ. Comp. Sci., 2, e68, <ext-link xlink:href="https://doi.org/10.7717/peerj-cs.68" ext-link-type="DOI">10.7717/peerj-cs.68</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx52"><?xmltex \def\ref@label{{Mar\c{c}ais et~al.(2017)Marçais, Dreuzy, and
Erhel}}?><label>Marçais et al.(2017)Marçais, Dreuzy, and
Erhel</label><?label marcais2017dynamic?><mixed-citation>Marçais, J., Dreuzy, J.-R. D., and Erhel, J.: Dynamic coupling of subsurface and seepage flows solved within a regularized partition formulation, Adv. Water Resour., 109, 94–105, <ext-link xlink:href="https://doi.org/10.1016/j.advwatres.2017.09.008" ext-link-type="DOI">10.1016/j.advwatres.2017.09.008</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>McKinney(2010)</label><?label mckinney2010data?><mixed-citation>
McKinney, W.: Data Structures for Statistical Computing in Python,
edited by: van der Walt, S. and Millman, J., Proceedings of the 9th Python in Science Conference, Austin, TX, USA, 51–56, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Niemeyer et al.(2016)Niemeyer, Smith, and
Katz</label><?label niemeyer2016challenge?><mixed-citation>Niemeyer, K. E., Smith, A. M., and Katz, D. S.: The Challenge and Promise of
Software Citation for Credit, Identification, Discovery, and Reuse, J. Data Inform. Qual., 7, 5, <ext-link xlink:href="https://doi.org/10.1145/2968452" ext-link-type="DOI">10.1145/2968452</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>O'Callaghan and Mark(1984)</label><?label ocallaghan1984extraction?><mixed-citation>O'Callaghan, J. F. and Mark, D. M.: The extraction of drainage networks from
digital elevation data, Computer Vis. Graph. Image Proc., 28, 323–344, <ext-link xlink:href="https://doi.org/10.1016/s0734-189x(84)80011-0" ext-link-type="DOI">10.1016/s0734-189x(84)80011-0</ext-link>, 1984.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Pan et al.(2015)Pan, Yan, Wang, and Hua</label><?label pan2015assessing?><mixed-citation>Pan, X., Yan, E., Wang, Q., and Hua, W.: Assessing the impact of software on
science: A bootstrapped learning of software entities in full-text papers, J. Informetr., 9, 860–871, <ext-link xlink:href="https://doi.org/10.1016/j.joi.2015.07.012" ext-link-type="DOI">10.1016/j.joi.2015.07.012</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Peckham et al.(2013)Peckham, Hutton, and
Norris</label><?label peckham2013component?><mixed-citation>Peckham, S. D., Hutton, E. W. H., and Norris, B.: A component-based approach
to integr<?pagebreak page396?>ated modeling in the geosciences The design of CSDMS, Comput. Geosci., 53, 3–12, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2012.04.002" ext-link-type="DOI">10.1016/j.cageo.2012.04.002</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx58"><?xmltex \def\ref@label{{P\'{e}rez and Granger(2007)}}?><label>Pérez and Granger(2007)</label><?label perez2007ipython?><mixed-citation>Pérez, F. and Granger, B. E.: IPython: A System for Interactive Scientific Computing, Comput. Sci. Eng., 9, 21–29, <ext-link xlink:href="https://doi.org/10.1109/mcse.2007.53" ext-link-type="DOI">10.1109/mcse.2007.53</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Perron(2011)</label><?label perron2011numerical?><mixed-citation>Perron, J. T.: Numerical methods for nonlinear hillslope transport laws, J. Geophys. Res., 116, 23–13, <ext-link xlink:href="https://doi.org/10.1029/2010jf001801" ext-link-type="DOI">10.1029/2010jf001801</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Perron and Royden(2012)</label><?label perron2012integral?><mixed-citation>Perron, J. T. and Royden, L.: An integral approach to bedrock river profile
analysis, Earth Surf. Proc. Land., 38, 570–576, <ext-link xlink:href="https://doi.org/10.1002/esp.3302" ext-link-type="DOI">10.1002/esp.3302</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Poisot(2015)</label><?label poisot2015best?><mixed-citation>Poisot, T.: Best publishing practices to improve user confidence in scientific software, Idea. Ecol. Evol., 8, 50–54, <ext-link xlink:href="https://doi.org/10.4033/iee.2015.8.8.f" ext-link-type="DOI">10.4033/iee.2015.8.8.f</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Polakow and Dunne(1999)</label><?label polakaw1999modeling?><mixed-citation>Polakow, D. A. and Dunne, T. T.: Modelling fire-return interval T:
stochasticity and censoring in the two-parameter Weibull model, Ecol. Model., 121, 79–102, <ext-link xlink:href="https://doi.org/10.1016/s0304-3800(99)00074-5" ext-link-type="DOI">10.1016/s0304-3800(99)00074-5</ext-link>, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Prabhu et al.(2011)Prabhu, Zhang, Ghosh, August, Huang, Beard, Kim,
Oh, Jablin, Johnson, Zoufaly, Raman, Liu, and Walker</label><?label prabhu2011survey?><mixed-citation>Prabhu, P., Zhang, Y., Ghosh, S., August, D. I., Huang, J., Beard, S., Kim, H., Oh, T., Jablin, T. B., Johnson, N. P., Zoufaly, M., Raman, A., Liu, F., and Walker, D.: A survey of the practice of computational science, in: 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC), Seattle, WA, USA, p. 1, <ext-link xlink:href="https://doi.org/10.1145/2063348.2063374" ext-link-type="DOI">10.1145/2063348.2063374</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Quinn et al.(1991)Quinn, Beven, Chevallier, and
Planchon</label><?label quinn1991prediction?><mixed-citation>Quinn, P., Beven, K., Chevallier, P., and Planchon, O.: The prediction of
hillslope flow paths for distributed hydrological modelling using digital
terrain models, Hydrol. Process., 5, 59–79, <ext-link xlink:href="https://doi.org/10.1002/hyp.3360050106" ext-link-type="DOI">10.1002/hyp.3360050106</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx65"><label>Rengers et al.(2016)Rengers, McGuire, Kean, Staley, and
Hobley</label><?label rengers2016model?><mixed-citation>Rengers, F. K., McGuire, L. A., Kean, J. W., Staley, D. M., and Hobley, D. E. J.: Model simulations of flood and debris flow timing in steep catchments after wildfire, Water Resour. Res., 52, 6041–6061, <ext-link xlink:href="https://doi.org/10.1002/2015wr018176" ext-link-type="DOI">10.1002/2015wr018176</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>Rocklin(2015)</label><?label rocklin2015dask?><mixed-citation>
Rocklin, M.: Dask: Parallel Computation with Blocked algorithms and Task
Scheduling, edited by: Huff, K. and Bergstra, J., in: Proceedings of the 14th Python in Science Conference, Austin, TX, USA, 130–136, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx67"><?xmltex \def\ref@label{{Schlesinger et~al.(1979)Schlesinger, Crosbie, Gagn\'{e}, Innis,
Lalwani, Loch, Sylvester, Wright, Kheir, and
Bartos}}?><label>Schlesinger et al.(1979)Schlesinger, Crosbie, Gagné, Innis,
Lalwani, Loch, Sylvester, Wright, Kheir, and
Bartos</label><?label schlesinger1979terminology?><mixed-citation>Schlesinger, S., Crosbie, R. E., Gagné, R. E., Innis, G. S., Lalwani, C. S., Loch, J., Sylvester, R. J., Wright, R. D., Kheir, N., and Bartos, D.:
Terminology for model credibility, Simulation, 32, 103–104,
<ext-link xlink:href="https://doi.org/10.1177/003754977903200304" ext-link-type="DOI">10.1177/003754977903200304</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx68"><label>Schmid et al.(2018)Schmid, Ehlers, Werner, Hickler, and
Fuentes-Espoz</label><?label schmidt2018effect?><mixed-citation>Schmid, M., Ehlers, T. A., Werner, C., Hickler, T., and Fuentes-Espoz, J.-P.:
Effect of changing vegetation and precipitation on denudation – Part 2:
Predicted landscape response to transient climate and vegetation cover over
millennial to million-year timescales, Earth Surf. Dynam., 6, 859–881,
<ext-link xlink:href="https://doi.org/10.5194/esurf-6-859-2018" ext-link-type="DOI">10.5194/esurf-6-859-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx69"><label>Seabold and Perktold(2010)</label><?label seabold2010statsmodels?><mixed-citation>
Seabold, S. and Perktold, J.: statsmodels: Econometric and statistical modeling with python, in: 9th Python in Science Conference, Austin, TX, USA, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx70"><label>Sharman et al.(2019)Sharman, Sylvester, and
Covault</label><?label sharman2019conversion?><mixed-citation>Sharman, G. R., Sylvester, Z., and Covault, J. A.: Conversion of tectonic and
climatic forcings into records of sediment supply and provenance, Scient. Rep., 9, 1–7, <ext-link xlink:href="https://doi.org/10.1038/s41598-019-39754-6" ext-link-type="DOI">10.1038/s41598-019-39754-6</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx71"><label>Shelef and Hilley(2013)</label><?label shelef2013impact?><mixed-citation>Shelef, E. and Hilley, G. E.: Impact of flow routing on catchment area
calculations, slope estimates, and numerical simulations of landscape
development, J. Geophys. Res.-Earth, 118, 2105–2123, <ext-link xlink:href="https://doi.org/10.1002/jgrf.20127" ext-link-type="DOI">10.1002/jgrf.20127</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx72"><label>Shobe et al.(2017)Shobe, Tucker, and Barnhart</label><?label shobe2017space?><mixed-citation>Shobe, C. M., Tucker, G. E., and Barnhart, K. R.: The SPACE 1.0 model:
a Landlab component for 2-D calculation of sediment transport, bedrock
erosion, and landscape evolution, Geosci. Model Dev., 10, 4577–4604, <ext-link xlink:href="https://doi.org/10.5194/gmd-10-4577-2017" ext-link-type="DOI">10.5194/gmd-10-4577-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx73"><label>Singer et al.(2018)Singer, Michaelides, and Hobley</label><?label singer2018storm?><mixed-citation>Singer, M. B., Michaelides, K., and Hobley, D. E. J.: STORM 1.0: a simple,
flexible, and parsimonious stochastic rainfall generator for simulating
climate and climate change, Geosci. Model Dev., 11, 3713–3726,
<ext-link xlink:href="https://doi.org/10.5194/gmd-11-3713-2018" ext-link-type="DOI">10.5194/gmd-11-3713-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx74"><label>Strauch et al.(2018)Strauch, Istanbulluoglu, Nudurupati, Bandaragoda,  Gasparini, and Tucker</label><?label strauch2018hydroclimatological?><mixed-citation>Strauch, R., Istanbulluoglu, E., Nudurupati, S. S., Bandaragoda, C., Gasparini, N. M., and Tucker, G. E.: A hydroclimatological approach to predicting regional landslide probability using Landlab, Earth Surf. Dynam., 6, 49–75, <ext-link xlink:href="https://doi.org/10.5194/esurf-6-49-2018" ext-link-type="DOI">10.5194/esurf-6-49-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx75"><label>Tarboton(1997)</label><?label tarboton1997new?><mixed-citation>Tarboton, D. G.: A new method for the determination of flow directions and
upslope areas in grid digital elevation models, Water Resour. Res., 33, 309–319, <ext-link xlink:href="https://doi.org/10.1029/96wr03137" ext-link-type="DOI">10.1029/96wr03137</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx76"><label>Taschuk and Wilson(2017)</label><?label taschuk2017ten?><mixed-citation>Taschuk, M. and Wilson, G.: Ten simple rules for making research software more robust, PLoS Comput. Biol., 13, e1005412, <ext-link xlink:href="https://doi.org/10.1371/journal.pcbi.1005412" ext-link-type="DOI">10.1371/journal.pcbi.1005412</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx77"><label>Tucker et al.(2001a)Tucker, Catani, Rinaldo, and
Bras</label><?label tucker2001statistical?><mixed-citation>Tucker, G. E., Catani, F., Rinaldo, A., and Bras, R. L.: Statistical analysis
of drainage density from digital terrain data, Geomorphology, 36, 187–202,
<ext-link xlink:href="https://doi.org/10.1016/s0169-555x(00)00056-8" ext-link-type="DOI">10.1016/s0169-555x(00)00056-8</ext-link>, 2001a.</mixed-citation></ref>
      <ref id="bib1.bibx78"><label>Tucker et al.(2001b)Tucker, Lancaster, Gasparini, and
Bras</label><?label tucker2001channel?><mixed-citation>
Tucker, G. E., Lancaster, S. T., Gasparini, N. M., and Bras, R. L.: The
Channel-Hillslope Integrated Landscape Development Model (CHILD), in:
Landscape Erosion and Evolution Modeling, Springer US, Boston, MA, USA, 349–388, 2001b.</mixed-citation></ref>
      <ref id="bib1.bibx79"><label>Tucker et al.(2001c)Tucker, Lancaster, Gasparini, Bras, and Rybarczyk</label><?label tucker2001object?><mixed-citation>Tucker, G. E., Lancaster, S. T., Gasparini, N. M., Bras, R. L., and Rybarczyk, S. M.: An object-oriented framework for distributed hydrologic and
geomorphic modeling using triangulated irregular networks, Comput. Geosci., 27, 959–973, <ext-link xlink:href="https://doi.org/10.1016/s0098-3004(00)00134-5" ext-link-type="DOI">10.1016/s0098-3004(00)00134-5</ext-link>, 2001c.</mixed-citation></ref>
      <ref id="bib1.bibx80"><label>Tucker et al.(2020)Tucker, Hobley, McCoy, and
Struble</label><?label tucker2020modeling?><mixed-citation>Tucker, G. E., Hobley, D. E. J., McCoy, S. W., and Struble, W. T.: Modeling the Shape and Evolution of Normal-Fault Facets, J. Geophys. Res.-Earth, 125, e2019JF005305, <ext-link xlink:href="https://doi.org/10.1029/2019JF005305" ext-link-type="DOI">10.1029/2019JF005305</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx81"><label>Turing Way Community et al.(2019)The Turing Way Community,
Arnold, Bowler, Gibson, Herterich, Higman, Krystalli, Morley, O'Reilly, and
Whitaker</label><?label turing2019handbook?><mixed-citation>Turing Way Community, Arnold, B., Bowler, L., Gibson, S., Herterich, P.,
Higman, R., Krystalli, A., Morley, A., O'Reilly, M., and Whitaker, K.: The
Turing Way: A Handbook for Reproducible Data Science, zenodo,
<ext-link xlink:href="https://doi.org/10.5281/zenodo.3233986" ext-link-type="DOI">10.5281/zenodo.3233986</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx82"><label>Virtanen et al.(2019)Virtanen, Gommers, Oliphant,
Haberland, Reddy, Cournapeau, Burovski, Peterson, Weckesser,
Bright, van der Walt, Brett, Wilson, Jarrod Millman, Mayorov,
Nelson, Jones, Kern, Larson, Carey, Polat, Feng, Moore, Vand erPlas, Laxalde, Perktold, Cimrman, Henriksen, Quintero, Harris, Archibald, Ribeiro, Pedregosa, van Mulbregt, and
Contributors</label><?label scipy2019scipy?><mixed-citation>
Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T.,
Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Jarrod Millman, K., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., Carey, C., Polat, İ., Feng, Y., Moore, E. W., Vander Plas, J., Laxalde, D., Perktold, J., Cimrman, R., Henriksen, I., Quintero, E. A., Harris, C. R., Archibald, A. M., Ribeiro, A. H., Pedregosa, F., van Mulbregt, P., and SciPy 1.0 Contributors: SciPy 1.0 – Fundamental Algorithms for Scientific Computing in Python, arXiv e-prints, arXiv:1907.10121, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx83"><label>Whitaker et al.(2019)Whitaker, Khrulev, Huard, Paulik, Hoyer, Filipe, Pastewka, Mohr, Marquardt, Couwenberg, Taves, Whitaker, Cuntz, Bohnet, Brett, Hetland, Koreniak, barronh, Onu, Helmus, Hamman, Barna, fredrik 1, Koziol, Kluyver, May, Smrekar, Barker, Gohlke, and Kinoshita</label><?label whitaker2019netcdf4?><mixed-citation>Whitaker, J., Khrulev, C., Huard, D., Paulik, C., Hoyer, S., Filipe, Pastewka, L., Mohr, A., Marquardt, C., Couwenberg, B., Taves, M., Whitaker, J., Cuntz, M., Bohnet, M., Brett, M., Hetland, R., Korenčiak, M., barronh, Onu, K., Helmus, J. J., Hamman, J., Barna, A., fredrik 1, Kozio<?pagebreak page397?>l, B., Kluyver, T., May, R., Smrekar, J., Barker, C., Gohlke, C., and Kinoshita, B. P.: Unidata/netcdf4-python: Version 1.5.3 release, zenodo, <ext-link xlink:href="https://doi.org/10.5281/zenodo.3516272" ext-link-type="DOI">10.5281/zenodo.3516272</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx84"><label>Wickert(2016)</label><?label wickert2016open?><mixed-citation>Wickert, A. D.: Open-source modular solutions for flexural isostasy: gFlex v1.0, Geosci. Model Dev., 9, 997–1017, <ext-link xlink:href="https://doi.org/10.5194/gmd-9-997-2016" ext-link-type="DOI">10.5194/gmd-9-997-2016</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx85"><label>Willgoose et al.(1991)Willgoose, Bras, and
Rodriguez-Iturbe</label><?label willgoose1991coupled?><mixed-citation>Willgoose, G. R., Bras, R. L., and Rodriguez-Iturbe, I.: A coupled channel
network growth and hillslope evolution model, 1, Theory, Water Resour. Res., 27, 1671–1684, <ext-link xlink:href="https://doi.org/10.1029/91WR00935" ext-link-type="DOI">10.1029/91WR00935</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx86"><label>Wilson et al.(2014)Wilson, Aruliah, Brown, Hong, Davis, Guy, Haddock, Huff, Mitchell, Plumbley, Waugh, White, and Wilson</label><?label wilson2014best?><mixed-citation>Wilson, G., Aruliah, D. A., Brown, C. T., Hong, N. P. C., Davis, M., Guy, R. T., Haddock, S. H. D., Huff, K. D., Mitchell, I. M., Plumbley, M. D., Waugh, B., White, E. P., and Wilson, P.: Best Practices for Scientific Computing, PLoS Biol., 12, e1001745, <ext-link xlink:href="https://doi.org/10.1371/journal.pbio.1001745" ext-link-type="DOI">10.1371/journal.pbio.1001745</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx87"><label>Wilson et al.(2017)Wilson, Bryan, Cranston, Kitzes, Nederbragt, and
Teal</label><?label wilson2017good?><mixed-citation>Wilson, G., Bryan, J., Cranston, K., Kitzes, J., Nederbragt, L., and Teal, T. K.: Good enough practices in scientific computing, PLOS Comput. Biol., 13, e1005510, <ext-link xlink:href="https://doi.org/10.1371/journal.pcbi.1005510" ext-link-type="DOI">10.1371/journal.pcbi.1005510</ext-link>, 2017.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx88"><label>Wobus et al.(2006)Wobus, Whipple, Kirby, Snyder, Johnson, Spyropolou, Crosby, and Sheehan</label><?label wobus2006tectonics?><mixed-citation>Wobus, C., Whipple, K., Kirby, E., Snyder, N., Johnson, J., Spyropolou, K.,
Crosby, B., and Sheehan, D.: Tectonics from topography: Procedures, promise,
and pitfalls, GSA Special Papers, Geological Society of America, Boulder, CO, USA, 55–74, <ext-link xlink:href="https://doi.org/10.1130/2006.2398(04)" ext-link-type="DOI">10.1130/2006.2398(04)</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx89"><?xmltex \def\ref@label{{Zebari et~al.(2019)Zebari, Gr\"{u}tzner, Navabpour, and
Ustaszewski}}?><label>Zebari et al.(2019)Zebari, Grützner, Navabpour, and
Ustaszewski</label><?label zebari2019relative?><mixed-citation>Zebari, M., Grützner, C., Navabpour, P., and Ustaszewski, K.: Relative timing of uplift along the Zagros Mountain Front Flexure (Kurdistan Region of Iraq): Constrained by geomorphic indices and landscape evolution modeling, Solid Earth, 10, 663–682, <ext-link xlink:href="https://doi.org/10.5194/se-10-663-2019" ext-link-type="DOI">10.5194/se-10-663-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx90"><label>Zhou et al.(2013)Zhou, Istanbulluoglu, and Vivoni</label><?label zhou2013modeling?><mixed-citation>Zhou, X., Istanbulluoglu, E., and Vivoni, E. R.: Modeling the ecohydrological
role of aspect-controlled radiation on tree-grass-shrub coexistence in a
semiarid climate, Water Resour. Res., 49, 2872–2895, <ext-link xlink:href="https://doi.org/10.1002/wrcr.20259" ext-link-type="DOI">10.1002/wrcr.20259</ext-link>, 2013.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Short communication: Landlab v2.0: a software  package for Earth surface dynamics</article-title-html>
<abstract-html><p>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 <i>components</i> – 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.</p></abstract-html>
<ref-html id="bib1.bib1"><label>Adams et al.(2017)Adams, Gasparini, Hobley, Tucker, Hutton,
Nudurupati, and Istanbulluoglu</label><mixed-citation>
Adams, J. M., Gasparini, N. M., Hobley, D. E. J., Tucker, G. E., Hutton, E. W. H., Nudurupati, S. S., and Istanbulluoglu, E.: The Landlab v1.0 OverlandFlow component: a Python tool for computing shallow-water flow across watersheds, Geosci. Model Dev., 10, 1645–1663, <a href="https://doi.org/10.5194/gmd-10-1645-2017" target="_blank">https://doi.org/10.5194/gmd-10-1645-2017</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Adorf et al.(2019)Adorf, Ramasubramani, Anderson, and
Glotzer</label><mixed-citation>
Adorf, C. S., Ramasubramani, V., Anderson, J. A., and Glotzer, S. C.: How to
Professionally Develop Reusable Scientific Software – And When Not To, Comput. Sci. Eng., 21, 66–79, <a href="https://doi.org/10.1109/mcse.2018.2882355" target="_blank">https://doi.org/10.1109/mcse.2018.2882355</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Ahnert(1976)</label><mixed-citation>
Ahnert, F.: Brief description of a comprehensive three-dimensional
process-response model of landform development, Z. Geomorphol. Suppl. Band, 25, 29–49, 1976.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Albert et al.(2016)Albert, Schoolmaster Jr, Tagliacollo, and
Duke-Sylvester</label><mixed-citation>
Albert, J. S., Schoolmaster Jr., D. R., Tagliacollo, V., and Duke-Sylvester,
S. M.: Barrier Displacement on a Neutral Landscape: Toward a Theory of
Continental Biogeography, System. Biol., 66, 167–182, <a href="https://doi.org/10.1093/sysbio/syw080" target="_blank">https://doi.org/10.1093/sysbio/syw080</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Armstrong(1976)</label><mixed-citation>
Armstrong, A. C.: A three dimensional simulation of slope forms, Z. Geomorphol., 25, 20–28, 1976.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>ASCE(2005)</label><mixed-citation>
ASCE: The ASCE Standardized Reference Evapotranspiration Equation, in:
Standardization of Reference Evapotranspiration Task Committee Final Report, edited by: Allen, R. G., Walter, I. A., Elliot, R. L., Howell, T. A., Itenﬁsu, D., Jensen, M. E., and Snyder, R. L., Technical Committee report to the Environmental and Water Resources Institute of the American Society of Civil Engineers from the Task Committee on Standardization of Reference Evapotranspiration, Reston, VA, USA, 2005.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bandaragoda et al.(2019)Bandaragoda, Castronova, Istanbulluoglu,
Strauch, Nudurupati, Phuong, Adams, Gasparini, Barnhart, Hutton, Hobley,
Tarboton, Tucker, David, Idaszak, and Wang</label><mixed-citation>
Bandaragoda, C., Castronova, A., Istanbulluoglu, E., Strauch, R., Nudurupati,
S., Phuong, J., Adams, J., Gasparini, N., Barnhart, K. R., Hutton, E.,
Hobley, D., Lyons, N. J., Tucker, G. E., Tarboton, D. G., Idaszak, R., and Wang, S.-W.: Enabling Collaborative Numerical Modeling in Earth Sciences using Knowledge Infrastructure, Environ. Model. Softw., 120, 104424, <a href="https://doi.org/10.1016/j.envsoft.2019.03.020" target="_blank">https://doi.org/10.1016/j.envsoft.2019.03.020</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Barnes et al.(2014)Barnes, Lehman, and Mulla</label><mixed-citation>
Barnes, R., Lehman, C., and Mulla, D.: Priority-flood: An optimal
depression-filling and watershed-labeling algorithm for digital elevation
models, Comput. Geosci., 62, 117–127, <a href="https://doi.org/10.1016/j.cageo.2013.04.024" target="_blank">https://doi.org/10.1016/j.cageo.2013.04.024</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Barnhart et al.(2018)Barnhart, Hutton, Gasparini, and
Tucker</label><mixed-citation>
Barnhart, K. R., Hutton, E., Gasparini, N., and Tucker, G.: Lithology: A
Landlab submodule for spatially variable rock properties, J. Open Sour. Softw., 3, 979, <a href="https://doi.org/10.21105/joss.00979" target="_blank">https://doi.org/10.21105/joss.00979</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Barnhart et al.(2019a)Barnhart, Hutton, and
Tucker</label><mixed-citation>
Barnhart, K. R., Hutton, E., and Tucker, G.: umami: A Python package for Earth surface dynamics objective function construction, J. Open Sour. Softw., 4, 1776, <a href="https://doi.org/10.21105/joss.01776" target="_blank">https://doi.org/10.21105/joss.01776</a>, 2019a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Barnhart et al.(2019b)Barnhart, Glade, Shobe, and
Tucker</label><mixed-citation>
Barnhart, K. R., Glade, R. C., Shobe, C. M., and Tucker, G. E.: Terrainbento 1.0: a Python package for multi-model analysis in long-term drainage basin evolution, Geosci. Model Dev., 12, 1267–1297,
<a href="https://doi.org/10.5194/gmd-12-1267-2019" target="_blank">https://doi.org/10.5194/gmd-12-1267-2019</a>, 2019b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Barnhart et al.(2020a)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><mixed-citation>
Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi, M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 1. Conceptualization and sensitivity analysis,
J. Geophys. Res.-Earth, 125, e2018JF004961, <a href="https://doi.org/10.1029/2018JF004961" target="_blank">https://doi.org/10.1029/2018JF004961</a>, 2020a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Barnhart et al.(2020b)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><mixed-citation>
Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi, M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 2. Calibration and validation, J. Geophys. Res.-Earth, 125, e2018JF004963, <a href="https://doi.org/10.1029/2018JF004963" target="_blank">https://doi.org/10.1029/2018JF004963</a>, 2020b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Barnhart et al.(2020c)Barnhart, Tucker, Doty, Shobe,
Glade, Rossi, and Hill</label><mixed-citation>
Barnhart, K. R., Tucker, G. E., Doty, S., Shobe, C. M., Glade, R. C., Rossi,
M. W., and Hill, M. C.: Inverting topography for landscape evolution model
process representation: Part 3. Determining parameter ranges for select
mature geomorphic transport laws and connecting changes in fluvial erodibility to changes in climate, J. Geophys. Res.-Earth, e2019JF005287, <a href="https://doi.org/10.1029/2019JF005287" target="_blank">https://doi.org/10.1029/2019JF005287</a>, 2020c.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Bates et al.(2010)Bates, Horritt, and Fewtrell</label><mixed-citation>
Bates, P. D., Horritt, M. S., and Fewtrell, T. J.: A simple inertial formulation of the shallow water equations for efficient two-dimensional
flood inundation modelling, J. Hydrol., 387, 33–45,
<a href="https://doi.org/10.1016/j.jhydrol.2010.03.027" target="_blank">https://doi.org/10.1016/j.jhydrol.2010.03.027</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Bras(1990)</label><mixed-citation>
Bras, R.: Hydrology: An introduction to hydrologic science, Addison-Wesley,
Reading, MA, USA, 1990.
</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Braun and Willett(2013)</label><mixed-citation>
Braun, J. and Willett, S. D.: A very efficient O(n), implicit and parallel
method to solve the stream power equation governing fluvial incision and
landscape evolution, Geomorphology, 180-181, 170–179,
<a href="https://doi.org/10.1016/j.geomorph.2012.10.008" target="_blank">https://doi.org/10.1016/j.geomorph.2012.10.008</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Carretier et al.(2016)Carretier, Martinod, Reich, and
Godderis</label><mixed-citation>
Carretier, S., Martinod, P., Reich, M., and Godderis, Y.: Modelling sediment
clasts transport during landscape evolution, Earth Surf. Dynam., 4, 237–251, <a href="https://doi.org/10.5194/esurf-4-237-2016" target="_blank">https://doi.org/10.5194/esurf-4-237-2016</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Carver et al.(2016)Carver, Hong, and
Thiruvathukal</label><mixed-citation>
Carver, J. C., Hong, N. P. C., and Thiruvathukal, G. K.: Software engineering
for science, CRC Press, Boca Raton, FL, USA, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Chen et al.(2018)Chen, Dallmeier-Tiessen, Dasler, Feger, Fokianos,
Gonzalez, Hirvonsalo, Kousidis, Lavasa, Mele, Rodriguez, imko, Smith,
Trisovic, Trzcinska, Tsanaktsidis, Zimmermann, Cranmer, Heinrich, Watts,
Hildreth, Iglesias, Lassila-Perini, and Neubert</label><mixed-citation>
Chen, X., Dallmeier-Tiessen, S., Dasler, R., Feger, S., Fokianos, P., Gonzalez, J. B., Hirvonsalo, H., Kousidis, D., Lavasa, A., Mele, S., Rodriguez, D. R., Šimko, T., Smith, T., Trisovic, A., Trzcinska, A., Tsanaktsidis, I., Zimmermann, M., Cranmer, K., Heinrich, L., Watts, G., Hildreth, M., Iglesias, L. L., Lassila-Perini, K., and Neubert, S.: Open is not enough, Nat. Phys., 15, 113–119, <a href="https://doi.org/10.1038/s41567-018-0342-2" target="_blank">https://doi.org/10.1038/s41567-018-0342-2</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Childs(1971)</label><mixed-citation>
Childs, E. C.: Drainage of Groundwater Resting on a Sloping Bed, Water Resour. Res., 7, 1256–1263, <a href="https://doi.org/10.1029/wr007i005p01256" target="_blank">https://doi.org/10.1029/wr007i005p01256</a>, 1971.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Culling(1963)</label><mixed-citation>
Culling, W. E. H.: Soil Creep and the Development of Hillside Slopes, J. Geol., 71, 127–161, <a href="https://doi.org/10.1086/626891" target="_blank">https://doi.org/10.1086/626891</a>, 1963.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Dask Development Team(2016)</label><mixed-citation>
Dask Development Team: Dask: Library for dynamic task scheduling, available at: <a href="https://dask.org" target="_blank"/> (last access: 12 May 2020), 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Davy and Lague(2009)</label><mixed-citation>
Davy, P. and Lague, D.: Fluvial erosion/transport equation of landscape
evolution models revisited, J. Geophys. Res., 114, F03007, <a href="https://doi.org/10.1029/2008jf001146" target="_blank">https://doi.org/10.1029/2008jf001146</a>, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>de Almeida et al.(2012)de Almeida, Bates, Freer, and
Souvignet</label><mixed-citation>
de Almeida, G. A. M., Bates, P., Freer, J. E., and Souvignet, M.: Improving
the stability of a simple formulation of the shallow water equations for 2-D
flood modeling, Water Resour. Res., 48, W05528, <a href="https://doi.org/10.1029/2011wr011570" target="_blank">https://doi.org/10.1029/2011wr011570</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Eagleson(1978)</label><mixed-citation>
Eagleson, P. S.: Climate, soil, and vegetation: 2. The distribution of annual
precipitation derived from observed storm sequences, Water Resour. Res., 14, 713–721, <a href="https://doi.org/10.1029/wr014i005p00713" target="_blank">https://doi.org/10.1029/wr014i005p00713</a>, 1978.
</mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Freeman(1991)</label><mixed-citation>
Freeman, T. G.: Calculating catchment area with divergent flow based on a
regular grid, Comput. Geosci., 17, 413–422, <a href="https://doi.org/10.1016/0098-3004(91)90048-i" target="_blank">https://doi.org/10.1016/0098-3004(91)90048-i</a>, 1991.
</mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Ganti et al.(2012)Ganti, Passalacqua, and
Foufoula-Georgiou</label><mixed-citation>
Ganti, V., Passalacqua, P., and Foufoula-Georgiou, E.: A sub-grid scale closure for nonlinear hillslope sediment transport models, J. Geophys. Res.-Earth, 117, F02012, <a href="https://doi.org/10.1029/2011jf002181" target="_blank">https://doi.org/10.1029/2011jf002181</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Hobley et al.(2011)Hobley, Sinclair, Mudd, and
Cowie</label><mixed-citation>
Hobley, D. E. J., Sinclair, H. D., Mudd, S. M., and Cowie, P. A.: Field
calibration of sediment flux dependent river incision, J. Geophys. Res., 116, F04017, <a href="https://doi.org/10.1029/2010jf001935" target="_blank">https://doi.org/10.1029/2010jf001935</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Hobley et al.(2017)Hobley, Adams, Nudurupati, Hutton, Gasparini,
Istanbulluoglu, and Tucker</label><mixed-citation>
Hobley, D. E. J., Adams, J. M., Nudurupati, S. S., Hutton, E. W. H., Gasparini, N. M., Istanbulluoglu, E., and Tucker, G. E.: Creative computing with Landlab: an open-source toolkit for building, coupling, and exploring
two-dimensional numerical models of Earth-surface dynamics, Earth Surf. Dynam., 5, 21–46, <a href="https://doi.org/10.5194/esurf-5-21-2017" target="_blank">https://doi.org/10.5194/esurf-5-21-2017</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Howard(1994)</label><mixed-citation>
Howard, A. D.: A detachment-limited model of drainage basin evolution, Water
Resour. Res., 30, 2261–2285, <a href="https://doi.org/10.1029/94wr00757" target="_blank">https://doi.org/10.1029/94wr00757</a>, 1994.
</mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Hoyer and Hamman(2016)</label><mixed-citation>
Hoyer, S. and Hamman, J.: xarray: N-D labeled Arrays and Datasets in Python,
J. Open Res. Softw., 5, 10, <a href="https://doi.org/10.5334/jors.148" target="_blank">https://doi.org/10.5334/jors.148</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Hunter(2007)</label><mixed-citation>
Hunter, J. D.: Matplotlib: A 2D Graphics Environment, Comput. Sci. Eng., 9, 90–95, <a href="https://doi.org/10.1109/mcse.2007.55" target="_blank">https://doi.org/10.1109/mcse.2007.55</a>, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Hutton and Piper(2020a)</label><mixed-citation>
Hutton, E. W. H. and Piper, M.: csdms/bmi-python: v2.0, zenodo, <a href="https://doi.org/10.5281/zenodo.3647556" target="_blank">https://doi.org/10.5281/zenodo.3647556</a>, 2020a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Hutton and Piper(2020b)</label><mixed-citation>
Hutton, E. W. H. and Piper, M.: csdms/pymt: The Python Modeling Toolkit,
zenodo, <a href="https://doi.org/10.5281/zenodo.3644240" target="_blank">https://doi.org/10.5281/zenodo.3644240</a>, 2020b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Hutton and Syvitski(2008)</label><mixed-citation>
Hutton, E. W. H. and Syvitski, J. P.: Sedflux 2.0: An advanced process-response model that generates three-dimensional stratigraphy, Comput. Geosci., 34, 1319–1337, <a href="https://doi.org/10.1016/j.cageo.2008.02.013" target="_blank">https://doi.org/10.1016/j.cageo.2008.02.013</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Hutton et al.(2020)Hutton, Barnhart, Hobley, Tucker, Nudurupati,
Adams, Gasparini, Shobe, Strauch, Knuth, Mouchene, Lyons, Litwin, Glade,
Giuseppecipolla95, Manaster, Langston, Thyng, and Rengers</label><mixed-citation>
Hutton, E. W. H., Barnhart, K. R., Hobley, D. E. J., Tucker, G. E., Nudurupati, S. S., Adams, J. M., Gasparini, N. M., Shobe, C. M., Strauch, R., Knuth, J., Mouchene, M., Lyons, N., Litwin, D., Glade, R., Cipolla, G.,  Manaster, A., Langston, A., Thyng, K., and Rengers, F.: landlab/landlab: Mrs. Weasley, zenodo, <a href="https://doi.org/10.5281/zenodo.3776837" target="_blank">https://doi.org/10.5281/zenodo.3776837</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Hwang et al.(2017)Hwang, Fish, Soito, Smith, and
Kellogg</label><mixed-citation>
Hwang, L., Fish, A., Soito, L., Smith, M., and Kellogg, L. H.: Software and the scientist: Coding and citation practices in geodynamics, Earth Space Sci., 4, 670–680, <a href="https://doi.org/10.1002/2016EA000225" target="_blank">https://doi.org/10.1002/2016EA000225</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Johnstone and Hilley(2015)</label><mixed-citation>
Johnstone, S. A. and Hilley, G. E.: Lithologic control on the form of
soil-mantled hillslopes, Geology, 43, 83–86, <a href="https://doi.org/10.1130/g36052.1" target="_blank">https://doi.org/10.1130/g36052.1</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Julien et al.(1995)Julien, Saghafian, and Ogden</label><mixed-citation>
Julien, P. Y., Saghafian, B., and Ogden, F. L.: Raster-based hydrologic modeling of spatially-varied surface runoff, J. Am. Water Resour. Assoc., 31, 523–536, <a href="https://doi.org/10.1111/j.1752-1688.1995.tb04039.x" target="_blank">https://doi.org/10.1111/j.1752-1688.1995.tb04039.x</a>, 1995.
</mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Kellogg et al.(2018)Kellogg, Hwang, Gassmoller, Bangerth, and
Heister</label><mixed-citation>
Kellogg, L. H., Hwang, L. J., Gassmoller, R., Bangerth, W., and Heister, T.:
The Role of Scientific Communities in Creating Reusable Software: Lessons From Geophysics, Comput. Sci. Eng., 21, 25–35, <a href="https://doi.org/10.1109/mcse.2018.2883326" target="_blank">https://doi.org/10.1109/mcse.2018.2883326</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Kluyver et al.(2016)Kluyver, Ragan-Kelley, Pérez, Granger,
Bussonnier, Frederic, Kelley, Hamrick, Grout, Corlay, Ivanov, Avila, Abdalla, and Willing</label><mixed-citation>
Kluyver, T., Ragan-Kelley, B., Pérez, F., Granger, B., Bussonnier, M.,
Frederic, J., Kelley, K., Hamrick, J., Grout, J., Corlay, S., Ivanov, P.,
Avila, D., Abdalla, S., and Willing, C.: Jupyter Notebooks – a publishing
format for reproducible computational workflows, in: Positioning and Power in
Academic Publishing: Players, Agents and Agendas, edited by: Loizides, F. and
Schmidt, B., IOS Press, Amsterdam, the Netherlands, 87–90, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Krekel et al.(2004)Krekel, Oliveira, Pfannschmidt, Bruynooghe,
Laugher, and Bruhin</label><mixed-citation>
Krekel, H., Oliveira, B., Pfannschmidt, R., Bruynooghe, F., Laugher, B., and
Bruhin, F.: pytest 5.3.2, available at: <a href="https://github.com/pytest-dev/pytest" target="_blank"/> (last access: 12 May 2020), 2004.
</mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Lai and Anders(2018)</label><mixed-citation>
Lai, J. and Anders, A. M.: Modeled Postglacial Landscape Evolution at the
Southern Margin of the Laurentide Ice Sheet: Hydrological Connection of
Uplands Controls the Pace and Style of Fluvial Network Expansion, J. Geophys. Res.-Earth, 123, 967–984, <a href="https://doi.org/10.1029/2017JF004509" target="_blank">https://doi.org/10.1029/2017JF004509</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Laio et al.(2001)Laio, Porporato, Ridolfi, and
Rodriguez-Iturbe</label><mixed-citation>
Laio, F., Porporato, A., Ridolfi, L., and Rodriguez-Iturbe, I.: Plants in
water-controlled ecosystems: active role in hydrologic processes and response
to water stress II. Probabilistic soil moisture dynamics, Adv. Water Resour., 24, 707–723, <a href="https://doi.org/10.1016/s0309-1708(01)00005-7" target="_blank">https://doi.org/10.1016/s0309-1708(01)00005-7</a>, 2001.
</mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Lambeck(1988)</label><mixed-citation>
Lambeck, K.: Geophysical Geodesy: The Slow Deformations of the Earth, Clarendon, Oxford, 1988.
</mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Langston and Tucker(2018)</label><mixed-citation>
Langston, A. L. and Tucker, G. E.: Developing and exploring a theory for the
lateral erosion of bedrock channels for use in landscape evolution models,
Earth Surf. Dynami., 6, 1–27, <a href="https://doi.org/10.5194/esurf-6-1-2018" target="_blank">https://doi.org/10.5194/esurf-6-1-2018</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Litwin et al.(2020)Litwin, Tucker, Barnhart, and
Harman</label><mixed-citation>
Litwin, D., Tucker, G., Barnhart, K., and Harman, C.: GroundwaterDupuitPercolator: A Landlab component for groundwater flow, J. Open Sour. Softw., 5, 1935, <a href="https://doi.org/10.21105/joss.01935" target="_blank">https://doi.org/10.21105/joss.01935</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Lyons et al.(2019)Lyons, Val, Albert, Willenbring, and
Gasparini</label><mixed-citation>
Lyons, N. J., Val, P., Albert, J. S., Willenbring, J. K., and Gasparini, N. M.: Topographic controls on divide migration, stream capture, and diversification in riverine life, Earth Surf. Dynam. Discuss., <a href="https://doi.org/10.5194/esurf-2019-55" target="_blank">https://doi.org/10.5194/esurf-2019-55</a>, in review, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Lyons et al.(2020)Lyons, Albert, and Gasparini</label><mixed-citation>
Lyons, N. J., Albert, J. S., and Gasparini, N. M.: SpeciesEvolver: A Landlab
component to evolve life in simulated landscapes, J. Open Sour. Softw., 5, 2066, <a href="https://doi.org/10.21105/joss.02066" target="_blank">https://doi.org/10.21105/joss.02066</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Mandli et al.(2016)Mandli, Ahmadia, Berger, Calhoun, George,
Hadjimichael, Ketcheson, Lemoine, and LeVeque</label><mixed-citation>
Mandli, K. T., Ahmadia, A. J., Berger, M., Calhoun, D., George, D. L.,
Hadjimichael, Y., Ketcheson, D. I., Lemoine, G. I., and LeVeque, R. J.:
Clawpack: building an open source ecosystem for solving hyperbolic PDEs, PeerJ. Comp. Sci., 2, e68, <a href="https://doi.org/10.7717/peerj-cs.68" target="_blank">https://doi.org/10.7717/peerj-cs.68</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Marçais et al.(2017)Marçais, Dreuzy, and
Erhel</label><mixed-citation>
Marçais, J., Dreuzy, J.-R. D., and Erhel, J.: Dynamic coupling of subsurface and seepage flows solved within a regularized partition formulation, Adv. Water Resour., 109, 94–105, <a href="https://doi.org/10.1016/j.advwatres.2017.09.008" target="_blank">https://doi.org/10.1016/j.advwatres.2017.09.008</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>McKinney(2010)</label><mixed-citation>
McKinney, W.: Data Structures for Statistical Computing in Python,
edited by: van der Walt, S. and Millman, J., Proceedings of the 9th Python in Science Conference, Austin, TX, USA, 51–56, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Niemeyer et al.(2016)Niemeyer, Smith, and
Katz</label><mixed-citation>
Niemeyer, K. E., Smith, A. M., and Katz, D. S.: The Challenge and Promise of
Software Citation for Credit, Identification, Discovery, and Reuse, J. Data Inform. Qual., 7, 5, <a href="https://doi.org/10.1145/2968452" target="_blank">https://doi.org/10.1145/2968452</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>O'Callaghan and Mark(1984)</label><mixed-citation>
O'Callaghan, J. F. and Mark, D. M.: The extraction of drainage networks from
digital elevation data, Computer Vis. Graph. Image Proc., 28, 323–344, <a href="https://doi.org/10.1016/s0734-189x(84)80011-0" target="_blank">https://doi.org/10.1016/s0734-189x(84)80011-0</a>, 1984.
</mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Pan et al.(2015)Pan, Yan, Wang, and Hua</label><mixed-citation>
Pan, X., Yan, E., Wang, Q., and Hua, W.: Assessing the impact of software on
science: A bootstrapped learning of software entities in full-text papers, J. Informetr., 9, 860–871, <a href="https://doi.org/10.1016/j.joi.2015.07.012" target="_blank">https://doi.org/10.1016/j.joi.2015.07.012</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Peckham et al.(2013)Peckham, Hutton, and
Norris</label><mixed-citation>
Peckham, S. D., Hutton, E. W. H., and Norris, B.: A component-based approach
to integrated modeling in the geosciences The design of CSDMS, Comput. Geosci., 53, 3–12, <a href="https://doi.org/10.1016/j.cageo.2012.04.002" target="_blank">https://doi.org/10.1016/j.cageo.2012.04.002</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Pérez and Granger(2007)</label><mixed-citation>
Pérez, F. and Granger, B. E.: IPython: A System for Interactive Scientific Computing, Comput. Sci. Eng., 9, 21–29, <a href="https://doi.org/10.1109/mcse.2007.53" target="_blank">https://doi.org/10.1109/mcse.2007.53</a>, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Perron(2011)</label><mixed-citation>
Perron, J. T.: Numerical methods for nonlinear hillslope transport laws, J. Geophys. Res., 116, 23–13, <a href="https://doi.org/10.1029/2010jf001801" target="_blank">https://doi.org/10.1029/2010jf001801</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Perron and Royden(2012)</label><mixed-citation>
Perron, J. T. and Royden, L.: An integral approach to bedrock river profile
analysis, Earth Surf. Proc. Land., 38, 570–576, <a href="https://doi.org/10.1002/esp.3302" target="_blank">https://doi.org/10.1002/esp.3302</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Poisot(2015)</label><mixed-citation>
Poisot, T.: Best publishing practices to improve user confidence in scientific software, Idea. Ecol. Evol., 8, 50–54, <a href="https://doi.org/10.4033/iee.2015.8.8.f" target="_blank">https://doi.org/10.4033/iee.2015.8.8.f</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Polakow and Dunne(1999)</label><mixed-citation>
Polakow, D. A. and Dunne, T. T.: Modelling fire-return interval T:
stochasticity and censoring in the two-parameter Weibull model, Ecol. Model., 121, 79–102, <a href="https://doi.org/10.1016/s0304-3800(99)00074-5" target="_blank">https://doi.org/10.1016/s0304-3800(99)00074-5</a>, 1999.
</mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Prabhu et al.(2011)Prabhu, Zhang, Ghosh, August, Huang, Beard, Kim,
Oh, Jablin, Johnson, Zoufaly, Raman, Liu, and Walker</label><mixed-citation>
Prabhu, P., Zhang, Y., Ghosh, S., August, D. I., Huang, J., Beard, S., Kim, H., Oh, T., Jablin, T. B., Johnson, N. P., Zoufaly, M., Raman, A., Liu, F., and Walker, D.: A survey of the practice of computational science, in: 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC), Seattle, WA, USA, p. 1, <a href="https://doi.org/10.1145/2063348.2063374" target="_blank">https://doi.org/10.1145/2063348.2063374</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Quinn et al.(1991)Quinn, Beven, Chevallier, and
Planchon</label><mixed-citation>
Quinn, P., Beven, K., Chevallier, P., and Planchon, O.: The prediction of
hillslope flow paths for distributed hydrological modelling using digital
terrain models, Hydrol. Process., 5, 59–79, <a href="https://doi.org/10.1002/hyp.3360050106" target="_blank">https://doi.org/10.1002/hyp.3360050106</a>, 1991.
</mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>Rengers et al.(2016)Rengers, McGuire, Kean, Staley, and
Hobley</label><mixed-citation>
Rengers, F. K., McGuire, L. A., Kean, J. W., Staley, D. M., and Hobley, D. E. J.: Model simulations of flood and debris flow timing in steep catchments after wildfire, Water Resour. Res., 52, 6041–6061, <a href="https://doi.org/10.1002/2015wr018176" target="_blank">https://doi.org/10.1002/2015wr018176</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>Rocklin(2015)</label><mixed-citation>
Rocklin, M.: Dask: Parallel Computation with Blocked algorithms and Task
Scheduling, edited by: Huff, K. and Bergstra, J., in: Proceedings of the 14th Python in Science Conference, Austin, TX, USA, 130–136, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib67"><label>Schlesinger et al.(1979)Schlesinger, Crosbie, Gagné, Innis,
Lalwani, Loch, Sylvester, Wright, Kheir, and
Bartos</label><mixed-citation>
Schlesinger, S., Crosbie, R. E., Gagné, R. E., Innis, G. S., Lalwani, C. S., Loch, J., Sylvester, R. J., Wright, R. D., Kheir, N., and Bartos, D.:
Terminology for model credibility, Simulation, 32, 103–104,
<a href="https://doi.org/10.1177/003754977903200304" target="_blank">https://doi.org/10.1177/003754977903200304</a>, 1979.
</mixed-citation></ref-html>
<ref-html id="bib1.bib68"><label>Schmid et al.(2018)Schmid, Ehlers, Werner, Hickler, and
Fuentes-Espoz</label><mixed-citation>
Schmid, M., Ehlers, T. A., Werner, C., Hickler, T., and Fuentes-Espoz, J.-P.:
Effect of changing vegetation and precipitation on denudation – Part 2:
Predicted landscape response to transient climate and vegetation cover over
millennial to million-year timescales, Earth Surf. Dynam., 6, 859–881,
<a href="https://doi.org/10.5194/esurf-6-859-2018" target="_blank">https://doi.org/10.5194/esurf-6-859-2018</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib69"><label>Seabold and Perktold(2010)</label><mixed-citation>
Seabold, S. and Perktold, J.: statsmodels: Econometric and statistical modeling with python, in: 9th Python in Science Conference, Austin, TX, USA, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib70"><label>Sharman et al.(2019)Sharman, Sylvester, and
Covault</label><mixed-citation>
Sharman, G. R., Sylvester, Z., and Covault, J. A.: Conversion of tectonic and
climatic forcings into records of sediment supply and provenance, Scient. Rep., 9, 1–7, <a href="https://doi.org/10.1038/s41598-019-39754-6" target="_blank">https://doi.org/10.1038/s41598-019-39754-6</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib71"><label>Shelef and Hilley(2013)</label><mixed-citation>
Shelef, E. and Hilley, G. E.: Impact of flow routing on catchment area
calculations, slope estimates, and numerical simulations of landscape
development, J. Geophys. Res.-Earth, 118, 2105–2123, <a href="https://doi.org/10.1002/jgrf.20127" target="_blank">https://doi.org/10.1002/jgrf.20127</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib72"><label>Shobe et al.(2017)Shobe, Tucker, and Barnhart</label><mixed-citation>
Shobe, C. M., Tucker, G. E., and Barnhart, K. R.: The SPACE 1.0 model:
a Landlab component for 2-D calculation of sediment transport, bedrock
erosion, and landscape evolution, Geosci. Model Dev., 10, 4577–4604, <a href="https://doi.org/10.5194/gmd-10-4577-2017" target="_blank">https://doi.org/10.5194/gmd-10-4577-2017</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib73"><label>Singer et al.(2018)Singer, Michaelides, and Hobley</label><mixed-citation>
Singer, M. B., Michaelides, K., and Hobley, D. E. J.: STORM 1.0: a simple,
flexible, and parsimonious stochastic rainfall generator for simulating
climate and climate change, Geosci. Model Dev., 11, 3713–3726,
<a href="https://doi.org/10.5194/gmd-11-3713-2018" target="_blank">https://doi.org/10.5194/gmd-11-3713-2018</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib74"><label>Strauch et al.(2018)Strauch, Istanbulluoglu, Nudurupati, Bandaragoda,  Gasparini, and Tucker</label><mixed-citation>
Strauch, R., Istanbulluoglu, E., Nudurupati, S. S., Bandaragoda, C., Gasparini, N. M., and Tucker, G. E.: A hydroclimatological approach to predicting regional landslide probability using Landlab, Earth Surf. Dynam., 6, 49–75, <a href="https://doi.org/10.5194/esurf-6-49-2018" target="_blank">https://doi.org/10.5194/esurf-6-49-2018</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib75"><label>Tarboton(1997)</label><mixed-citation>
Tarboton, D. G.: A new method for the determination of flow directions and
upslope areas in grid digital elevation models, Water Resour. Res., 33, 309–319, <a href="https://doi.org/10.1029/96wr03137" target="_blank">https://doi.org/10.1029/96wr03137</a>, 1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib76"><label>Taschuk and Wilson(2017)</label><mixed-citation>
Taschuk, M. and Wilson, G.: Ten simple rules for making research software more robust, PLoS Comput. Biol., 13, e1005412, <a href="https://doi.org/10.1371/journal.pcbi.1005412" target="_blank">https://doi.org/10.1371/journal.pcbi.1005412</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib77"><label>Tucker et al.(2001a)Tucker, Catani, Rinaldo, and
Bras</label><mixed-citation>
Tucker, G. E., Catani, F., Rinaldo, A., and Bras, R. L.: Statistical analysis
of drainage density from digital terrain data, Geomorphology, 36, 187–202,
<a href="https://doi.org/10.1016/s0169-555x(00)00056-8" target="_blank">https://doi.org/10.1016/s0169-555x(00)00056-8</a>, 2001a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib78"><label>Tucker et al.(2001b)Tucker, Lancaster, Gasparini, and
Bras</label><mixed-citation>
Tucker, G. E., Lancaster, S. T., Gasparini, N. M., and Bras, R. L.: The
Channel-Hillslope Integrated Landscape Development Model (CHILD), in:
Landscape Erosion and Evolution Modeling, Springer US, Boston, MA, USA, 349–388, 2001b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib79"><label>Tucker et al.(2001c)Tucker, Lancaster, Gasparini, Bras, and Rybarczyk</label><mixed-citation>
Tucker, G. E., Lancaster, S. T., Gasparini, N. M., Bras, R. L., and Rybarczyk, S. M.: An object-oriented framework for distributed hydrologic and
geomorphic modeling using triangulated irregular networks, Comput. Geosci., 27, 959–973, <a href="https://doi.org/10.1016/s0098-3004(00)00134-5" target="_blank">https://doi.org/10.1016/s0098-3004(00)00134-5</a>, 2001c.
</mixed-citation></ref-html>
<ref-html id="bib1.bib80"><label>Tucker et al.(2020)Tucker, Hobley, McCoy, and
Struble</label><mixed-citation>
Tucker, G. E., Hobley, D. E. J., McCoy, S. W., and Struble, W. T.: Modeling the Shape and Evolution of Normal-Fault Facets, J. Geophys. Res.-Earth, 125, e2019JF005305, <a href="https://doi.org/10.1029/2019JF005305" target="_blank">https://doi.org/10.1029/2019JF005305</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib81"><label>Turing Way Community et al.(2019)The Turing Way Community,
Arnold, Bowler, Gibson, Herterich, Higman, Krystalli, Morley, O'Reilly, and
Whitaker</label><mixed-citation>
Turing Way Community, Arnold, B., Bowler, L., Gibson, S., Herterich, P.,
Higman, R., Krystalli, A., Morley, A., O'Reilly, M., and Whitaker, K.: The
Turing Way: A Handbook for Reproducible Data Science, zenodo,
<a href="https://doi.org/10.5281/zenodo.3233986" target="_blank">https://doi.org/10.5281/zenodo.3233986</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib82"><label>Virtanen et al.(2019)Virtanen, Gommers, Oliphant,
Haberland, Reddy, Cournapeau, Burovski, Peterson, Weckesser,
Bright, van der Walt, Brett, Wilson, Jarrod Millman, Mayorov,
Nelson, Jones, Kern, Larson, Carey, Polat, Feng, Moore, Vand erPlas, Laxalde, Perktold, Cimrman, Henriksen, Quintero, Harris, Archibald, Ribeiro, Pedregosa, van Mulbregt, and
Contributors</label><mixed-citation>
Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T.,
Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Jarrod Millman, K., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., Carey, C., Polat, İ., Feng, Y., Moore, E. W., Vander Plas, J., Laxalde, D., Perktold, J., Cimrman, R., Henriksen, I., Quintero, E. A., Harris, C. R., Archibald, A. M., Ribeiro, A. H., Pedregosa, F., van Mulbregt, P., and SciPy 1.0 Contributors: SciPy 1.0 – Fundamental Algorithms for Scientific Computing in Python, arXiv e-prints, arXiv:1907.10121, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib83"><label>Whitaker et al.(2019)Whitaker, Khrulev, Huard, Paulik, Hoyer, Filipe, Pastewka, Mohr, Marquardt, Couwenberg, Taves, Whitaker, Cuntz, Bohnet, Brett, Hetland, Koreniak, barronh, Onu, Helmus, Hamman, Barna, fredrik 1, Koziol, Kluyver, May, Smrekar, Barker, Gohlke, and Kinoshita</label><mixed-citation>
Whitaker, J., Khrulev, C., Huard, D., Paulik, C., Hoyer, S., Filipe, Pastewka, L., Mohr, A., Marquardt, C., Couwenberg, B., Taves, M., Whitaker, J., Cuntz, M., Bohnet, M., Brett, M., Hetland, R., Korenčiak, M., barronh, Onu, K., Helmus, J. J., Hamman, J., Barna, A., fredrik 1, Koziol, B., Kluyver, T., May, R., Smrekar, J., Barker, C., Gohlke, C., and Kinoshita, B. P.: Unidata/netcdf4-python: Version 1.5.3 release, zenodo, <a href="https://doi.org/10.5281/zenodo.3516272" target="_blank">https://doi.org/10.5281/zenodo.3516272</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib84"><label>Wickert(2016)</label><mixed-citation>
Wickert, A. D.: Open-source modular solutions for flexural isostasy: gFlex v1.0, Geosci. Model Dev., 9, 997–1017, <a href="https://doi.org/10.5194/gmd-9-997-2016" target="_blank">https://doi.org/10.5194/gmd-9-997-2016</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib85"><label>Willgoose et al.(1991)Willgoose, Bras, and
Rodriguez-Iturbe</label><mixed-citation>
Willgoose, G. R., Bras, R. L., and Rodriguez-Iturbe, I.: A coupled channel
network growth and hillslope evolution model, 1, Theory, Water Resour. Res., 27, 1671–1684, <a href="https://doi.org/10.1029/91WR00935" target="_blank">https://doi.org/10.1029/91WR00935</a>, 1991.
</mixed-citation></ref-html>
<ref-html id="bib1.bib86"><label>Wilson et al.(2014)Wilson, Aruliah, Brown, Hong, Davis, Guy, Haddock, Huff, Mitchell, Plumbley, Waugh, White, and Wilson</label><mixed-citation>
Wilson, G., Aruliah, D. A., Brown, C. T., Hong, N. P. C., Davis, M., Guy, R. T., Haddock, S. H. D., Huff, K. D., Mitchell, I. M., Plumbley, M. D., Waugh, B., White, E. P., and Wilson, P.: Best Practices for Scientific Computing, PLoS Biol., 12, e1001745, <a href="https://doi.org/10.1371/journal.pbio.1001745" target="_blank">https://doi.org/10.1371/journal.pbio.1001745</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib87"><label>Wilson et al.(2017)Wilson, Bryan, Cranston, Kitzes, Nederbragt, and
Teal</label><mixed-citation>
Wilson, G., Bryan, J., Cranston, K., Kitzes, J., Nederbragt, L., and Teal, T. K.: Good enough practices in scientific computing, PLOS Comput. Biol., 13, e1005510, <a href="https://doi.org/10.1371/journal.pcbi.1005510" target="_blank">https://doi.org/10.1371/journal.pcbi.1005510</a>, 2017.

</mixed-citation></ref-html>
<ref-html id="bib1.bib88"><label>Wobus et al.(2006)Wobus, Whipple, Kirby, Snyder, Johnson, Spyropolou, Crosby, and Sheehan</label><mixed-citation>
Wobus, C., Whipple, K., Kirby, E., Snyder, N., Johnson, J., Spyropolou, K.,
Crosby, B., and Sheehan, D.: Tectonics from topography: Procedures, promise,
and pitfalls, GSA Special Papers, Geological Society of America, Boulder, CO, USA, 55–74, <a href="https://doi.org/10.1130/2006.2398(04)" target="_blank">https://doi.org/10.1130/2006.2398(04)</a>, 2006.
</mixed-citation></ref-html>
<ref-html id="bib1.bib89"><label>Zebari et al.(2019)Zebari, Grützner, Navabpour, and
Ustaszewski</label><mixed-citation>
Zebari, M., Grützner, C., Navabpour, P., and Ustaszewski, K.: Relative timing of uplift along the Zagros Mountain Front Flexure (Kurdistan Region of Iraq): Constrained by geomorphic indices and landscape evolution modeling, Solid Earth, 10, 663–682, <a href="https://doi.org/10.5194/se-10-663-2019" target="_blank">https://doi.org/10.5194/se-10-663-2019</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib90"><label>Zhou et al.(2013)Zhou, Istanbulluoglu, and Vivoni</label><mixed-citation>
Zhou, X., Istanbulluoglu, E., and Vivoni, E. R.: Modeling the ecohydrological
role of aspect-controlled radiation on tree-grass-shrub coexistence in a
semiarid climate, Water Resour. Res., 49, 2872–2895, <a href="https://doi.org/10.1002/wrcr.20259" target="_blank">https://doi.org/10.1002/wrcr.20259</a>, 2013.
</mixed-citation></ref-html>--></article>
