The need to assess blockage represents a change to hydraulic modelling practice. In the past, industry-wide guidance was lacking and the effect of blockage was often not considered. The new guidelines provide a standard procedure but, as yet, there is limited experience in their application. Part of the process is to complete a blockage assessment form which is linked from ARR. Unfortunately the link no longer works but the form is on the internet here.

The guidelines are being incorporated into hydraulic modelling software with a recent paper outlining the procedures that have been included in TUFLOW and an assessment of how they have performed in three case studies of recent flood modelling projects (Ollett, et al., 2017).

It is likely that future flood modelling briefs will require assessment of blockage so flood consultants will need to learn about, and be able to apply, the procedures and explain the significance of results to clients. Some resources are listed blow.

Ollett, P., Syme, B. and Ryan, P. (2017) Australian Rainfall and Runoff guidance on blockage of hydraulic structures: numerical implementation and three case studies. Journal of Hydrology (NZ) 56(2) 109-122. (link)

Ollett, P. and Syme, B. (2016) ARR blockage: numerical implementation and three case studies. 37th Hydrology and Water Resources Symposium 2016: Water, Infrastructure and the Environment. Queenstown, NZ. pp. 346-359 (link)

Ribgy, E. and Weeks, W. (2015) Evolving an Australian design procedure for structure blockages. 36th Hydrology and Water Resources Symposium: The art and science of water. Hobart, Tas. pp. 154-161. (link)

Suitability of ARR guidelines as an alternative blockage policy for Wollongong. 36th Hydrology and Water Resources Symposium: The art and science of water. Hobart, Tas. pp. 370-377. (link)

Project 11 Draft Blockage Guidelines (2015)

Project 11 (Blockage of Hydraulic Structures) Stage 2 Report (2013) (link at arr-software.org)

Project 11 (Blockage of Hydraulic Structures) Stage 1 Report (2009) link at arr-software.org)

]]>As an example, consider two neighbouring streams in eastern Melbourne: Brushy Creek which flows through the suburb of Croydon, with a catchment that is 28% impervious, and Olinda Creek with a catchment that is mainly forested and which is 5% impervious.

Often, the value of TQmean is calculated and then averaged for several years. Using this approach, The TQmean for Brushy Creek, is 0.21, with the less urbanised Olinda Creek, having a value of 0.37 (for the period 1988 to 2016). Using the relationships in Booth et al. (2004) this suggests Olinda Creek would be predicted to have ‘good’ biological condition, while Brushy Creek would be predicted to be ‘very poor’.

Calculating a single value of TQ_{mean} is instructive but the temporal distribution of the time of the year when flows exceed the mean is also altered by urbanisation. Using TQ_{mean} as the metric, urbanisation results in high flows occurring more often, but for shorter periods, that are dispersed throughout the year. Comparing the plots of Olinda Creek and Brushy Creek in (figure), higher flows (flows above the mean), are clustered in the winter (June to August) for Olinda Creek. There is more winter runoff because the Olinda Creek catchment wets up owing to the higher rainfall, and reduced evaporation that occur seasonally in this area. For Brushy Creek, with the same climate, short bursts of high flow occur throughout the whole year. This can be attributed to runoff from impervious surfaces which will occur anytime there is rain.

A key issue revealed by this analysis is the changed seasonality of high flow which is a result of urbanisation. This is just one of the many changes in flow regime caused by urbanisation that leads to poor stream condition (Burns et al. 2014).

Code to plot these graphs is available as a gist.

]]>

An alternative is a trellis or facet plot (Figure 3). Here, the flow in each year is plotted as a separate graph. If the y-axis scale is held constant across all years, the overall temporal variation is highlighted and the very dry years stand out (for example 2006-2009).

If the scales are varied for each year the seasonal flow patterns are emphasised (Figure 4). The transfers from upstreams dams standout with the rectangular hydrographs in 1977, 1982, 1983 and the summer of 1983-84.

Data for gauge 404216 was obtained from the Victorian Water Measurement Information System (WMIS).

R code to produce the graphs in this blog is available as gists (here for the cut-and-stack plot; and here for the facet plots).

]]>The example below highlights common issues with these types of figures. It is difficult to unambiguously determine how the lines relate to the legend because the colours are not distinct and the lines overlap. Also, in this case the x-axis scaling is not meaningful. The same distance on the graph represents different time periods: 3 hours between the first 2 tick marks (9 to 12) and 24 hours between the final 2 tick marks (48 to 72).

