Simulating climate change impacts on run-of-river hydropower potential

This repo contains basic Python code for estimating the potential impacts of climate change on Scotland's run-of-river hydropower potential. The code makes use of the following publically available datasets:

  1. Future Flows catchment level summaries

    The Future Flows (FF) project used gridded output from the Met Office's HadRM3 Regional Climate Model (RCM) to estimate changing river flows for around 280 catchments across the UK. 11 different simulations from the RCM (all based on A1B emissions) were first bias-corrected and downscaled to 1 km resolution. These simulations were then used to drive up to three hydrological models in each catchment, resulting in between 11 and 33 flow time series per site. The simulations run from 1951 to 2098 and the range of output gives a broad indication of the uncertainty in flows under the assumptions of the medium (A1B) emissions scenario and the HadRM3 climate model.

  2. Historic flow data from the National River Flow Archive (NRFA)

    Observed data for some of the FF catchments can be downloaded from the NFRA website. A summary of the FF sites and whether observed data is easily available is given in NRFA_FF_Stations.csv.

The NRFA observed datasets provide an important check on the quality of the FF output. For many catchments, the FF simulations for historic periods are not a close match for the observed data, suggesting they are not suitable for investigating power generation potential. In catchments where the FF model performance is better, there may be some justification for using the data to simulate hydropower, although this still involves making assumptions of e.g. stationarity, which may not be valid.

1. Estimating hydropower potential

Many guidance documents recommend that preliminary hydropower assessments are based on Flow Duration Curves (FDCs) derived from daily flow data. The code here assumes a basic, single turbine design and ignores technical details such as choice of turbine type etc. This is because, at regional scales, there is still large uncertainty in both the magnitude and direction of future climate change, so a detailed consideration of plant design specifications is unwarranted. Instead, the calculations use basic energy considerations and plant efficiency factors to give a broad indication of the possible scale of future change.

Given a flow time series with daily resolution, the code estimates hydropower potential in the following way:

  1. Calculate the FDC using established methods.

  2. Assume the site has a fixed (user-specified) head, $H$, and that turbine size is determined by selecting a particular exceedance percentage, $P_{opt}$, from the FDC. Note that $P_{opt}$ broadly represents the proportion of the time the turbine is expected to run at full capacity: smaller values of $P_{opt}$ indicate higher design flows and bigger turbines, running at full capacity for a smaller fraction of the time.

    The choice of $P_{opt}$ is not obvious and has a large effect on the scheme power output. The code therefore considers a range of possible values between the $5th$ and $95th$ flow percentiles.

  3. Using $P_{opt}$ and the FDC, read off the associated flow rate ($Q_{opt}$) and estimate the turbine capacity using the equation:

    $$C = \rho g Q H \frac{E}{100}$$

    where $C$ is the turbine capacity ($W$), $\rho$ is the density of water ($kg/m^3$), $Q$ is the flow rate ($m^3/s$), $H$ is the head ($m$) and $E$ is the overall plant efficiency factor (%).

  4. At flows greater than or equal to $Q_{opt}$, the turbine will function at its rated peak capacity, $C$. At flows below this, the turbine will function at reduced output down to some lower threshold, $Q_{min}$, where power generation stops. $Q_{min}$, is usually approximated as a percentage (e.g. 10%) of $Q_{opt}$.

  5. Most schemes have a “hands-off-flow” (HOF) which must be left in the river at all times and which therefore cannot be diverted into a penstock. The Scottish Environmental Protection Agency (SEPA) sets rules for the HOF that are quite complicated, but as a first approximation it’s reasonable to set the HOF at around the 90-95th exceedance percentile.

  6. The HOF must always be left in the stream, so power generation cannot begin until the flow rate in the river reaches ($HOF + Q_{min}$). Power output will then increase until the flow reaches ($HOF + Q_{opt}$), after which the turbine operates at maximum capacity and any additional flow bypasses the installation.

  7. The area under a daily FDC (integrated along the x-axis from 0 to 1; if using percentages divide by 100) gives the mean daily flow. On the figure below, the grey shaded area represents flows not available to the scheme due to environmental regulations; the white areas are flows either too low or too high to be used effectively; and the blue shaded area is the equivalent of the mean daily flow actually available to the scheme, $Q_{avail}$, subject to design specifications (i.e. $Q_{opt}$) and licensing conditions. The predicted power output, $C_{act}$, can therefore be estimated from the FDC by substituting $Q_{avail}$ into the equation given in step 3.



  8. In addition to the above, the model includes a parameter describing the proportion of water available to the scheme for flows above the HOF. In order to maintain some natural variability in the river system, environmental regulations often require small hydro schemes to take only a percentage of the total stream flow above the HOF. In their modelling study of the Plynlimon catchment in Wales, Carless & Whitehead (2013) assumed a value of 50% for this parameter.

  9. The annual energy output from the installation can be estimated as:

    $$E = \frac{365 \times 24 \times C_{act}}{1000}$$

    where $C_{act}$ is in $W$ and $E$ is in $kWh$.

  10. The load factor for the installation can also be calculated:

    $$L = \frac{C_{act}}{C} \times 100\%$$

  11. Note there are some edge cases that need to be accounted for:

    • $P_{opt} = min(P_{opt}, P_{HOF})$

    • $(Q_{opt} + Q_{HOF})$ must be less than the maximum flow recorded in the dataset.

