Skip to content

Commit 36ffcfe

Browse files
authored
Merge pull request #67 from pz-max/store
add >18 energy storage techologies
2 parents 52bdf1b + 58edc03 commit 36ffcfe

File tree

9 files changed

+411
-54
lines changed

9 files changed

+411
-54
lines changed

Snakefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ rule compile_cost_assumptions:
1515
dea_heating = "inputs/technologydatafor_heating_installations_marts_2018.xlsx",
1616
dea_industrial = "inputs/technology_data_for_industrial_process_heat.xlsx",
1717
dea_ccts = "inputs/technology_data_for_carbon_capture_transport_storage.xlsx",
18+
pnnl_energy_storage = "inputs/pnnl-energy-storage-database.xlsx",
1819
manual_input = "inputs/manual_input.csv"
1920
output:
2021
expand("outputs/costs_{year}.csv", year = config["years"])

config.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ eur_year : 2015
1717
solar_utility_from_vartiaien : false
1818
solar_rooftop_from_etip : false
1919

20-
# add fuel cell/electrolysis efficiencies from Budischak (DEA assumptions very conservative)
21-
h2_from_budischak : false
20+
energy_storage_database:
21+
h2_from_budischak: true # add fuel cell/electrolysis efficiencies from Budischak (DEA assumptions very conservative)
22+
ewg_home_battery: true # add home battery data derived from DEA data and EWG study
23+
pnnl_energy_storage:
24+
add_data: true # add storage data mainly from PNNL
25+
approx_beyond_2030: ["same_as_2030"] # ["geometric_series"] or ["same_as_2030"]
2226

2327
# remove grid connection costs from DEA for offwind because they are calculated
2428
# seperately in pypsa-eur

