Are wind farms more productive at night?

Posted on Updated on

A common claim is that wind farms are more productive at night. This is a bad thing for the simple reason that we don’t consume as much electricity in the middle of the night as we do during the day.

However, the claim itself is not true in all countries. I’ll show this for six European countries: Denmark, France, Germany, Ireland, UK, and Spain.

First, let me state the obvious. Aggregated over entire countries wind farm output, contrary to some misguided claims, does not even out. The idea that “when it’s not windy in one location, it will be windy elsewhere” is just a silly green truism that has little truth to it.

The aggregated production of wind farms varies from close to 0% of rated capacity to close to 100%. Here is a figure for what happened in a single day in Britain:

britainBut what happens on the average day?

Are wind farms more productive in the middle of the night than in the middle of the day? To find this out I have calculated mean hourly output of wind farms in six EU countries. This averages over an entire year, so the result may be slightly biased due to the combination of seasonal changes in the hourly cycle and capacity additions. However, that should not change the picture that much.

Here is what it looks like for 2013:


The belief that wind farms are more productive at night clearly does not hold in most EU countries.

For example, wind farm output is at its lowest point on average at around 5 am in Britain, which is also when electricity demand is at its lowest point. The same holds in Denmark and Ireland. The only country where wind farm output is higher in the middle of the night is France and perhaps Spain.

This is only one year of data. Perhaps things vary a bit year to year. Not quite.

Here is a figure showing yearly variations in the mean hourly output. I have rescaled the figures for each year, so that the maximum is 1 in each year. This allows years to be compared and countries to be compared in a relatively apples to apples manner.


The mean daily cycle is relatively consistent across all countries. Notably, wind farm output in the UK is much flatter than most countries. Whereas, Spain and Ireland’s varies more. This variation does not necessarily make Spain or Ireland worse than Britain. The problem with wind farm output variation is that it results in wind farm production not matching demand.

Timing of the daily minimum is not consistent across countries. However, it tends to occur between 4 am and 10 am when electricity demand is relatively low.

Mismatch between wind farm output and electricity demand curves will inevitably result in curtailment of wind farm output once wind farms have expanded significantly. The above analysis does not really show how that will play out in different countries. But I should be writing a blog or two on that subject in the next couple of weeks.

Code to produce plots

R code for downloading wind farm output data and producing the plots above is given below.

################# This file calculates mean hourly wind farm output in 6 EU countries ####
### Data all comes from
### Packages needed
rm(list = ls())
### Set working directory for chucking the downloads in
options(stringsAsFactors = F)
### Chuck the countries wanted into the following
countries <- c("de", "gb", "e", "f", "eirgrid", "dk")
### Just a tracker to keep an eye on what has been downloaded
checker <- 1
country.change <- data.frame(Country = c("b", "cz", "de", "dk", "e", "eirgrid", "f", "gb", "sf"), 
                             NewName = c("Belgium", "Czech Republic", "Germany", "Denmark", "Spain", "Ireland", "France", "United Kingdom", "Finland"))
### Loop through the countries
for(yy in 2011:2013)
for(country in countries)
  ### Read wind data in
  fn <- paste0("", yy, "_", country, "_wind.xls")
  wind <- read.xls("tmp.xls", header=TRUE, skip = 2)
  ### Read load data in
  names(wind) <- c("Date", "Hour", "Wind")  
  fn <- paste0("", yy,"_", country, "_load.xls")
  data <- wind
  #### remove nas
  data <- subset(data, is.finite(Wind))
  ### Calculate the current penetration of wind power
  data.ddply <- ddply(.data = data, .(Hour), summarize, 
                      Wind = mean(Wind), Country = subset(country.change, Country == country)$NewName, Year = yy)
    country.wind <- rbind(country.wind, data.ddply) else
      country.wind <- data.ddply
    checker = checker + 1
### Plot hourly means
gg <- ggplot(subset(country.wind, Year == 2013), aes(Hour, Wind))+
  facet_wrap(~Country, scales = "free_y")+
  scale_x_continuous(breaks = seq(2, 24, 2))+
  ylab("Average wind farm output (MW)")

### Now rescale the data so that 1 = maximum hourly average in each year
country.max <- ddply(.data = country.wind, .(Country, Year), summarize, 
                    Wind.Max = max(Wind))
country.wind <- join(country.wind, country.max)
country.wind$Hourly.Rescaled <- country.wind$Wind/country.wind$Wind.Max

gg1 <- ggplot(country.wind, aes(Hour, Hourly.Rescaled, colour = factor(Year)))+
  ylab("Average hourly wind farm output (rescaled so that 1 = Yearly max)")+
  theme(legend.position = "bottom", legend.title = element_blank())+
  scale_x_continuous(breaks = seq(2, 24, 2))+