Model:TopoFlow-Channels-Diffusive Wave


TopoFlow-Channels-Diffusive Wave


Also known as
Model type Single
Model part of larger framework
Note on status model
Date note status model
Incorporated models or components:
Spatial dimensions 2D
Spatial extent Landscape-Scale, Watershed-Scale
Model domain Hydrology
One-line model description Diffusive Wave process component for flow routing in a D8-based, spatial hydrologic model
Extended model description This process component is part of a spatially-distributed hydrologic model called TopoFlow, but it can now be used as a stand-alone model. It uses the "diffusive wave" method to compute flow velocities for all of the channels in a D8-based river network. This method includes a pressure gradient term that is induced by a water-depth gradient in the downstream direction. This means that instead of using bed slope in Manning's equation or the law of the wall, the water-surface slope is used.


Name Scott Peckham
Type of contact Model developer
Institute / Organization CSDMS, INSTAAR, University of Colorado
Postal address 1 1560 30th street
Postal address 2
Town / City Boulder
Postal code 80305
State Colorado
Country United States
Email address
Phone 303-492-6752

Supported platforms
Unix, Linux, Mac OS, Windows
Other platform
Programming language


Other program language None (but uses NumPy package)
Code optimized Single Processor
Multiple processors implemented
Nr of distributed processors
Nr of shared processors
Start year development 2001
Does model development still take place? Yes
If above answer is no, provide end year model development
Code development status Active
When did you indicate the 'code development status'? 2020
Model availability As code, As teaching tool
Source code availability
(Or provide future intension)
Through web repository
Source web address
Source csdms web address
Program license type Apache public license
Program license type other
Memory requirements Standard
Typical run time Minutes to hours

Describe input parameters These inputs must be provided as grids:
  • flow_codes = D8 flow codes (Jenson 1984 convention), (NE,E,SE,S,SW,W,NW,N) → (1,2,4,8,16,32,64,128)
  • bed_slope = slope of the channel bed or hillslope (m / m)
  • Manning_n = Manning roughness parameter (s / m^(1/3))
  • bed_width = bed width for trapezoidal cross-section (m)
  • bank_angle = bank angle for trapezoid (deg) (from vertical)

These inputs can be provided as scalars or grids:

  • sinuosity = channel sinuosity (m/m) (along-channel / straight length)
  • init_depth = initial water depth (m) (See HTML help)

Grids must be saved in binary files with no header. All variables should be stored as 4-byte, floating-point numbers (IEEE standard) except flow codes, which are unsigned, 1-byte integers.

The behavior of this component is controlled with a configuration (CFG) file, which may point to other files that contain input data. Here is a sample configuration (CFG) file for this component:

Method code:            2
Method name:            Diffusive_Wave
Manning flag:           1
Law of Wall flag:       0
Time step:              Scalar         6.00000000          (sec)
D8 flow code:           Grid           Treynor_flow.rtg    (none)
D8 slope:               Grid           Treynor_slope.rtg   (m/m)
Manning N:              Grid           Treynor_chan-n.rtg  (s/m^(1/3))
Bed width:              Grid           Treynor_chan-w.rtg  (m)
Bank angle:             Grid           Treynor_chan-a.rtg  (deg)
Init. depth:            Scalar         0.00000000          (m)
Sinuosity:              Scalar         1.00000000          (m/m)
Save grid timestep:     Scalar         60.00000000             (sec)
Save Q grids:           1              Case5_2D-Q.rts          (m^3/s)
Save u grids:           0              Case5_2D-u.rts          (m/s)
Save d grids:           0              Case5_2D-d.rts          (m)
Save f grids:           0              Case5_2D-f.rts          (none)
Save pixels timestep:   Scalar         60.00000000             (sec)
Save Q pixels:          1              Case5_0D-Q.txt          (m^3/s)
Save u pixels:          0              Case5_0D-u.txt          (m/s)
Save d pixels:          0              Case5_0D-d.txt          (m)
Save f pixels:          0              Case5_0D-f.txt          (none)
Input format ASCII, Binary
Other input format
Describe output parameters This component computes the following variables, as grids:
Q  = discharge (m^3/s)
u  = flow velocity (m/s)
d  = flow depth (m)
f  = friction factor (none)
Rh = hydraulic radius (m)
S_free = free-surface slope (m/m)

The user can choose which, if any, of these to save. Each may be saved as a grid sequence, indexed by time, in a netCDF file, at a specified sampling rate. Each may also be saved for a set of "monitored" grid cells, each specified as a (row,column) pair in a file with the name: <case_prefix>_outlets.txt. With this option, computed values are saved in a multi-column text file at a specified sampling rate. Each column in this file corresponds to a time series of values for a particular grid cell. For both options the sampling rate must no smaller than the process timestep.