The code provided performs the calculations listed above for all the observed and simulated datasets in each catchment. Additional options are provided for:

  • Scaling the FF data according to catchment area,
  • Selecting different baseline and future time periods (within the range 1951 to 2098), and
  • Considering either annual or seasonal power generation.

2. User defined options

The user is required to supply the following information:

  • obs_fold. A folder containing observed data for the stations of interest downloaded from the NRFA.

  • ff_fold. A folder containing the FF timeseries for the catchment of interest. Note that each catchment may be associated with up to three files (=33 time series), depending on the number of hydrological models applied by the FF team for each site.

  • ff_stns_csv. A file providing summary station data e.g. NRFA_FF_Stations.csv

  • out_fold. A folder in which to store output PDFs

  • base_st and base_end. Time periods to define the baseline against which future simulations will be compared (minimum 1951; maximum 2098).

  • fut_st and fut_end. Time periods to define the future time period of interest (minimum 1951; maximum 2098).

  • head. The plant "head" in $m$.

  • catch_area. The catchment area for the proposed scheme. The code uses simple area-scaling to estimate flows for this area based on the simulated dataset and the overall catchment area. Such approximations will be very rough, especially for large, heterogeneous catchments.

  • plant_eff_factor. The overall efficiency (%) of the plant (turbine and generator). As a guide, HEC says ~85%, while british-hydro.org says 60% to 80%.

  • turb_min_pct. Percentage of the optimum turbine capacity below which generation stops.

  • hof_pct. Hands off flow percentile.

  • pct_over_hof. Percentage of flow above the HOF available to plant.

  • scale_area. Whether to scale flows based on catch_area.

  • base_cap_interest. If you're interested in a turbine with a particular capacity, enter it here (in kW). The script will then print the annual and seasonal energy output and load factors for this turbine.

3. Output

For each site, the script produces a 5-page PDF, saved to out_fold. Each page includes information for one season, plus a fifth page showing overall annual changes. An example of the summer output for the Allan Water at Kinbuck is shown below.

The top half of the page shows FDCs based on the observed and FF datasets. The blue dashed line shows the observed FDC between 1961 and 1990. The solid black line shows the median of the FF simulations for the same period, with grey shading to represent the modelled 90% uncertainty interval. The FF project only applied 1 hydrological model in this catchment, so this interval reflects uncertianty in the 11 different climate simulations, but not the parameterisation of the hydrological system itself.

Comparing the solid black and dashed blue lines suggests the FF model does a reasonable job of simulating high flows, but consistently overestimates low flows. The results for this site must therefore be interpreted with caution.

The solid red line shows the median FF simulation for the future period (in this case 2041 to 2070), with red shading again showing the 90% climate uncertainty interval. Relative to the FF baseline, it is clear that flows are expected to decrease, but the range of uncertainty is also substantially broader.

