Theory and governing equations¶
GRLP evolves the long profile of a transport-limited gravel-bed river. This page
gives the governing equations as amended by the 2020 corrigendum to Wickert &
Schildgen (2019) — the forms the code actually solves. The papers are open access
(CC-BY); see References. Fuller, source-linked notes on all of the
literature live in docs/literature/README.md in the repository.
Symbols¶
Symbol |
Meaning |
Code |
Typical |
|---|---|---|---|
\(z\) |
valley-floor (bed) elevation |
|
— |
\(x\) |
down-valley distance |
|
— |
\(Q_s\) |
bed-load sediment discharge |
— |
— |
\(Q\) |
channel-forming water discharge |
|
— |
\(B\) |
valley width |
|
— |
\(U\) |
uplift / subsidence (source–sink) |
|
— |
\(\lambda_p\) |
sediment porosity |
|
0.35 |
\(I\) |
intermittency |
|
0.01–1 |
\(\mathbb{S}\) |
sinuosity |
|
\(\ge 1\) |
\(k_{Q_s}\) |
lumped transport coefficient |
|
\(\approx 0.041\) |
Sediment transport¶
For a near-threshold, self-formed (Parker, 1978) equilibrium-width gravel channel, the bed-load sediment discharge is
A defining feature of the equilibrium-width assumption is that grain size
cancels: the specific transport rate scales as \(q_s \propto D^{3/2}\) while the
channel width scales as \(b \propto D^{-3/2}\), so no grain size enters \(Q_s\). The
lumped coefficient \(k_{Q_s} = k_{q_s}\,k_b \approx 0.041\) is built from first
principles (Wong & Parker, 2006; Parker, 1978) in
Segment.bedload_lumped_constants().
Mass conservation (Exner)¶
Valley width \(B\) enters only as a local prefactor \(1/B\), not through its downstream derivative. (Keeping \(B\) inside the derivative was the error fixed by the corrigendum — see below.)
Long-profile evolution equation¶
Combining the two gives a nonlinear diffusion equation:
The first bracketed term is diffusive; the second is an advective term arising from downstream discharge growth. There is no valley-width-derivative term.
Boundary conditions¶
- Upstream (Neumann, sediment flux)
A prescribed input sediment discharge sets the boundary slope, \(S_0 = -\,\mathrm{sgn}(Q_s)\,\mathbb{S}\, \bigl(Q_s /(k_{Q_s} I Q)\bigr)^{6/7}\). A higher sediment-to-water supply ratio steepens the boundary (Lane’s balance). Set with
set_Qs_input_upstream(Q_s_0), or slope-first withset_S0(S0).- Downstream (Dirichlet, base level)
Elevation is fixed at the outlet with
set_z_bl(z_bl). The outlet may also be moved horizontally withset_x_bl— for example to follow a shoreline migrating along a continental-shelf gradient (Ruby et al., 2026).
Numerical method¶
The equation is solved by a semi-implicit finite-difference scheme. The
diffusive part is a tridiagonal system solved directly; the weak nonlinearity
from \(|\partial z/\partial x|^{1/6}\) (and any nonlinear \(Q(x)\), \(B(x)\)) is
resolved by Picard iteration (set_niter). On a network, one global sparse
system is assembled over all nodes by walking the channel topology
(grlp.solver).
Steady-state and slope–area¶
The analytical steady-state profile between endpoints \((x_0, z_0)\) and \((x_1, z_1)\), useful as a verification benchmark, is
with the exponent depending on the distance→discharge power \(P_{x,Q}\) alone. The corresponding slope–area relation is \(S = S_0 (A_0/A)^{(6/7)P_{A,Q}}\), so channel concavity \(\theta = \tfrac{6}{7}P_{A,Q}\) is set by the drainage-area→discharge exponent.
Linearized response: gain and lag¶
Under small sinusoidal forcing, the equation linearizes to a constant-coefficient diffusion equation for the elevation perturbation, with a sediment-transport diffusivity
The equilibration time \(T_{eq}\) controls the response: fast forcing
(\(P \ll T_{eq}\)) is strongly damped, slow forcing (\(P \gg T_{eq}\)) is nearly in
phase with gain \(\to 6/7\). GRLP computes these directly
(compute_diffusivity, compute_equilibration_time, compute_z_gain,
compute_z_lag, compute_Qs_gain, compute_Qs_lag); the framework is from
McNab et al. (2023).
The 2020 corrigendum¶
The original Wickert & Schildgen (2019) equations mistakenly kept valley width \(B\) inside the spatial derivative of the Exner equation, which incorrectly implied that downstream valley widening or narrowing could by itself drive aggradation or incision. The corrigendum removes every valley-width-derivative term (so \(B\) is a \(1/B\) prefactor), restores an omitted \(\mathbb{S}^{7/6}\) sinuosity factor in the numerical scheme, corrects the upstream boundary condition’s sign, and redefines concavity as \(\theta = \tfrac{6}{7}P_{A,Q}\). The GRLP release that brought the code into line with the corrected equations was v1.4.1. Use the corrected forms on this page.
Networks¶
A network is a set of long-profile segments joined at confluences, each obeying
the evolution equation above, coupled by three junction rules (McNab et al.,
2025): (1) a segment’s upstream sediment supply is the sum of its upstream
segments’ sediment discharges; (2) elevation is continuous across every
junction; (3) water discharge steps up at each tributary junction. Random
network topologies are generated as Shreve (1966, 1974) random binary trees
(generate_random_network). The integrated network response resembles a single
profile whose length is the network’s mean inlet-to-outlet distance, not its
longest path.