Flood Frequency Analysis using RWater

Adnan Rajib, Purdue University-Main Campus
Author Profile
Initial Publication Date: December 14, 2016


Flood Frequency Analysis involves large amount of calculation and data processing, requiring significant level of understanding of the process and expertise. This module introduces RWater - an interactive online platform for automatic data extraction and interpretation of hydrological processes. This module is designed in a way that, students, after completion, will be able to perform flood frequency analysis using actual USGS recorded data simply by writing/modifying an existing R script in the RWater interface without spending much time on data downloading and pre-processing. An additional advantage of using RWater in Flood Frequency Analysis is that it can be applied to rapid large scale assessments in a limited classroom environment.

Conceptual Outcomes

Using the visualization interface of RWater, students will be able to realize the concepts of return period and probability of occurrence and calculate them for actual stream locations

Practical Outcomes

  • Students can identify how the return period of a specific magnitude flood at the same location gets altered in course of time as a result of climate and land use change
  • Students will be able to understand the spatial variability of flood frequency within a region by performing the analysis in multiple locations in a very short time
  • By completing this module, students expose themselves to soft programming with R language, which could be helpful in developing their basic programming skills at a very early stage

Time Required

45 minutes for the first streamflow gauge station that a student might use in order to become familiar with the RWater interface and the associated R script. For further exercise, time required to perform flood frequency analysis is 5-10 minutes per station.


First, please read this instruction manual to know how to access and use the RWater interface: Becoming Familiar with RWater Interface (Acrobat (PDF) 790kB Dec11 16)

Before you start, perform the following steps:

  1. Set your "working directory" in RWater (shown in the instruction manual)
  2. Download this script (.R file) in your computer: R code for flood frequency analysis in RWater (Text File 4kB Dec12 16)
  3. Load the script in your RWater working directory (created in step 1 above)

In the following example, you will see how flood frequency analysis can be performed for a watershed in Chicago area (USGS 05551700: Blackberry Creek). For this particular gauge stations, your task is to perform flood frequency analysis for past 20 years (1971-01-01 to 1990-12-31), then for the recent 20 years (1991-01-01 to 2010-12-31). Finally, you will be able to generate two flood frequency plots.

You DO NOT have to write a large amount of code in this exercise! You just have to modify the existing code (which you have just loaded; step 2-3 above). Once you load the script in RWater, you can see some line numbers in the left panel of the interface. You are required to modify in the following lines:

Line 16: mysite<-'XXXX'....replace XXXX with the USGS station ID (example: mysite<-' 05551700 ')

Line 22-23: change start date and end date to 1971-01-01 and 1990-12-31, respectively.

Line 25-26: change start date and end date to 1991-01-01 and 2010-12-31, respectively.

Line 39: Q = XXXX....replace XXXX with bb71_90$peak_va

Line 40: graphlab = "Your Duration"....change your duration to 1971-1990 inside " "

Line 72: main = paste( "XXXX,",graphlab ).....replace XXXX with the USGS station ID (example: main = paste ( "USGS 05551700,",graphlab ))

Line 84: abline(h = seq(500, floor(Qmax), 500)....change 500 to 1000 (this adjustment needs your judgment. For some stations, you may have to change 500 to 5000 as well! This is about how you want to see your Y-axis grid lines)

Line 91: Q = XXXX....replace XXXX with bb91_10$peak_va

Line 92: graphlab = "Your Duration"....change your duration to 1991-2010 inside " "

Line 124: same as Line 72

Line 136: same as Line 84

Now, select each step as shown below and run one after another. Relevant explanations associated with each step are also provided below.

You have just created two flood frequency plots for the Blackberry Creek in two different periods!

The dots inside the plot are the actual observed peak discharge values in the Blackberry Creek. The thick straight line in the middle is the calculated probability distribution. To read the graph, pick the flood value of your concern from Y axis and trace a horizontal line up to where it intersects the line of calculated probability distribution. From that point of intersection, trace a vertical line towards X axis to find out the corresponding return period. You can simply do the opposite if you want to find out the flood magnitude for a given return period. Peak discharge/ return period read from the line of calculated probability distribution can have errors due to the limited sample data used. Hence, a pair of lines (red and blue) are also plotted which denotes the confidence band, indicating 95% chance for the calculated values to lie within this limit.

Now, let's find out the return period for a flood event of 1050 cfs magnitude from the plots which you have generated. The results are as follows:

  • During 1971-1990, a flood of 1050 cfs had a return period of 4 years.
  • In the relatively recent period of 1991-2010, the same magnitude flood showed a shorter return period of only 2.4 years. Clearly, extreme flow events have become more frequent in recent times in this particular watershed.

Can you find out the return periods of a 2000 cfs flood event for both 1971-1990 and 1991-2010? Also, can you find out the approximate magnitude of a flood event that has 50 year return period?

What can you conclude about the frequency of extreme events in this watershed? What are the possible reasons for such changes in frequency?

OK! You are done!

If you are interested to perform flood frequency analysis in other USGS stations, you just need to modify the code only in 5 lines (Lines 16, 72, 84, 124, 136)!