Returns a tibble of pre-defined flood factor scenarios for
fl_valley_confine(). Each row is a complete parameter set that can be
passed to the function. The bundled CSV includes three scenarios spanning
active channel margin (ff=2) to full valley bottom (ff=6).
Value
A tibble with columns: scenario_id, flood_factor,
slope_threshold, max_width, cost_threshold, size_threshold,
hole_threshold, run, description, ecological_process,
citation_keys.
Details
The flood_factor is a DEM compensation parameter, not an ecological
threshold — no paper maps specific ff values to ecological processes.
The scenario descriptions are an interpretive overlay based on where
different ff values fall relative to field-validated studies:
ff=2: Rosgen flood-prone width, ~50-yr flood stage
ff=3-4: Historical floodplain (Hall et al. 2007 validated ff=3 on 10m DEM against 213 field sites; ff=4 compensates for 25m DEM smoothing)
ff=5-7: Valley bottom including terraces (Nagel et al. 2014)
DEM resolution matters: coarser DEMs need larger ff to compensate for smoothed valley floors.
| DEM | ff for the same real floodplain |
| 1 m lidar | 2-3 |
| 10 m | 3 |
| 25 m TRIM | 4 |
| 30 m MRDEM | up to 7 |
So ff04 on 25 m TRIM and ff03 on 10 m aim at the same ecological thing,
and ff04 on 30 m MRDEM is a conservative functional floodplain rather
than a centred one. Comparing ff04 across resolutions compares two
different things.
These values are unchanged across the 0.5.0 units fix (flooded#49) because
they were taken from the literature ladder to begin with. What changed is
that they now behave as labelled — before the fix, ff02 / ff04 / ff06
were really 7.19 / 14.37 / 21.56 times bankfull depth.
The run column allows consuming projects to document all scenarios but
only execute selected ones (e.g., dplyr::filter(scenarios, run)).
Examples
scenarios <- fl_scenarios()
scenarios[, c("scenario_id", "flood_factor", "description")]
#> # A tibble: 3 × 3
#> scenario_id flood_factor description
#> <chr> <int> <chr>
#> 1 ff02 2 Flood-prone width / active channel margin
#> 2 ff04 4 Functional floodplain
#> 3 ff06 6 Valley bottom extent
# Filter to scenarios marked for execution
to_run <- scenarios[scenarios$run, ]