The lower half of each page shows the energy output and load factors expected for turbines of different capacities. These plots can be used to investigate how power output from a simple turbine of a given size might change in the future (both annually and seasonally), as well as indicating whether a different turbine specification may become more appropriate as the flow regime changes. Previous literature, for example, has suggested developers consider over-sizing their turbines in order to take advantage of increases in autumn and winter flows.

4. Evaluation

As a very simple evaluation, the code has been tested against data from the well-studied Plynlimon catchment in the upper Severn Valley. Carless & Whitehead (2013) undertook a site-specific study of the hydropower potential of this catchment, which provides a good opportunity to test the broader methodology presented here. Using a baseline period of 1985 to 2008, Carless & Whitehead report a mean daily flow $0.58 \; m^3/s$ and identify a $99 \; kW$ turbine as being appropriate for the site. They predict $282 \; MWh$ of energy per year with an average load factor of $33\%$. Looking at their Fig. 8, the seasonal breakdown is something like:

Season Energy output (MWh)
Spring 55
Summer 48
Autumn 84
Winter 95
Annual 282

Running the code here for this location with approximately the same assumptions as Carless and Whitehead, I estimate a $99 \; kW$ turbine would be a reasonable choice and that it would produce the following outputs:

Season Energy output (MWh) Load factor(%)
Spring 54 26
Summer 44 20
Autumn 78 36
Winter 90 42
Annual 266 31

These results seem very close to those reported by the more detailed study, especially considering that Carless and Whitehead used monthly FDCs, which have a tendency to overestimate power generation potential. The advantage of the code here is that it can loop over the entire FF dataset, producing similar output for nearly 280 sites UK wide.

The PDF output for Plynlimon suggests that:

  • For the observed baseline, any turbine capacity between about $90$ and $130 \; kW$ would be a reasonable choice, giving annual capacity factors of between about $25\%$ and $35\%$.

  • Under 2050s climate, a $99 \; kW$ turbine would likely generate marginally less energy annually than it would under current conditions ($256 \; MWh$ for the future versus $264 \; MWh$ for the FF baseline), but this difference is negligible.

  • During the spring, and particularly during the summer, the 2050s energy output would be significantly reduced compared to the baseline. During the summer, a $99 \; kW$ turbine would rarely – if ever – be operating at full capacity and summer energy output would likely drop from around $40 - 45 \; MWh$ to $20 - 30 \; MWh$. Load factors during this period would likely fall below $20\%$.

  • Energy output in the autumn may also be slightly reduced, although not by much. For a $99 \; kW$ turbine, the FF baseline gives $83 \; MWh$ and a load factor of $38\%$, compared to $78 \; MWh$ and $36\%$ for the future scenario. The FDCs suggest that peak flows may increase during this season, but that medium to low flows will decrease too i.e. overall autumn flows become more variable. There is potential for larger turbines (e.g. up to $200 \; kW$) to take advantage of these higher flows, but as these high flow events are still quite rare, the associated capacity factors are very low and such turbines would probably not be economically feasible.

  • During the winter there is a general increase in flows at all percentiles of the FDC, meaning that more energy is available for power generation. The data suggest a $99 \; kW$ turbine installed under baseline conditions would likely produce slightly more energy in the future ($83 \; MWh$ and $39\%$ for the FF baseline versus $91 \; MWh$ and $43\%$ for the future). These gains become larger for larger turbines: for example, a $160 \; kW$ installation produces $98 \; MWh$ at $29\%$ capacity under the FF baseline, but $110 \; MWh$ at $32\%$ in the 2050s. These winter gains go some way to offsetting the summer losses, which is why the annual change is fairly small.

  • Overall, it seems likely that power generation potential will not change much at Plynlimon by the 2050s: in annual terms, the energy output of a turbine sized using historic data is likely to remain approximately the same in the future. It is possible that the optimum turbine size will increase marginally under future conditions, but the does not make a clear case for oversizing turbines, as suggested by Carless and Whitehead. Oversizing does result in slightly larger gains in winter production, and also very marginally reduces the losses during the autumn. However, spring and summer production suffers even more and load factors during these months with big turbines would likely be below $20\%$. It therefore seems unlikely that oversizing turbines would be cost effective in this case, given the additional equipment and installations costs.