From a recent piece by Thomas Friedman:
Here’s my prediction: Germany will be Europe’s first green, solar-powered superpower.
And here is a plot of the average power output from Germany’s solar panels in each month of 2014:
German solar output in January is less than one tenth of what it is in May, June, July or August. And winter, not summer, is when German electricity demand is at its highest.
These massive seasonal variations in solar power are matched by wild daily variations. Here is the average daily output in January and June. Does this look like a country which is about to become a solar powered superpower?
Furthermore, considerations of the extremes shows the implausibility of Germany running largely on solar power.
Germany’s average solar power output last year was 3376 MW. On the best day last year the average output was 8517 MW. On the worst day it was 81.5 MW. These peaks get the headlines. Strangely, we don’t see headlines on the day when German solar output was 1% of what it was on the record day.
So, unless Germany is tilted several degrees to the south, I can confidently predict that Thomas Friedman’s prediction is just the latest in a long line of absurd predictions about the future of energy.
Note on data
Code to produce the above plots (using R) and the data sources are given below.
require(gdata);require(ggplot2) ### German solar data available from http://www.pfbach.dk/ raw <- read.xls("2014_de_pv.xls", skip = 2) names(raw) <- c("Date", "Hour", "PV") de <- data.frame(Hour = raw$Hour, PV = raw$PV, Day = as.integer(substr(raw$Date,1,2)), Month = as.integer(substr(raw$Date, 4,5))) #### Get the monthly average mon.ave <- aggregate(de, by = list(de$Month), FUN = mean)[,3:5] gg <- ggplot(data = mon.ave,aes(Month, PV))+ geom_bar(stat = "identity")+ xlab("Month")+ ylab("Average output from solar (MW)")+ theme(legend.position = "bottom", legend.title = element_blank())+ scale_x_continuous(breaks = seq(1,12))+ theme_grey(base_size = 16) gg ### Daily average ## day.ave <- aggregate(de, by = list(de$Month, de$Day), FUN = mean)[,3:6] ## Best, worst and mean output ## meanOut <- mean(day.ave$PV) maxOut <- max(day.ave$PV) minOut <- min(day.ave$PV)