Output format ASCII, Binary
Other output format
Pre-processing software needed? Yes
Describe pre-processing software Another program must be used to create the input grids. This includes a D8 flow grid derived from a DEM for the region to be modeled. The earlier, IDL version of TopoFlow can be used to create some of these.
Post-processing software needed? Yes
Describe post-processing software None, except visualization software. Grid sequences saved in netCDF files can be viewed as animations and saved as movies using VisIt.
Visualization software needed? Yes
If above answer is yes
Other visualization software VisIt

Describe processes represented by the model The diffusive wave method for flow routing in the channels of a D8-based river network.
Describe key physical parameters and equations Main equations used by this component:
ΔV(i,t)=   Δt * ( R(i,t) Δx Δy - Q(i,t) + Σk Q(k,t) ) 	 = change in water volume (m^3),   mass conservation
d 	=   {( w^2 + 4 tan(θ) V / L)^1/2 - w } / (2 tan(θ))   	= mean water depth in channel segment (m)   (if θ > 0)
d 	=   V / (w * L) 	= mean water depth in channel segment (m)   (if θ = 0)
Q 	=   v * Aw 	= discharge of water (m^3 / s)
v 	=   n^(-1) * Rh^(2/3) * S^(1/2) 	= section-averaged velocity (m / s), Manning's formula
v 	=   ( g * Rh * S)^(1/2) * LN( a * d / z0) / κ 	= section-averaged velocity (m / s), Law of the Wall
Rh 	=   Aw / Pw 	= hydraulic radius (m)
Aw 	=   d * (w + (d * tan(θ))) 	= wetted cross-sectional area of a trapezoid (m^2)
Pw 	=   w + (2 * d / cos(θ)) 	= wetted perimeter of a trapezoid (m)
Vw 	=   d^2 * ( L * tan(θ) ) + d * (L * w) 	= wetted volume of a trapezoidal channel (m)

(Source: TopoFlow HTML Help System)

Describe length scale and resolution constraints Recommended grid cell size is around 100 meters, but can be parameterized to run with a wide range of grid cell sizes. DEM grid dimensions are typically less than 1000 columns by 1000 rows.
Describe time scale and resolution constraints The basic stability condition is: dt < (dx / u_min), where dt is the timestep, dx is the grid cell size and u_min is the smallest velocity in the grid. This ensures that flow cannot cross a grid cell in less than one time step. Typical timesteps are on the order of seconds to minutes. Model can be run for a full year or longer, if necessary.
Describe any numerical limitations and issues This model/component needs more rigorous testing.

Describe available calibration data sets This model/component is typically not calibrated to fit data, but is run with a best guess or measured value for each input parameter.
Upload calibration data sets if available:
Describe available test data sets Available test data sets:
  • Treynor watershed, in the Nishnabotna River basin, Iowa, USA.
  • (Two large rainfall events.)
  • Small basin in Kentucky.
  • Inclined plane for testing.
  • Arctic watershed data from Larry Hinzman (UAF).
  • See /data/progs/topoflow/3.0/data on CSDMS cluster.
Upload test data sets if available:
Describe ideal data for testing Several test datasets are stored on the CSDMS cluster at: /data/progs/topoflow/3.0/data.

Do you have current or future plans for collaborating with other researchers? Collaborators include: Larry Hinzman (UAF), Bob Bolton, Anna Liljedahl (UAF), Stefan Pohl, Tom Over and others
Is there a manual available? Yes
Upload manual if available:
Model website if any This site.
Model forum / discussion board
Comments About this component:
  • This component was developed as part of the TopoFlow hydrologic model, which was originally written in IDL and had a point-and-click GUI. For more information on TopoFlow, please goto:
  • When used from within the CSDMS Modeling Tool (CMT), this component has "config" button which launches a graphical user interface (GUI) for changing input parameters. The GUI is a tabbed dialog with a Help button at the bottom that displays HTML help in a browser window.
  • This component also has a configuration (CFG) file, with a name of the form: <case_prefix>_channels_diff_wave.cfg. This file can be edited with a text editor.
  • The Numerical Python module (numpy) is used for fast, array-based processing.
  • This model has an OpenMI-style interface, similar to OpenMI 2.0. Part of this interface is inherited from "".

Model info
Nr. of publications: 1
Total citations: 11
h-index: 1
m-quotient: 0.07

Link to this page




Nr. of publications: 1
Total citations: 11
h-index: 1
m-quotient: 0.07




Input Files

Output Files