An improved version is shown in Figure 2. Colours are distinct, lines are labelled directly, (rather than using a legend), the x-axis scaling is consistent, using a thousands separator makes it easier to read the y-axis values. Both ends of a line can be labelled where this contributes to clarity. A grey background can help make it easier to see the data and allows the use of unintrusive pale gridlines.

Figure 2: Line graph – improved version

Some may prefer the minimalist version shown in Figure 3. This attempts to maximise the information to ink ratio by reducing “chart junk” – those parts of a chart that don’t contribute to understanding (Tufte, 1983).

Code to reproduce these figures is available as a gist.

Cleveland, W. S. (1993) Visualizing Data. Hobart Press.

Tufte, E. R. (1983) The visual display of quantitative information. Graphics Press. Cheshire, CT, USA.

]]>Using Flike version 5.0.300.0 I’ve fitted a Log Pearson III distribution to the annual series for the Tyers River at Browns (226007) using data from 1963 to 2007. The graph produced by Flike is shown in Figure 1. This graph is fine to show the quality of the fit but it would be nice to polish it for incorporation into a report. A csv file of the flow data input to Flike is is available here; the Flike .fld file is here.

Figure 1: Flike plot – flood frequency curve for the Tyers River at Browns (226007) (1963-2007). Log Pearson III probability model

The data used to create the plot can be downloaded into a csv file by clicking the ‘Save’ button below the plot (the file associated with this graph is available here). There are three parts to the resulting file:

- the data points – deviates and gauged values
- points specifying the expected parameter quantiles and confidence limits
- points specifying the expected probability quantiles.

These can be read into Excel, or a graphics program, and plotted. An example is shown in Figure 2.

A key enhancement in this figure, compared to the standard Flike plot, is that the y-axis tick marks are labelled with the flow values rather than logs. The log transformation has been retained, just the labelling has been changed. The x-axis tick mark labels are similar. The deviate values are plotted but are labelled using the ‘1 in Y’ format.

Although it takes some time to construct and label a plot, much of the work can be repeatedly re-used in future reports. If you are doing a lot of flood frequency analysis, its worth setting up a template.

I’ve used the ggplot2 package in R to produce this plot. Details are available via this gist.

]]>The four volumes can be accessed via these links:

]]>- May 7, 2018 – Application of Australian Rainfall and Runoff (ARR2016) in Urban Areas Workshop
- May 16, 2018 – Australia Rainfall and Runoff (ARR2016) breakfast seminar
- July 19 and 20, 2018 – Australian Rainfall and Runoff Workshop. This workshop is also being held in other cities.

As I learn things about ARR2016 I’m adding pages here.

]]>I’ve extracted part of the task view here but please also check the original. Acknowledgements to Gavin Simpson.

- Package HydroMe estimates the parameters in infiltration and water retention models by curve-fitting method.
- hydroTSM is a package for management, analysis, interpolation and plotting of time series used in hydrology and related environmental sciences.
- hydroGOF is a package implementing both statistical and graphical goodness-of-fit measures between observed and simulated values, mainly oriented to be used during the calibration, validation, and application of hydrological/environmental models. Related packages are tiger, which allows temporally resolved groups of typical differences (errors) between two time series to be determined and visualized, and qualV which provides quantitative and qualitative criteria to compare models with data and to measure similarity of patterns
- hydroPSO is a model-independent global optimization tool for calibration of environmental and other real-world models that need to be executed from the system console.hydroPSO implements a state-of-the-art PSO (SPSO-2011 and SPSO-2007 capable), with several fine-tuning options. The package is parallel-capable, to alleviate the computational burden of complex models.
- EcoHydRology provides a flexible foundation for scientists, engineers, and policy makers to base teaching exercises as well as for more applied use to model complex eco-hydrological interactions.
- topmodel is a set of hydrological functions including an R implementation of the hydrological model TOPMODEL, which is based on the 1995 FORTRAN version by Keith Beven. New functionality is being developed as part of the RHydro package on R-Forge.
- dynatopmodel is a native R implementation and enhancement of the Dynamic TOPMODEL, Beven and Freers’ (2001) extension to the semi-distributed hydrological model TOPMODEL (Beven and Kirkby, 1979).
- wasim provides tools for data processing and visualisation of results of the hydrological model WASIM-ETH
- The nsRFA package provides collection of statistical tools for objective (non-supervised) applications of the Regional Frequency Analysis methods in hydrology.
- The boussinesq package is a collection of functions implementing the one-dimensional Boussinesq Equation (ground-water).
- rtop is a package for geostatistical interpolation of data with irregular spatial support such as runoff related data or data from administrative units.

]]>

