Wind energy physics and resource assessment with Python
Understanding the distribution of wind speed and direction, and harnessing the wind energy potential
It is no secret that Variable Renewable Energy (VRE) sources such as solar and wind energy are the crucial pieces to solve the puzzle of the global energy transition. While these energy sources are non-exhaustive and produce electricity at no fuel costs, the main challenges associated with them currently are their intermittency and uncertainty. The sun does not shine all the time, and the wind does not blow all the time. Understanding the physics of these energy resources is the first step to harnessing their vast potential. In this article, I am going to discuss the physics of wind energy and the resource potential that can be tapped out of this energy resource. I am going to use Python for this purpose.
Letβs get started.
Data
Netherlands is the windiest country I have lived in so far. This could be attributed to the geographic location of the country and its proximity to the Northern Sea. For this article, I am considering a beautiful student town in the Netherlands called Wageningen to assess the wind energy potential. Hourly wind speed and direction data for 2020 at 50 m height for the selected location is obtained from an open-source database maintained by NASAβs Prediction of Worldwide Energy Resource (POWER) project (NASA, 2022).
As shown in the plot below, hourly wind speed in Wageningen in 2020 varied between 0 and 25 m/s. The median wind speed was 6.98 m/s. And the average wind speed was 7.22 m/s.
I wanted to check how the wind speed differed according to the months of the year more closely. Therefore, I plotted the monthly wind speed profile in individual subplots as shown below. I noticed that the wind speed is higher in the winter months as compared to other seasons. I also observed some spikes in December, January, and February, which resemble instances of extreme wind speeds.
Weibull Distribution
When the wind speed is measured throughout the year, it is noticed that in most areas strong gale winds are rare, while moderate and fresh winds are quite common (Danish Wind Industry Association, 2003).
If we sort the hourly wind speed throughout the year of any location in ascending order, then we get a shape which is referred to as Weibull distribution in the language of statistics. This is the type of distribution in which the curve is basically skewed towards the right. The formula of the Weibull distribution is shown below:
The probability density function of wind speed of a certain class is dependent upon two main parameters namely, scaling parameter and shape parameter. The shape parameter determines the shape of the curve and varies between 1 and 3, depending on the variability of wind speed in a region in a given time frame.
With the provided data for 2020, I obtained the shape parameter and the scaling parameter of the wind speed at Wageningen, Netherlands as 2.23 and 8.15 m/s respectively using
params = stats.weibull_min.fit(data,
floc = 0, #Fix the location at zero
scale = 2 #set 1st scale parameter)
I wanted to check what the wind speed profile would look like for different values of the shape parameter. Therefore, I constructed different curves using the scipy.stats.weibull_min.pdf()function for speed range between 0 and 25 m/s and passed the parameters to it.
I noticed that the wind speed distribution curve is shorter but broader with a lower value of shape parameter (here 1.5) as depicted by the blue curve. This resembles more variable winds. And the wind speed distribution curve is taller but narrower with a higher value of shape parameter (here 3) as depicted by the red curve. This represents more constant winds with speeds more concentrated between 0 and 15 m/s.
Next, I plotted the wind speed data for Wageningen, the Netherlands for 2020 using the histplot function of the seaborn library as shown. The kernel density estimate to smooth the distribution is set as True and the number of bins is set as 26 for each speed class between 0 and 25 m/s.
sns.histplot(data = df, x = df.Speed, kde = True, bins = 26)
I observed that the wind speed between 4 and 10 m/s classes have higher frequencies with each speed class having more than 600 hours in a year as compared to other speed classes.
Next, I plotted the theoretical and observed wind speed distributions.
Both the theoretical and observed distribution curves demonstrate a similar pattern. However, the theoretical frequency curve is smoother than the observed frequency.
The Weibull distribution function is important in assessing the wind energy potential, which I am going to discuss further in the Power Curve section.
Wind Rose Diagram
The wind rose plot shows the distribution of wind speed and direction together. To construct the wind rose plot, I used a Python package called windrose. The code used is as follows:
from windrose import WindroseAxes
ax = WindroseAxes.from_ax()
ax.bar(df.Direction,
df.Speed,
normed=True, #get % of number of hours
opening= 0.8, #width of bars
edgecolor='white')
ax.set_legend(loc = "best")
plt.title(f"Wind rose diagram for {place}")
plt.show()
The wind rose plot above shows that the wind was most prevalent from the southwest direction in Wageningen in 2020. This gives the impression of the direction wind turbines face mostly to tap in maximum wind energy potential. The length of the spoke around the circle shows the frequency of wind speed (here in terms of % since normed is set to True). The dominant blue and cyan colors in the spoke shows that the wind speed of 5β10 m/s class and 10β15 m/s class were the most frequent in 2020.
It is also possible to overlay the wind rose plot over the map of the region by creating a child inset Axes within the parent Axes and plotting the wind rose plot on inset Axes. This gives the sense of how the wind profile is distributed based on the geographical terrain of the location.
Power Curve
The power curve of a wind turbine is a graph that depicts how much electrical power output is produced by a wind turbine at different wind speeds. These curves are found by field measurements, where the wind speed reading from a device called an anemometer (which is placed on a mast at a reasonable distance to the wind turbine) is read and plotted against the electrical power output from the turbine.
For this article, I consider the Enercon E53/800 wind turbine as its hub height is also 50 m, which is the same height as the wind speed data. The power curve data is obtained from Wind Turbine Library (Open Energy Platform, 2019).
The wind turbine requires minimum wind speed to start rotating, known as start-up speed. Once the wind turbine starts rotating, it starts generating electricity only when the wind speed crosses a threshold level, known as cut-in speed. For the given turbine, the cut-in speed is 3 m/s. The power output of the given wind turbine increases steadily from 3 m/s until it reaches 14 m/s (rated speed). From 14 m/s onward, the wind turbine starts to produce its maximum power output (rated power), which is 810 kW in this case.
As the wind speed increases, the blades of the wind turbine spins faster. However, wind turbines are designed to stop operating beyond a certain speed in order to prevent damage to the blades. This speed is referred to as the cut-out speed, which is 25 m/s in this case. As the wind speed drops back down below the cut-out speed, the turbine can be allowed to restart and generate electricity.
To calculate the energy yield of the given wind turbine, the power output at a given wind speed class needs to be multiplied with its corresponding frequency (in terms of number of hours). The total energy yield with the given wind turbine of 810 kW rated power for the given wind condition in Wageningen, Netherlands in 2020 amounted to 2631078 kWh or 2631 MWh. In a hypothetical setting, if the given wind turbine operated at rated speed every hour through the year, it would have produced 7115 kWh. Therefore, the capacity factor of the given wind turbine in the given setting is 37% (the ratio of the previous two numbers).
Conclusion
While wind is a key energy resource to contribute to meeting the increasing global energy needs by means of inexpensive and clean electricity, there are several challenges associated with it β one of the main challenges being its intermittency. However, understanding the physics and concept of resource assessment is the first step in harnessing the vast potential of any energy resource.
In this article, I discussed the nature of the distribution of the wind speed by means of the Weibull distribution curve, analysing the simultaneous distribution of wind speed and direction with the wind rose plot, and assessing the energy potential that can be harnessed using the power curve of the wind turbine.
The implementation of this article in Python is available in jupyter notebook in this GitHub repository. Thank you for reading!
References
Danish Wind Industry Association (2003). Describing wind variations: Weibull Distribution.
National Aeronautics and Space Administration (2022). Prediction of Worldwide Energy Resources (POWER) project dataviewer.
Open Energy Platform (2019). Wind Turbine Library.
Share This Article
Towards Data Science is a community publication. Submit your insights to reach our global audience and earn through the TDS Author Payment Program.
Write for TDS