docs/release_notes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Technology-Data 0.5.0 (08 Februrary 2023)
4949
- new biomass technologies (BioSNG, BtL, biogas, biogas plus hydrogen, digestible biomass,digestible biomass to hydrogen, electric boiler steam, gas boiler steam, industrial heat pump high temperature, solid biomass boiler steam, solid bioass to hydrogen, biomass boiler for decentral heating
5050
- hydrogen storage tank type 1: Low pressure hydrogen tank storage (up to 200 bar)
5151
- hydrogen storage compressor: Compressor for filling hydrogen storage tanks (compression from 30 to 250 bar)
52+
- 18 new energy storage technologies from PNNL "Energy Storage Grand Challenge Cost and Performance Assessment 2022"
5253

5354
* Enable easy debugging of scripts by allowing python execution/ debugging in scripts
5455

environment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ dependencies:
1010
- numpy
1111
- beautifulsoup4
1212
- xlrd
13+
- scipy
1314
- openpyxl<=3.0.9
1415
- packaging
1516

1617
- pip:
1718
- tabula-py
19+
- currencyconverter
292 KB
Binary file not shown.

inputs/table_inputs.tex

Whitespace-only changes.

latex_tables/bib_transition.bib

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
@techreport{Viswanathan_2022,
2+
title = {2022 Grid Energy Storage Technology Cost and Performance Assessment},
3+
url = {https://www.pnnl.gov/sites/default/files/media/file/ESGC%20Cost%20Performance%20Report%202022%20PNNL-33283.pdf},
4+
urldate = {2022-12-27},
5+
author = {Viswanathan, Vilayanur and Mongird, Kendall and Franks, Ryan and Li, Xiaolin and Sprenkle, Vincent and Baxter, Richard},
6+
year = {2022},
7+
institution = {PNNL},
8+
}
9+
10+
@article{Georgiou_2018,
11+
title = {A thermo-economic analysis and comparison of pumped-thermal and liquid-air electricity storage systems},
12+
journal = {Applied Energy},
13+
volume = {226},
14+
pages = {1119-1133},
15+
year = {2018},
16+
issn = {0306-2619},
17+
doi = {https://doi.org/10.1016/j.apenergy.2018.04.128},
18+
url = {https://www.sciencedirect.com/science/article/pii/S0306261918306627},
19+
author = {Solomos Georgiou and Nilay Shah and Christos N. Markides},
20+
}
21+
122
@techreport{govUK,
223
title = {Hydrogen supply chain: evidence base, {Department} for {Business}, {Energy} \& {Industrial} {Strategy}, {GovUK}},
324
url = {https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/760479/H2_supply_chain_evidence_-_publication_version.pdf},

latex_tables/tables_in_latex.py

Lines changed: 93 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
55
@author: Marta
66
"""
7-
7+
#%%
88
import pandas as pd
99
import numpy as np
10-
10+
import os
1111

1212
"""
1313
Latex table including FOM, efficiencies and lifetimes
@@ -16,11 +16,13 @@
1616
#write latex table
1717
# read 2020 costs
1818
idx = pd.IndexSlice
19-
costs = pd.read_csv('../outputs/costs_2020.csv',index_col=list(range(2))).sort_index()
19+
root_path = os.getcwd()
20+
costs = pd.read_csv(os.path.join(root_path, 'outputs', 'costs_2060.csv'),index_col=list(range(2))).sort_index()
2021

2122
filename='table_inputs.tex'
2223

2324
file = open(filename, 'w')
25+
2426
technologies=['onwind', 'offwind', 'solar-utility', 'solar-rooftop', 'OCGT',
2527
'CCGT', 'coal', 'lignite', 'nuclear', 'hydro', 'ror', 'PHS',
2628
'central gas CHP',
@@ -62,6 +64,28 @@
6264
'gas boiler steam',
6365
'solid biomass boiler steam',
6466
'methanolisation',
67+
'Compressed-Air-Adiabatic-bicharger',
68+
'Compressed-Air-Adiabatic-store', 'Concrete-charger',
69+
'Concrete-discharger', 'Concrete-store', 'Gravity-Brick-bicharger',
70+
'Gravity-Brick-store', 'Gravity-Water-Aboveground-bicharger',
71+
'Gravity-Water-Aboveground-store',
72+
'Gravity-Water-Underground-bicharger',
73+
'Gravity-Water-Underground-store', 'HighT-Molten-Salt-charger',
74+
'HighT-Molten-Salt-discharger', 'HighT-Molten-Salt-store',
75+
'Hydrogen-charger', 'Hydrogen-discharger', 'Hydrogen-store',
76+
'Lead-Acid-bicharger', 'Lead-Acid-store', 'Liquid-Air-charger',
77+
'Liquid-Air-discharger', 'Liquid-Air-store',
78+
'Lithium-Ion-LFP-bicharger', 'Lithium-Ion-LFP-store',
79+
'Lithium-Ion-NMC-bicharger', 'Lithium-Ion-NMC-store',
80+
'LowT-Molten-Salt-charger', 'LowT-Molten-Salt-discharger',
81+
'LowT-Molten-Salt-store', 'Ni-Zn-bicharger', 'Ni-Zn-store',
82+
'Pumped-Heat-charger', 'Pumped-Heat-discharger',
83+
'Pumped-Heat-store', 'Pumped-Storage-Hydro-bicharger',
84+
'Pumped-Storage-Hydro-store', 'Sand-charger', 'Sand-discharger',
85+
'Sand-store', 'Vanadium-Redox-Flow-bicharger',
86+
'Vanadium-Redox-Flow-store', 'Zn-Air-bicharger', 'Zn-Air-store',
87+
'Zn-Br-Flow-bicharger', 'Zn-Br-Flow-store',
88+
'Zn-Br-Nonflow-bicharger', 'Zn-Br-Nonflow-store'
6589
]
6690

6791
name={'onwind' : 'Onshore Wind',
@@ -119,6 +143,53 @@
119143
'gas boiler steam': 'gas boiler steam',
120144
'solid biomass boiler steam': 'solid biomass boiler steam',
121145
'methanolisation': 'methanolisation'
146+
'Compressed-Air-Adiabatic-bicharger': 'Compressed-Air-Adiabatic-bicharger',
147+
'Compressed-Air-Adiabatic-store': 'Compressed-Air-Adiabatic-store',
148+
'Concrete-charger': 'Concrete-charger',
149+
'Concrete-discharger': 'Concrete-discharger',
150+
'Concrete-store': 'Concrete-store',
151+
'Gravity-Brick-bicharger': 'Gravity-Brick-bicharger',
152+
'Gravity-Brick-store': 'Gravity-Brick-store',
153+
'Gravity-Water-Aboveground-bicharger': 'Gravity-Water-Aboveground-bicharger',
154+
'Gravity-Water-Aboveground-store': 'Gravity-Water-Aboveground-store',
155+
'Gravity-Water-Underground-bicharger': 'Gravity-Water-Underground-bicharger',
156+
'Gravity-Water-Underground-store': 'Gravity-Water-Underground-store',
157+
'HighT-Molten-Salt-charger': 'HighT-Molten-Salt-charger',
158+
'HighT-Molten-Salt-discharger': 'HighT-Molten-Salt-discharger',
159+
'HighT-Molten-Salt-store': 'HighT-Molten-Salt-store',
160+
'Hydrogen-charger': 'Hydrogen-charger',
161+
'Hydrogen-discharger': 'Hydrogen-discharger',
162+
'Hydrogen-store': 'Hydrogen-store',
163+
'Lead-Acid-bicharger': 'Lead-Acid-bicharger',
164+
'Lead-Acid-store': 'Lead-Acid-store',
165+
'Liquid-Air-charger': 'Liquid-Air-charger',
166+
'Liquid-Air-discharger': 'Liquid-Air-discharger',
167+
'Liquid-Air-store': 'Liquid-Air-store',
168+
'Lithium-Ion-LFP-bicharger': 'Lithium-Ion-LFP-bicharger',
169+
'Lithium-Ion-LFP-store': 'Lithium-Ion-LFP-store',
170+
'Lithium-Ion-NMC-bicharger': 'Lithium-Ion-NMC-bicharger',
171+
'Lithium-Ion-NMC-store': 'Lithium-Ion-NMC-store',
172+
'LowT-Molten-Salt-charger': 'LowT-Molten-Salt-charger',
173+
'LowT-Molten-Salt-discharger': 'LowT-Molten-Salt-discharger',
174+
'LowT-Molten-Salt-store': 'LowT-Molten-Salt-store',
175+
'Ni-Zn-bicharger': 'Ni-Zn-bicharger',
176+
'Ni-Zn-store': 'Ni-Zn-store',
177+
'Pumped-Heat-charger': 'Pumped-Heat-charger',
178+
'Pumped-Heat-discharger': 'Pumped-Heat-discharger',
179+
'Pumped-Heat-store': 'Pumped-Heat-store',
180+
'Pumped-Storage-Hydro-bicharger': 'Pumped-Storage-Hydro-bicharger',
181+
'Pumped-Storage-Hydro-store': 'Pumped-Storage-Hydro-store',
182+
'Sand-charger': 'Sand-charger',
183+
'Sand-discharger': 'Sand-discharger',
184+
'Sand-store': 'Sand-store',
185+
'Vanadium-Redox-Flow-bicharger': 'Vanadium-Redox-Flow-bicharger',
186+
'Vanadium-Redox-Flow-store': 'Vanadium-Redox-Flow-store',
187+
'Zn-Air-bicharger': 'Zn-Air-bicharger',
188+
'Zn-Air-store': 'Zn-Air-store',
189+
'Zn-Br-Flow-bicharger': 'Zn-Br-Flow-bicharger',
190+
'Zn-Br-Flow-store': 'Zn-Br-Flow-store',
191+
'Zn-Br-Nonflow-bicharger': 'Zn-Br-Nonflow-bicharger',
192+
'Zn-Br-Nonflow-store': 'Zn-Br-Nonflow-store',
122193
}
123194

124195
dic_ref = {'Technology Data for Energy Plants for Electricity and District heating generation':'DEA_2019',
@@ -129,6 +200,7 @@
129200
#'NREL http://www.nrel.gov/docs/fy09osti/45873.pdf;
130201
'IWES Interaktion':'Gerhardt_2015, DEA_2019',
131202
'Schaber thesis':'Schaber_2013',
203+
'Hagspiel et al. (2014): doi:10.1016/j.energy.2014.01.025 ': 'Hagspiel_2014',
132204
'Hagspiel':'Hagspiel_2014',
133205
#'Fasihi':'Fasihi_2017',
134206
'Fasihi et al 2017, table 1, https://www.mdpi.com/2071-1050/9/2/306':'Fasihi_2017',
@@ -142,6 +214,8 @@
142214
'Is a 100% renewable European power system feasible by 2050?': 'Zappa_2019, JRC_biomass',
143215
'Entwicklung der spezifischen Kohlendioxid-Emissionen des deutschen Strommix in den Jahren 1990 - 2018': 'German_Environment_Agency',
144216
'IEA WEM2017 97USD/boe = http://www.iea.org/media/weowebsite/2017/WEM_Documentation_WEO2017.pdf':'IEA_WEO2017',
217+
'Danish Energy Agency': 'DEA_2019',
218+
'Danish Energy Agency, technology_data_for_el_and_dh.xlsx':'DEA_2019',
145219
'Danish Energy Agency, technology_data_for_el_and_dh_-_0009.xlsx':'DEA_2019',
146220
'Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx':'DEA_2019',
147221
'Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx, Note K.':'DEA_2019',
@@ -152,7 +226,8 @@
152226
'Global Energy System based on 100% Renewable Energy, Energywatchgroup/LTU University, 2019, Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx' :'Ram_2019, DEA_2019',
153227
'Global Energy System based on 100% Renewable Energy, Energywatchgroup/LTU University, 2019, Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx, Note K.' :'Ram_2019, DEA_2019',
154228
'TODO':'govUK',
155-
229+
'Viswanathan_2022': 'Viswanathan_2022',
230+
'Georgiou_2018': 'Georgiou_2018',
156231
}
157232

158233
# Solar thermal collector decentral & 270 & m$^{2}$ & 1.3 & 20 & variable & \cite{Henning20141003} \\
@@ -170,6 +245,10 @@
170245
lifetime = str(int(costs.loc[idx[technology,'lifetime'],'value']))
171246
else:
172247
lifetime= ' '
248+
if idx[technology,'investment'] in costs.index:
249+
investment = str(int(costs.loc[idx[technology,'investment'],'value']/1000))
250+
else:
251+
investment= ' '
173252
if idx[technology,'efficiency'] in costs.index and technology not in ['onwind',
174253
'offwind', 'central gas CHP', 'biomass CHP', 'battery storage',
175254
'home battery storage', 'central coal CHP'
@@ -189,17 +268,19 @@
189268
else:
190269
source = costs.loc[idx[technology,'efficiency'],'source']
191270
if technology == 'water tank charger':
192-
file.write(' ' +name[technology]
193-
+ ' & ' + FOM
194-
+ ' & ' + lifetime
271+
file.write(' ' + name[technology]
272+
+ ' & ' + investment
273+
+ ' & ' + FOM
274+
+ ' & ' + lifetime
195275
+ ' & ' + efficiency
196276
+ ' & ' + ' \\' + ' ')
197-
else:
198-
file.write(' ' +name[technology]
199-
+ ' & ' + FOM
200-
+ ' & ' + lifetime
277+
else:
278+
file.write(' ' + name[technology]
279+
+ ' & ' + investment
280+
+ ' & ' + FOM
281+
+ ' & ' + lifetime
201282
+ ' & ' + efficiency
202-
+ ' & ' + ' \\' + 'cite{' + dic_ref[source]+ '} ')
283+
+ ' & ' + ' \\' + 'cite{' + dic_ref[source.split(sep=",")[0]] + '} ')
203284

204285
file.write('\\')
205286
file.write('\\')

0 commit comments

Comments
 (0)