Emissions savings from wind power
Recently, economist Colm McCarthy noted that:
Wind generators can be relied on to produce power only about one hour in three over a year, and those productive hours are unpredictable. So conventional capacity has to be kept in reserve for the periods when the wind does not blow. These stations will be utilised less than optimally and this is a hidden cost of wind generation.
In addition to inefficient use of capital, critics have argued that wind generation has a potential cost in terms of CO2 emissions. When the wind is blowing, priority is given to wind generation over conventional capacity. However an idling thermal plant is like a car crawling along in traffic – not doing very much but still burning fuel. This may cause thermal plant to burn more fuel per unit energy generated than would otherwise be the case.
Is there any direct evidence of reduced CO2 savings when wind generation is high? Surprisingly, the answer to this question is yes.

The scatterplot shows the relationship between total instantaneous CO2 emissions and instantaneous wind generation using data from the Irish grid operator Eirgrid. The data cover the period from 1-Nov-2010 to 30-Aug-2011 at 15 minute intervals (~ 29,000 data points). The blue line is a local regression (loess) fit*.
As expected, wind generation does reduce CO2 emissions. A linear regression fit suggests an emissions saving ~ -0.38tCO2/MWh.  However, the real world relationship between wind generation and emissions is clearly non-linear. At wind generation ~600MW, fuel savings begin to slow. Above ~800MW, they cease altogether. Above 1000MW, emissions increase again.
Heat rate curve
Carbon intensity is CO2 emitted per unit energy generated. To see why emissions savings decrease as wind generation increases, we need to look at the carbon intensity of thermal generation. Thermal generation is extracted from the Eirgrid data as the difference between demand(MW) and wind generation(MW) (assumes no power is dumped). The graph shows the carbon intensity of thermal generation (tCO2/MWh) versus thermal generation (MW) for the period Nov 2010 – Aug 2011.
There is an optimum point on the curve around 3000MW. 3000MW is close to the average electricity demand. In the absence of wind generation, thermal generation fluctuates in line with demand around the the optimum point, a design feature which ensures maximum efficiency . Unfortunately, high wind generation forces thermal plant to operate far to the left of the optimal point on the “heat rate curve”.
*The loess fit has span parameter 1.0. A non-parametric regression curve is shown in grey.
Another plot …
Wind penetration is defined as instantaneous wind generation as a % of instantaneous demand.
This graph of thermal carbon intensity(tCO2/MWh) vs wind penetration(%) tells the same story.
August 31, 2011
Tags: Wind Energy Posted in: Wind Energy
27 Comments
Heat Wave
The graphic shows the temperature anomaly in the US for the month of July (actually July 1 – 27). Parts of Kansas/Oklahoma experienced temperatures a full 4°C higher than normal over the month, while there was a cool anomaly in the Pacific Northwest.
The map uses an equal area projection (Albers) with horizontal and vertical scales in meters.
R aficionados will recognize use of the ggplot2 R package. We are experimenting with ggplot2 for weather map-making at Biospherica™ .
Data from CFSv2 Analysis.
ggplot2 : Elegant Graphics for Data Analysis, Hadley Wickham
Code
Daily 2m temperature maps are available from operational CFSv2 here (tmp2m.l.gdas.201107.grib2). These correspond to initial conditions used by the CFSv2. To find a mean temperature for July, an average was taken over 4xdaily 6h forecast records from this grib2 file. There are probably many good ways to do this. One way is to first interpolate from gaussian to latlon grid, then use the wgrib2 -netcdf to produce files which can be read directly by R’s raster package. To get a temperature anomaly the monthly 2m temperature climatology needs to be subtracted. This is available here (flxf06.cfsr.fclm.m07.1982.2010.grb2).
The temperature anomaly raster map can be projected from latlon to another PROJ4 map projection using raster::projectRaster. The resulting July global temperature anomaly raster object is called tmp2m.ras. USA country maps (level 0 & 1) are from gadm. These are reprojected and called USA.poly & USA.poly1. Finally, with tmp2m.ras, USA.poly and USA.poly1 objects in R memory, ggplot2 was used to produce the map as follows:
library(raster)
library(RColorBrewer)
library(ggplot2)
#crop tmp2m.ras
x.min <- bbox(USA.poly)[1,1]
x.max <- bbox(USA.poly)[1,2]
y.min <- bbox(USA.poly)[2,1]
y.max <- bbox(USA.poly)[2,2]
tmp2m.ras <- crop(tmp2m.ras, extent(x.min,x.max,y.min,y.max))
#mask tmp2m.grd using country outline
USA.ras <- rasterize(USA.poly, tmp2m.grd)
tmp2m.ras <- mask(tmp2m.ras,USA.ras)
#convert data to dataframe for ggplot
tmp2m.ps <- rasterToPoints(tmp2m.ras)
df <- data.frame(tmp2m.ps)
colnames(df) <- c("easting","northing","tmp2m")
USA.poly <- fortify(USA.poly,region="ISO")
USA.poly1 <- fortify(USA.poly1,region="ID_1")
#now the pretty stuff
g <- ggplot(df,aes(x=easting,y=northing)) + scale_x_continuous(limits=c(x.min,x.max)) + scale_y_continuous(limits=c(y.min,y.max))
g <- g+geom_tile(aes(fill=tmp2m),alpha=0.6)+scale_fill_gradientn(name=expression(paste(degree,"C",sep="")),colours=rev(brewer.pal(9,"RdYlBu")))
g <- g+coord_equal()
g <- g+stat_contour(aes(z=tmp2m,colour=..level..),size=0.5, bins=4)+scale_colour_gradient(name=expression(paste(degree,"C",sep="")))
#country outline
g <- g + geom_path(data=US.poly, aes(x=long,y=lat,group=group), colour="grey40", alpha=1.0,size=0.5)
#state outline
g <- g + geom_path(data=USA.poly1, aes(x=long,y=lat,group=group), colour="grey80", alpha=1.0,size=0.3)
g <- g + opts(title = "USA Temperature July 2011")
print(g)
July 29, 2011
Posted in: Climate
2 Comments