Lets look at monthly discharges in seven streams from the Bass River, near Phillip Island, around to the Werribee River.

Flow in the Bass River at Glen Forbes South is strongly seasonal. The graph below shows the flow volume in each month. The horizontal lines are the monthly averages with vertical lines representing volumes for each month as recorded in the years 2000 to 2015.

As we track west, winter flows become less pronounced; see the discharges for the Bunyip River below.

There is a small seasonal signal in Eumemmerring Creek (near Dandenong), but in the streams in urbanised catchments (from east to west – Gardiners, Merri and Kororoit) there is no evidence of seasonality. For these streams, the high flow months are November and February. This is partly driven by some unusually large events, for example, the flood of Feb 2005 stands out on these figures.

For the highly regulated Werribee River, average monthly volumes are higher in summer and spring. The small number of large vertical spikes show this pattern is influenced by a few rare events.

Its difficult to tease out the cause of the differences in seasonality as these streams are affected by gradients in urbanisation, climate, and regulation. Certainly, urbanisation has a strong influence. The impervious surfaces in urban areas will produce runoff all year round; they aren’t influenced by the seasonal wetting and drying that occurs in the rural catchments.

And the consequences? We know that fish, for example, respond to seasonal flow changes to migrate and spawn. But changes in seasonality are probably only a small influence in comparison with the large number of factors affecting the ecology of these streams.

]]>The general equation for flood quantile estimation (from Chow, 1951) is:

(1)

Where is the frequency factor that depends on the distribution of the flood data and the probability of interest, and are the mean and standard deviation.

The classical frequency factor for the log-normal distribution is:

(2)

Where, is a standard normal deviate and is the coefficient of variation . The standard normal deviate can be calculated, for example, using the `qnorm`

function in R. So for the 100-year flood, exceedance probability = 1/100, .

An R function to calculate this log-normal frequency factor is:

# Frequency factor for the log-normal distribution # m - mean # s - standard deviation # p - exceedance probability FF_LogNormal <- function(m, s, p) { cv <- s/m z <- qnorm(1 - p) (1/cv) * (exp(sqrt(log(1 + cv^2)) * z - 0.5 * log(1 + cv^2)) - 1) }

Kite (2004) provides an example we can use for testing.

Annual maximum discharges of the Saint John River at Fort Kent, New Brunswick for the 37 years from 1927 to 1963 have a mean of 81,000 cfs and a standard deviation of 22,800. Estimate the 100-year flood.

As, calculated below, Q100 = 148,000 cfs

m <- 81000 s <- 22800 p <- 0.01 Kt <- FF_LogNormal(81000, 22800, p) #2.943 (Q100 <- m + Kt * s) #[1] 148221.3

If flood data are log-normally distributed, that means the logarithms of the flood data are normally distributed. This suggests there are two ways of calculating the flood quantiles. We can use the data as-is along with the log-normal frequency factor (as in the above example), or take the logs of the data and use the frequency factor from the normal distribution.

Continuing with the example from Kite. The mean and standard deviation of the logarithms of the 37 events from the Saint John River are 11.263 and 0.284 (in cfs units).

The frequency factor for the 100-year flood, based on the normal distribution, will be 2.326 so the 100-year flood estimate is 150,800 cfs. Similar to the previous example but not exactly the same.

m.log <- 11.263 s.log <- 0.284 Kt <- qnorm(1 - 0.01) #2.326348 (Q100 <- exp(m.log + Kt*s.log)) #[1] 150795.9

Lets repeat this analysis using some Australian data. An annual flood series for the Hunter River at Singleton is available here.

The two estimates for the 100-year flood are 10,500 cumec using data as-is and 13,800 cumec when calculating in the log domain.

# Hunter River at Singleton library(repmis) my.url <- 'https://dl.dropboxusercontent.com/u/10963448/Singleton.csv' singleton <- source_data(my.url) str(singleton) m <- mean(singleton$`Peak (cumec)`) # 1401.7 s <- sd(singleton$`Peak (cumec)`) # 2312.9 Kt <- FF_LogNormal(m, s, 0.01) # 3.917 (Q100 <- m + Kt * s) # 10460.5 m.log <- mean(log(singleton$`Peak (cumec)`)) # 6.425 s.log <- sd(log(singleton$`Peak (cumec)`)) # 1.336 Kt <- qnorm(1 - 0.01) # 2.326 (Q100 <- exp(m.log + Kt*s.log)) # 13818.9

