
Rainfall-runoff: IDF curves, unit hydrographs, baseflow and hydrograph summaries
Source:R/Hydrology.R
IdfFit.RdIdfFit: Sherman curve \(i = a / (t + b)^c\) by Levenberg-Marquardt
from the log-linear \(b = 0\) start. UnitHydrograph: D-hour unit
hydrograph (m^3/s per cm over area km^2): SCS triangular
(\(T_p = D/2 + 0.6 t_c\), \(q_p = 2.08 A / T_p\), base
\(2.67 T_p\)) or the Nash cascade S-curve difference.
ConvolveRunoff: discrete convolution of excess rain with UH
ordinates. BaseflowFilter: Lyne-Hollick filter, forward/backward
passes with quickflow clamped between 0 and the flow, and the baseflow index.
HydrographSummary: peak, time to peak, trapezoidal volume, BFI and
the pooled log-linear recession constant. Identical to the Python arm
morie.fn.hydro.
Usage
IdfFit(durations, intensities, start = NULL, tol = 1e-13, maxit = 500L)
UnitHydrograph(
method = "scs",
area = 1,
dt = 0.5,
D = 1,
tc = NULL,
n = NULL,
k = NULL
)
ConvolveRunoff(excess, uh)
BaseflowFilter(flows, alpha = 0.925, passes = 3L)
HydrographSummary(flows, dt = 1, alpha = 0.925, min_recession = 3L)Arguments
- durations, intensities
Durations and rainfall intensities.
- start
Optional
c(a, b, c).- tol, maxit
Relative parameter-step tolerance and iteration limit.
- method
"scs"or"nash".- area
Catchment area, km^2.
- dt
Time step, hours.
- D
Excess-rain duration, hours.
- tc
Time of concentration, hours.
- n, k
Nash reservoirs and storage constant (hours).
- excess, uh
Excess rain depths and UH ordinates.
- flows
Flow series.
- alpha
Filter parameter.
- passes
Number of filter passes.
- min_recession
Minimum recession run length.
References
Sherman, C. W. (1931). Frequency and intensity of excessive rainfalls at Boston, Massachusetts. Transactions of the ASCE 95, 951-960.
Nash, J. E. (1957). The form of the instantaneous unit hydrograph. IAHS Publication 45(3), 114-121.
Nathan, R. J. and McMahon, T. A. (1990). Evaluation of automated techniques for base flow and recession analyses. Water Resources Research 26, 1465-1473.
Examples
t <- c(5, 10, 15, 30, 60, 120)
IdfFit(t, 1000 / (t + 8)^0.7)[c("a", "b", "c")]
#> $a
#> [1] 1000
#>
#> $b
#> [1] 8
#>
#> $c
#> [1] 0.7
#>
UnitHydrograph("scs", area = 10, dt = 1, D = 2, tc = 5 / 0.6)$peak
#> [1] 3.466667
ConvolveRunoff(c(1, 2), c(0, 1, 3, 1, 0))
#> [1] 0 1 5 7 2 0
HydrographSummary(c(1, 4, 8, 4, 2, 1, 0.5))$recession_constant
#> [1] 0.5