User Tools

Site Tools


en:hydro:hydrographs

How to produce hydrographs

Different ways of producing a design hydrograph

Hydrographs can be produced with different approaches. A straightforward approach is to use the storage cascade of Nash. The Nash cascade is a sequence of $N$ linear stores in series, each having a residence time of $K$ time units. The resulting mathematical form of the Nash-cascade is:

$$h(t) = (t/K)^{N-1}*exp\left(\frac{-t/K}{K*\Gamma(N)}\right)$$

where $h(t)$ is the unit hydrograph in terms of a unit discharge and $\Gamma$ is the gamma function $\gamma(N)=(N-1)!$ for integer values $N$. $N$ can also have rational values.

| Nash.R
n <- 7 # number of storages in sequence
k <- 0.3 # exponential decay in each store were k = 1/n with n time steps
fc = 2.5
x <- seq(0.1,3,by=0.05)
y <- 1/(k*gamma(n))*(x/k)^(n-1)*exp(-x/k)*fc # Nash Cascade
plot(x,y,col=2, xlab= " ", ylab="Q", xlim=range(0:3), ylim=range(0:3))
curve(1/(k *gamma(n))*(x/k )^(n-1)*exp(-x/k)*fc, add = TRUE, col="red")

Unit Hydrograph with BerryFunctions

First, you need to install the package berryfunctions. Then you can use functions to produce unit hydrographs.

| Berry
library(berryFunctions)
Time <- 0:100
plot(Time, unitHydrograph(n=3,  k=2, t=Time), type="l", las=1,
     main="Unit Hydrograph - linear storage cascade")
lines(Time, unitHydrograph(n=2,  k=1, t=Time), col=2)
lines(Time, unitHydrograph(n=5,k=5, t=Time), col=4)
text(c(12, 20, 50), c(0.1, 0.04, 0.025), c("n=2, k=3","n=2, k=8","n=5.5, k=8"),
     col=c(1,2,4), adj=0)

Time of concentration

The time of concentration can be calculated with the formula of Kerby-Kirpich:

$$t_c = K \cdot {(L \cdot N)}^{0.467} \cdot S^{-0.235}$$

where: $t_{ov}$: overland flow time of concentration, in minutes $K$: a units conversion coefficient, in which K = 0.828 for traditional units and K = 1.44 for SI units $L$: the overland-flow length, in feet or meters as dictated by K $N$: a dimensionless retardance coefficient $S$: the dimensionless slope of terrain conveying the overland flow

| Kirpich.R
K = 1.44 # for SI units
L = 8000 # the overland-flow length, in meters as dictated by K
N = 3    # retardance coefficient
S = 0.010 # the dimensionless slope of terrain conveying the overland flow
 
tm = K*(L*N)^0.467*S^-0.235
tm
th = tm/60
th

The unit hydrograph with ADE

The unit hydrograph can also be estimated using the Advection Dispersion equation.

$$Q_(t) = \frac{x}{\sqrt{4*pi*D*t^3}}*exp\left[-\frac{(x-v_c*t)^2}{4*D*t}\right]$$

with the dispersion coefficient as

$$ D = v_c*\alpha = v_c * f_D * x $$

with $Q(t)$: discharge in $[m^3/s]$ $x$: Distance in meters $D$: Dispersion coefficient $t$: time in hours $v_c$ vecolicity in $[m/s]$ $f_D$ Scale-Factor $[m]$

| Ade.R
c<-1
D<-0.5
x<-12
fc = 12
t<-seq(0,24,0.5)
u<-fc*x/(4*pi*D*t^3)^(1/2)*exp(-(x-c*t)^2/(4*D*t))
plot(t,u,xlab="time", ylab="Discharge",
  xlim=c(0, 24.0), ylim=c(0, 2.0),type="l", col="blue", axes=FALSE)
axis(1, seq(0,24.0,2))
axis(2, seq(0,2.0,0.5))
grid (NULL,NULL, lty = 3, col = "grey")

S-function

Make a table (array of the dimensionless unit hydrograph) that you get from Link to tabulated unit hydrograph

Calculate the concentration time, and multiply the dimensionless time with the concentration time. Then multiply the dimension-less flow (from 0 to 1) with the peak flow. This will give you the full hydrograph.

unit timeunit flowpercentreal timereal flowtcQp
0.000.000.000.000.004.271.41
0.100.030.000.430.04
0.200.100.010.850.14
0.300.190.011.280.27
0.400.310.041.710.44
0.500.470.072.140.66
0.600.660.112.560.93
0.700.820.162.991.16
0.800.930.233.421.31
0.900.990.303.841.40
1.001.000.384.271.41
1.100.990.454.701.40
1.200.930.525.121.31
1.300.860.595.551.21
1.400.780.655.981.10
1.500.680.706.410.96
1.600.560.756.830.79
1.700.460.797.260.65
1.800.390.827.690.55
1.900.330.858.110.47
2.000.280.878.540.39
2.200.210.919.390.29
2.400.150.9310.250.21
2.600.110.9511.100.15
2.800.080.9711.960.11
3.000.060.9812.810.08
3.200.040.9813.660.06
3.400.030.9914.520.04
3.600.020.9915.370.03
3.800.021.0016.230.02
4.000.011.0017.080.02
4.500.011.0019.220.01
5.000.001.0021.350.00
| UnitHydrograph.R
```{r uhdata}
ut = c(0.00,0.10,0.20,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70,1.80,1.90,2.00,2.20,2.40,2.60,2.80,3.00,3.20,3.40,3.60,3.80,4.00,4.50,5.00)
uq = c(0.00,0.03,0.10,0.19,0.31,0.47,0.66,0.82,0.93,0.99,1.00,0.99,0.93,0.86,0.78,0.68,0.56,0.46,0.39,0.33,0.28,0.21,0.15,0.11,0.08,0.06,0.04,0.03,0.02,0.02,0.01,0.01,0.00)
 
plot(ut,uq, type="l")
 
K = 1.44 # for SI units
L = 6500 # the overland-flow length, in meters as dictated by K
N = 1.00 # retardance coefficient
S = 0.01 # the dimensionless slope of terrain conveying the overland flow
qp= 1.41 # here the design flow is 1.41 m³/s
 
tm = K*(L*N)^0.467*S^-0.235 # concentration time in minutes
tm                          # show it
th = tm/60                  # concentration time in hours
th                          # show it
 
ur = ut*th                  # hydrograph time in real time units, here hours
qr = uq*qp                  # peak flow to be determined from hydrograph analysis
 
plot(ur,qr, type="l")
en/hydro/hydrographs.txt · Last modified: by ckuells