Annualmeeting:2017 CSDMS meeting-053
Landlab components for surface hydrology: the FlowAccumulator and the FlowDirectors
[[Image:|300px|right|link=File:]]Landlab is python software framework for the creation of surface dynamics and process models. It provides grid structures, stable and intercompatible process components, and utilities for data input, output and visualization. Here we present two new types of components within the Landlab framework: the FlowAccumulator and the FlowDirectors. These components have been designed to implement one of the basic functions of surface dynamics modeling, the routing and accumulation of water over a surface. These components split up the functionality of the previously implemented FlowRouter component in order to make it easier for the addition of new algorithms for flow direction to Landlab. As part of these components, we include a new algorithm for efficient flow accumulation when flow is routed to multiple neighboring nodes.
Routing of water over a surface can be split into two steps: direction and accumulation. Before outlining these steps, it is useful to state the terminology used to describe the grid. In Landlab the physical processes operate on a model grid which stores information about spatial location and properties that may vary in space (e.g. soil thickness, surface water discharge). The model grid is a dual plane graph in which quantities such as topographic elevation are defined at node points. Between neighboring node points are lines called links on which water, sediment, or other quantities can flow.
To route flow over the surface, flow directions at a given node must first be assigned to indicate which, if any, of the neighboring nodes will receive any flow that arrives in that node. This is typically done using the relative elevations of a node’s neighbors. Previously Landlab supported the steepest descent (or D4) algorithm for both rectilinear and non-rectilinear grids and the D8 algorithms for rectilinear grids. As part of the presented improvement, Landlab includes the Multiple Flow Direction and D infinity algorithms. Each algorithm for directing flow is its own component, but all share core functionality of the FlowDirector class. This shared functionality includes attributes necessary for interacting with other Landlab components, including the FlowAccumulator. This design permits easy addition of new flow direction algorithms while maintaining interoperability with other Landlab components.
Once flow directions have been assigned, surface water discharge and drainage area can be calculated through flow accumulation. This functionality is provided by the FlowAccumulator component which is compatible with all FlowDirector components. Depending on the algorithm chosen, flow accumulation can be computationally inefficient, scaling at a rate greater than O(N). We present a new algorithm for accumulating flow for in the case where flow is directed to more than one receiver that scales with the number of links that flow is directed over.