Kuczera (1999) derives a frequency factor for the log-normal distribution which takes account of the uncertainty in the parameters – the mean and standard deviation. These parameters must be estimated from the flood data. Assuming nothing is known about these parameters other that what we learn from the flood measurements (i.e. the Bayesian prior is noninformative), the frequency factor is:

Using this frequency factor will result in a more conservative estimate of flood quantiles. As the sample size increases the the Bayesian frequency factor will approach the frequency factor based on the normal distribution.

An R function to calculate this Bayesian log-normal frequency factor is:

# Frequency factor for the log-normal distribution # n - number of data points # p - exceedance probability FF_LogNormal_Bayes <- function(n, p) { qt( 1-p, n-1) * sqrt(1 + 1/n) }

Calculate the Bayesian estimate for the 100-year flood quantile using the data for the Hunter River at Singleton.

Calculations are below. The estimate is 17,350 cumecs.

library(repmis) my.url <- 'https://dl.dropboxusercontent.com/u/10963448/Singleton.csv' singleton <- source_data(my.url) m.log <- mean(log(singleton$`Peak (cumec)`)) # 6.425 s.log <- sd(log(singleton$`Peak (cumec)`)) # 1.336 Kt <- FF_LogNormal_Bayes(nrow(singleton), 0.01) # 2.4966 (Q100 <- exp(m.log + Kt*s.log)) # 17348

So we have three flood quantile estimators for log-normally distributed data:

- Take logs and use the frequency factor from the normal distribution
- Use data as-as and calculate the frequency factor using equation 2.
- Take logs and use the Bayesian frequency factor.

If the data set is large, all the results are the same.

set.seed(2016) my.flood <- rlnorm(1e6, 6, 1) # generate 1 flood values from a log-normal distribution. # True value exp(6 + 1*qnorm(1 - 0.01)) # 4131.302 # Direct calculation of quantile quantile(my.flood, probs = 0.99, type = 8 ) # 4114.213 # Taking logs and using normal distribution frequency factor Q100.log <- mean(log(my.flood)) + sd(log(my.flood))*qnorm(1 - 0.01) exp(Q100.log) # 4130.316 # Use frequency factor from equation 2 Q100 <- mean(my.flood) + sd(my.flood) * FF_LogNormal(mean(my.flood), sd(my.flood), 0.01) Q100 # 4127.146 # Bayes frequency factor Q100.Bayes <- mean(log(my.flood)) + sd(log(my.flood))*FF_LogNormal_Bayes(length(my.flood), 0.01) exp(Q100.Bayes) #4130.336

For small datasets, the estimates vary substantially.

First, let’s make a function that simulations 30 years of log-normal flood peaks and calculates the 100-year quantiles.

Test_f <- function(i, p) { # i = dummy variable so the function can be included in a loop # p = exceedance probability my.flood <- rlnorm(30, 6, 1) # Generate 30 years of flood data Q100.normal <- mean(log(my.flood)) + sd(log(my.flood))*qnorm(1 - p) Q100.eq2 <- mean(my.flood) + sd(my.flood) * FF_LogNormal(mean(my.flood), sd(my.flood), p) Q100.Bayes <- mean(log(my.flood)) + sd(log(my.flood))*FF_LogNormal_Bayes(length(my.flood), p) data.frame(Q100.normal = exp(Q100.normal), Q100.eq2 = Q100.eq2, Q100.Bayes = exp(Q100.Bayes)) }

Now, we’ll call this multiple times and compare the average quantiles for the three methods with the true quantile.

set.seed(5) out <- lapply(1:10000, Test_f, p = 0.01) out.df <- do.call(rbind, out) colMeans(out.df) Q100.normal Q100.eq2 Q100.Bayes 4334.727 3678.353 5204.641 # True quantile 4131

So, for for this data set, on average, the quantile based on taking the logs and using the frequency factor from the normal distribution is about right. The quantile based on equation 2 is too low, and the quantile using the Bayesian frequency factor is too high.

In another post, we’ll look at quantifying the uncertainty in quantile estimates.

Kite, G. W. (2004) Frequency and risk analysis in hydrology. Water Resources Publications, LLC.

]]>