Problem
In dist_mode=channel, Provenisaurus strips the hillslope leg so Sternberg attrition acts only along the channel (distance = dist-to-outlet − dist-to-stream, clamped ≥ 0). This makes the answer sensitive to where the channel begins — the fluvial channel head. Right now that location is set implicitly by a single global accumulation threshold (stream_threshold, default 10000 cells ≈ 1.44 km² at 12 m), via r.stream.extract. A fixed area threshold is a crude proxy: real channel heads vary in space with slope, lithology, climate, and process, and "where do channels begin" is a long-standing open problem in geomorphology.
Why it matters here
The channel-head location is one of the biggest levers on the inverted attrition lengths for the channel variant (the handoff flags it alongside source-area definition). A threshold that's too low pushes channel heads upslope, lengthening the fluvial path and biasing e-folding distances; too high does the reverse. dist_mode=whole is unaffected (it uses the full hillslope+channel path).
Current state
- Channel network = fixed accumulation threshold only.
- No slope dependence, no per-cell channel-initiation criterion.
- Affects
channel runs exclusively.
What's needed
A method (or pluggable choice of methods, mirroring how source_mask is pluggable) to locate channel heads, e.g.:
- Slope–area threshold (A·Sᵏ exceeds a critical value) rather than area alone — Montgomery & Dietrich's classic channel-initiation framing.
- Geodesic / nonlinear-filtering extraction — Passalacqua et al. (GeoNet): nonlinear diffusion + geodesic energy minimization to extract channels and heads from high-resolution topography.
- Curvature / chi-based channel-head extraction — Clubb et al. (DrEICH, in LSDTopoTools): objective channel-head identification from channel-profile statistics.
- Field-mapped channel heads where available, as ground truth / calibration.
- Drainage-density / curvature thresholds.
Caveat: the Passalacqua and Clubb methods are designed for high-resolution (lidar-scale) DEMs; their applicability to TanDEM-X 12 m needs checking. Like source-area definition, the choice of method is a study-level scientific decision; Provenisaurus should consume a channel-head / channel-network input rather than hard-code one criterion. See the study repo for geomorphic context.
Acceptance
- Channel heads come from an explicit, swappable criterion (not just a global area threshold).
- A sensitivity test over the criterion exists for the
channel variant.
🤖 Generated with Claude Code
Problem
In
dist_mode=channel, Provenisaurus strips the hillslope leg so Sternberg attrition acts only along the channel (distance = dist-to-outlet − dist-to-stream, clamped ≥ 0). This makes the answer sensitive to where the channel begins — the fluvial channel head. Right now that location is set implicitly by a single global accumulation threshold (stream_threshold, default 10000 cells ≈ 1.44 km² at 12 m), viar.stream.extract. A fixed area threshold is a crude proxy: real channel heads vary in space with slope, lithology, climate, and process, and "where do channels begin" is a long-standing open problem in geomorphology.Why it matters here
The channel-head location is one of the biggest levers on the inverted attrition lengths for the
channelvariant (the handoff flags it alongside source-area definition). A threshold that's too low pushes channel heads upslope, lengthening the fluvial path and biasing e-folding distances; too high does the reverse.dist_mode=wholeis unaffected (it uses the full hillslope+channel path).Current state
channelruns exclusively.What's needed
A method (or pluggable choice of methods, mirroring how
source_maskis pluggable) to locate channel heads, e.g.:Caveat: the Passalacqua and Clubb methods are designed for high-resolution (lidar-scale) DEMs; their applicability to TanDEM-X 12 m needs checking. Like source-area definition, the choice of method is a study-level scientific decision; Provenisaurus should consume a channel-head / channel-network input rather than hard-code one criterion. See the study repo for geomorphic context.
Acceptance
channelvariant.🤖 Generated with Claude Code