Simple Storage Reqirement Model for a 100% Renewable Energy System
There are many researches dedicated to 100% renewable energy system modelling and their models are much more sophisticated than the model presented here. Some publications in this field are:
- T. M. Clack etal., Evaluation of a proposal for reliable low-cost grid power with 100% wind, water, and solar, Proc Natl Acad Sci USA, 14, 16, (2017), www.pnas.org/cgi/doi/10.1073/pnas.1610381114
- Ziegler etal., Storage Requirements and Costs of Shaping Renewable Energy Toward Grid Decarbonization, Joule 3, 2134–2153 (2019), https://doi.org/10.1016/j.joule.2019.06.012
- Ch. Breyer, etal., On the History and Future of 100% Renewable Energy Systems Research, IEEE Access, 10, (2022), DOI: 10.1109/ACCESS.2022.3193402
- D. Bogdanov, Radical transformation pathway towards sustainable electricity via evolutionary steps, Nature Communications volume 10, Article number: 1077 (2019), https://www.nature.com/articles/s41467-019-08855-1
- O. Ruhnau, O. Qvist, Storage requirements in a 100% renewable electricity system: extreme events and inter-annual variability, Environ. Res. Lett. 17 044018, (2022), DOI 10.1088/1748-9326/ac4dc8
The model described here is intended to show the relationships between energy production, energy consumption and storage requirements to clarify a little. It is easier to understand than the models described in the literature and anyone who is interested can play with the code themselves with a little Julia programming experience.
The data used are from the site Energy-Charts API
- download power data as json from https://api.energy-charts.info/power using the REST API:
- execute: load_ise_energy_chart_data(start_year, end_year) in storage/data_energy_charts.jl the minimum start_year is 2015
- Parse downloaded json files and store date in a hdf5 file
- execute run_ise_json_to_hdf5(false, 2015, 2022) in storage/data_energy_charts.jl
Energy-Chart data used in this model are:
- Dates: UNIX timestamps are converted to Julia DateTime objects
- Load
- Sum of Wind offshore, Wind onshore and Solar
Load and renewable time series data
The real data are adapted to mimic a 100% renewable eneryg system by detrending and scaling.
Detrending is done by fitting teh data to a second order polynomial
- Load trend, polynomial fit
$L_{t} = \operatorname{polynomial_fit}(L, k)$ - Detrend
$L_{d} = \dfrac{L_{t}[n/2]}{L_{t}} ; L$
Detrended Load data
function scale_and_detrend(Load::Vector{Float64}, RP::Vector{Float64})
-
First scaling
$R_{s} = R ; \dfrac{\operatorname{mean}(L)}{\operatorname{mean}(R)}$ -
Renewables trend, polynomial fit
$R_t = \operatorname{polynomial_fit}(R_s, k)$ -
Detrend
$R_d = \dfrac{R_t[n/2]}{R_t} R_s$ -
Scale again
$R_{ds} = R_d \dfrac{\operatorname{mean}(L_d)}{\operatorname{mean}(R_d)}$ -
Diffeernce between Renewables and Laod
$\Delta P = (R_{ds} - L_d)$
Detrended and scaled renewable power data
Differences beteeen reneable power and load
Given storage capacity and an overproduction capacity factor the storage fille level is computed;
compute_storage_level(dates, Load, RP, eunit, over_production, storage_capacity)
The algorithm in short is:
if
elseif
end
Storage fill level over time for different combinations of storage capacity and renewable overproduction factor op