Modeling Offshore Wind Potential: OPG’s Toronto Islands Proposal
January 20XX
wind energy
renewable energy
data visualization
data analysis
simulation
energy modeling
Lake Ontario
Toronto Islands
turbine feasibility
air density
weather data
power generation
R (Programming Language)
Author
A. Srikanth
Published
August 29, 2025
Project Spotlight
Important
The work was originally implemented in Python and adapted for R.
Context
Here’s the setup: imagine 49 wind turbines arrayed in a 7-by-7 grid in Lake Ontario, just south of the Toronto Islands. I worked with a synthetic January weather record data set to drive the model and kept the turbine parameters grounded in utility-scale specs for our client, Ontario Power Generation. The weather is made up; the physics and unit handling are not. The aim is simple – estimate plausible output for a full array in winter and see how wind variability shows up in the numbers.
How much power could these turbines generate under typical January conditions?
How does changing wind speed affect output?
How do assumptions about the turbine itself (e.g., its limits and maximum capacity) affect the total?
Data Sources
The dataset included hourly values for wind speed, temperature, and air pressure. I also added turbine characteristics like cut-in speed (i.e., the minimum wind required to start turning), cut-out speed (i.e., the maximum safe wind before shutting down), and rated capacity (i.e., the maximum power the turbine can produce). Together, these formed the backbone of the calculations.
Data Preparation
The raw numbers weren’t in the right form to plug straight into equations. First, I calculated air density for each hour using temperature and pressure. Denser air carries more energy. Then I converted wind speeds from kilometres per hour (km/h) to metres per second (m/s). That step is critical because the turbine power formula uses SI units – the International System of Units common in science and engineering (metres, kilograms, seconds, etc.) – to keep calculations consistent.
The scatterplot of air density versus temperature (above) shows the expected trend: colder air is denser, and as temperatures rise, density drops.
Methodology
For every hour of data, I applied the turbine power equation. If the wind was too weak (below cut-in) or too strong (above cut-out), the power was set to zero. When the wind was in range, power increased with the cube of wind speed but was capped once it hit the turbine’s rated capacity. The outputs were calculated in watts, then scaled up to megawatts for clarity.
\[
P(V)=
\begin{cases}
0, & V < V_{ci} \\
\min\!\left(\tfrac{1}{2}\,\rho\,A\,C_p\,V^3,\; P_{\text{rated}}\right), & V_{ci} \le V \le V_{co} \\
0, & V > V_{co}
\end{cases}
\]
Note
\(V\) — wind speed (\(\mathrm{m\,s^{-1}}\))
\(\rho\) — air density (\(\mathrm{kg\,m^{-3}}\))
\(A\) — rotor-swept area (\(\mathrm{m^{2}}\))
\(C_p\) — power coefficient
\(V_{ci}, V_{co}\) — cut-in and cut-out speeds
\(P_{\mathrm{rated}}\) — turbine nameplate power
Analysis
Looking at the hourly results, you can see how much variability comes from wind alone. A calm day contributes almost nothing, while a windy spell produces spikes of several thousand megawatt-hours across the farm. By multiplying one turbine’s output by 49, the project captured the effect of running a full array instead of a single unit.
The bar-and-line chart shows this relationship in action. Daily energy production (bars) rises and falls alongside the wind speed trend (line). It’s not a groundbreaking observation—higher wind means more power—but it’s still satisfying to see the data confirm the intuition. In total, the farm would have produced about 43,078 MWh in January, enough to power thousands of homes for a month!
wx_power_all <- wx_power %>%mutate(`Power_All_Turbines_MW`= (`Power (W)`*49) /1e6 )total_mwh <-sum(wx_power_all$Power_All_Turbines_MW, na.rm =TRUE)cat(sprintf("Total energy produced by the windfarm in January: %.2f MWh\n", total_mwh))
Total energy produced by the windfarm in January: 43077.82 MWh
The results underline two points. First, wind is highly variable, even within a single month, and that variability drives power output. Second, scaling up to dozens of turbines smooths out some of that variability, producing a meaningful and steady supply over time.
If this were a real feasibility study, the next steps would involve testing across multiple months or years, adding turbine placement effects, and layering in grid integration considerations. Even with a single month of simulated data, the exercise shows how basic physics, weather data, and engineering limits combine to give a picture of what a wind project might deliver.