Wind Model


Renewable energy collectors such as wind turbines and solar PV panels are getting less expensive per kW of nameplate capacity.    This is often cited as a reason why renewables are easier to deploy than nuclear.

The problem is that the cost of an intermittent energy collector at nameplate capacity is not equivalent to the cost of a nuclear plant which operates 24/7 for extended periods.

To bring cost comparisons in line I asked the question

In Ontario how much storage would be required to allow wind to deliver a steady 1GW 24/7 (20% of Ontario’s nameplate wind capacity)?


The wind model contains 4 input parameters.

Inputs

storage at the starting date (2024Jan1)

24/7 steady power level (in this case 1GW)

maximum storage capacity beyond which excess wind power would be dumped

cost of suitable grid storage

The spreadsheet also computes some output parameters (some that are used in optimization).   In particular:

Outputs

overall minimum in storage over entire running total sheet; used in optimization

Total storage cost

Total TWh wind output over time period

Avg hourly MWh wind output over time period

The input parameter, max storage, is adjusted to bring this overall minimum as close to zero as possible.   In other words to allow for the 1GW 24/7 to be delivered uninterrupted for the period in question.

The starting amount in storage is used seed the previous storage amount in first cell in running total sheet described below..

 

 


This wind dataset is contained in a Google Sheets spreadsheet.

The first sheet captures the IESO hourly wind data.    IESO describes this dataset as the average of 5 minute snapshots over each hour.    In otherwords the MW reported is equal to the MWh for that hour.    This sheet contains a table with 24 hourly intervals on the columns and date starting from 2024Jan1 as the rows

 

 

Across each row the MWh is summed for a daily total.


The second sheet creates a running sum for storage based on the algorithm described below.  The assumption is that the storage is perfectly reversible.

Running storage sum = (wind data from first sheet - steady hourly output from model input + previous hourly storage)

If running total > max storage insert max storage in cell otherwise use actual running total.


The result is graphed as a plot of running total at end of each day vs date

 

The dips below the 90GWh storage line occur on days when the wind output isn’t enough to cover the 1GW 24/7 level and drawdown from storage occurs.

When the 90GW storage is full, any excess wind is dumped onto the grid.  The graph below shows the daily production of wind to the grid.   The minimum daily production is 24GWh.

 


Cost Comparisons

Our model shows that Ontario would need 90GWh of storage to produce 1GW 24/7 from its wind generation.     A graph of total cost versus unit cost is shown below.

 

Pacific Northwest National Laboratory wrote a grid storage report in 2020. Key findings are:

Storage Technology

Cost $/kWh

Pumped Storage Hydro

$262

Lithium Ion Batteries

$356

Vanadium Flow Batteries

$399

Compressed Air

$119

As a point of comparison the commercially available Tesla Powerwall for home storage costs $1000/kWh.

A new CANDU build is estimated to cost $10-15billion.    Other new nuclear builds $5-9billion.


Solar Dataset

Ontario has 438MW of grid connected solar PV.    Same issue occurs for solar as wind.   The cost of the solar PV collectors continues to decline.   However the true cost comparison with other generation should include storage to levelize the intermittency.

The question

In Ontario how much storage would be required to allow solar PV to deliver a steady 50MW 24/7 (11% of Ontario’s nameplate solar PV capacity)?

Ontario is a decent solar area with an estimated annual capability of 1GWh per MW nameplate installed.   The average hourly production from Ontario’s 438MW nameplate since 2024Jan1 until mid June is 77MW or 18%.   The total cumulative production for same period is 0.3TWh.

When the same analysis for solar PV as wind  is done the results are shown below.

 


Spreadsheet Formula

Sheet: Model

B3 - initial storage on 2024 Jan 1 (MWh)

B4 - max storage (MWh)

B5 - 24/7 steady rate (MW)

E5 - last row in wind dataset

B8 

=max(indirect(concat("Wind storage!C4:C",E5)))

B9

=MIN(indirect(concat("Wind storage!d4:d",E5)))

B10

=indirect(concat("Wind storage!A",$E$5))


Sheet: Wind IESO

Col A -  date

Row 3-end; ColB-Y - hourly MWh data from IESO

Col Z - total MWh for that day

Z3 - duplicate in Col Z to end

=sum(B3:Y3)


Sheet: Wind Storage

Col A - date

Col B - storage at end of day

=AB3 -duplicate to end col B

Col C - Maximum storage for that day

=max(E3:AB3) -duplicate to end col C

Col D - Minimum storage for that day

=min(E3:AB3) -duplicate to end col C

Col E - first hourly running total 

E3

=if(('Wind IESO'!B3-Model!$B$5+Model!B3)>Model!$B$4,Model!$B$4,'Wind IESO'!B3-Model!$B$5+Model!B3)

E4 - duplicate to end of col E

=if(('Wind IESO'!B4-Model!$B$5+B3)>Model!$B$4,Model!$B$4,'Wind IESO'!B4-Model!$B$5+B3)

F3 - duplicate to AB3 and then all rows col F-AB to end

=if(('Wind IESO'!C3-Model!$B$5+E3)>Model!$B$4,Model!$B$4,'Wind IESO'!C3-Model!$B$5+E3)


Sheet: Wind Surplus

Col A - date

Col B - storage at end of day

='Wind storage'!B3 -duplicate to end col B

Col C - surplus at end of day

=AB3 -duplicate to end col C

Col D - first hourly running total 

D3

=if(('Wind IESO'!B3-Model!$B$5+Model!$B$3)>Model!$B$4,'Wind IESO'!B3-Model!$B$5-Model!$B$4,0)

D4 - duplicate to end of col D

=if(('Wind IESO'!B4-Model!$B$5+B3)>Model!$B$4,'Wind IESO'!B4-Model!$B$5+B3-Model!$B$4,0)

E3 - duplicate to AA3 and then all rows col E-AA to end

=if(('Wind IESO'!C3-Model!$B$5+'Wind storage'!D3)>Model!$B$4,'Wind IESO'!C3-Model!$B$5+'Wind storage'!D3-Model!$B$4,0)

AB3 - duplicate to end of col AB

=sum(D3:AA3)