Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add >18 energy storage techologies #67

Merged
merged 29 commits into from
May 22, 2023
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
62603ec
add energy storage tech
pz-max Jan 10, 2023
7cc7d2c
fix storage type typo
pz-max Jan 10, 2023
6be02c4
fix round and df input formats
pz-max Jan 10, 2023
fa37186
add release notes
pz-max Jan 10, 2023
0247519
Merge branch 'master' into store
pz-max Jan 10, 2023
c6945af
remove duplicates for 2021 and 2030
pz-max Jan 13, 2023
9e81274
Merge branch 'store' of https://github.com/pz-max/technology-data int…
pz-max Jan 13, 2023
60ac25f
add missing values
pz-max Jan 15, 2023
0f2fbcb
fix FOM calculation
pz-max Jan 15, 2023
21ca0e2
fix magnitude for FOM percent per year value
pz-max Jan 19, 2023
e8da342
add outputs
pz-max Jan 19, 2023
bc6e438
add new points for linear interpolation
pz-max Jan 28, 2023
5c3ab16
add comments
pz-max Jan 28, 2023
9bb200b
fix pumped-heat-store
pz-max Jan 28, 2023
b700abe
fix hydrogen efficiency bug and cost assumptions
pz-max Feb 10, 2023
6148446
Merge branch 'master' into store
pz-max Feb 10, 2023
a47acf0
add storage to latex conversion
pz-max Feb 10, 2023
31a4536
Merge branch 'store'
pz-max Feb 10, 2023
f54444a
remove abstract and keywords form bib
pz-max Feb 12, 2023
33f494a
fix hydrogen data bug, and latex script, update outputs
pz-max Feb 12, 2023
2043de5
fix demon typo
pz-max Feb 18, 2023
b4ab970
add latex table fix
pz-max May 17, 2023
9246f9a
revert data back to master
pz-max May 17, 2023
31bc49a
Merge branch 'master' into store
pz-max May 17, 2023
bcdaa1c
rename new data, add home batteries
pz-max May 17, 2023
d4e4d09
rename data file and add inflation correction
pz-max May 17, 2023
4aae849
add options for storage
pz-max May 17, 2023
7e10835
add fixes
pz-max May 17, 2023
58edc03
'same_as_2030' new pnnl data default
pz-max May 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ rule compile_cost_assumptions:
dea_heating = "inputs/technologydatafor_heating_installations_marts_2018.xlsx",
dea_industrial = "inputs/technology_data_for_industrial_process_heat.xlsx",
dea_ccts = "inputs/technology_data_for_carbon_capture_transport_storage.xlsx",
pnnl_energy_storage = "inputs/pnnl-energy-storage-database.xlsx",
manual_input = "inputs/manual_input.csv"
output:
expand("outputs/costs_{year}.csv", year = config["years"])
Expand Down
8 changes: 6 additions & 2 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@ eur_year : 2015
solar_utility_from_vartiaien : false
solar_rooftop_from_etip : false

# add fuel cell/electrolysis efficiencies from Budischak (DEA assumptions very conservative)
h2_from_budischak : false
energy_storage_database:
h2_from_budischak: true # add fuel cell/electrolysis efficiencies from Budischak (DEA assumptions very conservative)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably by accident the h2_from_budischak moved below energy_storage_database, should be separate

Copy link
Contributor Author

@pz-max pz-max May 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, the energy_storage_database aims to keep all energy storage relevant data options in one place, addressing your comment. It's just a proposal happy to revert.

ewg_home_battery: true # add home battery data derived from DEA data and EWG study
pnnl_energy_storage:
add_data: true # add storage data mainly from PNNL
approx_beyond_2030: ["geometric_series"] # ["geometric_series"] or ["same_as_2030"]
pz-max marked this conversation as resolved.
Show resolved Hide resolved

# remove grid connection costs from DEA for offwind because they are calculated
# seperately in pypsa-eur
Expand Down
1 change: 1 addition & 0 deletions docs/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Technology-Data 0.5.0 (08 Februrary 2023)
- 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
- hydrogen storage tank type 1: Low pressure hydrogen tank storage (up to 200 bar)
- hydrogen storage compressor: Compressor for filling hydrogen storage tanks (compression from 30 to 250 bar)
- 18 new energy storage technologies from PNNL "Energy Storage Grand Challenge Cost and Performance Assessment 2022"

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

Expand Down
2 changes: 2 additions & 0 deletions environment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ dependencies:
- numpy
- beautifulsoup4
- xlrd
- scipy
- openpyxl<=3.0.9
- packaging

- pip:
- tabula-py
- currencyconverter
Binary file added inputs/pnnl-energy-storage-database.xlsx
Binary file not shown.
Empty file added inputs/table_inputs.tex
Empty file.
21 changes: 21 additions & 0 deletions latex_tables/bib_transition.bib
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
@techreport{Viswanathan_2022,
title = {2022 Grid Energy Storage Technology Cost and Performance Assessment},
url = {https://www.pnnl.gov/sites/default/files/media/file/ESGC%20Cost%20Performance%20Report%202022%20PNNL-33283.pdf},
urldate = {2022-12-27},
author = {Viswanathan, Vilayanur and Mongird, Kendall and Franks, Ryan and Li, Xiaolin and Sprenkle, Vincent and Baxter, Richard},
year = {2022},
institution = {PNNL},
}

@article{Georgiou_2018,
title = {A thermo-economic analysis and comparison of pumped-thermal and liquid-air electricity storage systems},
journal = {Applied Energy},
volume = {226},
pages = {1119-1133},
year = {2018},
issn = {0306-2619},
doi = {https://doi.org/10.1016/j.apenergy.2018.04.128},
url = {https://www.sciencedirect.com/science/article/pii/S0306261918306627},
author = {Solomos Georgiou and Nilay Shah and Christos N. Markides},
}

@techreport{govUK,
title = {Hydrogen supply chain: evidence base, {Department} for {Business}, {Energy} \& {Industrial} {Strategy}, {GovUK}},
url = {https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/760479/H2_supply_chain_evidence_-_publication_version.pdf},
Expand Down
105 changes: 93 additions & 12 deletions latex_tables/tables_in_latex.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

@author: Marta
"""

#%%
import pandas as pd
import numpy as np

import os

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

filename='table_inputs.tex'

file = open(filename, 'w')

technologies=['onwind', 'offwind', 'solar-utility', 'solar-rooftop', 'OCGT',
'CCGT', 'coal', 'lignite', 'nuclear', 'hydro', 'ror', 'PHS',
'central gas CHP',
Expand Down Expand Up @@ -62,6 +64,28 @@
'gas boiler steam',
'solid biomass boiler steam',
'methanolisation',
'Compressed-Air-Adiabatic-bicharger',
'Compressed-Air-Adiabatic-store', 'Concrete-charger',
'Concrete-discharger', 'Concrete-store', 'Gravity-Brick-bicharger',
'Gravity-Brick-store', 'Gravity-Water-Aboveground-bicharger',
'Gravity-Water-Aboveground-store',
'Gravity-Water-Underground-bicharger',
'Gravity-Water-Underground-store', 'HighT-Molten-Salt-charger',
'HighT-Molten-Salt-discharger', 'HighT-Molten-Salt-store',
'Hydrogen-charger', 'Hydrogen-discharger', 'Hydrogen-store',
'Lead-Acid-bicharger', 'Lead-Acid-store', 'Liquid-Air-charger',
'Liquid-Air-discharger', 'Liquid-Air-store',
'Lithium-Ion-LFP-bicharger', 'Lithium-Ion-LFP-store',
'Lithium-Ion-NMC-bicharger', 'Lithium-Ion-NMC-store',
'LowT-Molten-Salt-charger', 'LowT-Molten-Salt-discharger',
'LowT-Molten-Salt-store', 'Ni-Zn-bicharger', 'Ni-Zn-store',
'Pumped-Heat-charger', 'Pumped-Heat-discharger',
'Pumped-Heat-store', 'Pumped-Storage-Hydro-bicharger',
'Pumped-Storage-Hydro-store', 'Sand-charger', 'Sand-discharger',
'Sand-store', 'Vanadium-Redox-Flow-bicharger',
'Vanadium-Redox-Flow-store', 'Zn-Air-bicharger', 'Zn-Air-store',
'Zn-Br-Flow-bicharger', 'Zn-Br-Flow-store',
'Zn-Br-Nonflow-bicharger', 'Zn-Br-Nonflow-store'
]

name={'onwind' : 'Onshore Wind',
Expand Down Expand Up @@ -119,6 +143,53 @@
'gas boiler steam': 'gas boiler steam',
'solid biomass boiler steam': 'solid biomass boiler steam',
'methanolisation': 'methanolisation'
'Compressed-Air-Adiabatic-bicharger': 'Compressed-Air-Adiabatic-bicharger',
'Compressed-Air-Adiabatic-store': 'Compressed-Air-Adiabatic-store',
'Concrete-charger': 'Concrete-charger',
'Concrete-discharger': 'Concrete-discharger',
'Concrete-store': 'Concrete-store',
'Gravity-Brick-bicharger': 'Gravity-Brick-bicharger',
'Gravity-Brick-store': 'Gravity-Brick-store',
'Gravity-Water-Aboveground-bicharger': 'Gravity-Water-Aboveground-bicharger',
'Gravity-Water-Aboveground-store': 'Gravity-Water-Aboveground-store',
'Gravity-Water-Underground-bicharger': 'Gravity-Water-Underground-bicharger',
'Gravity-Water-Underground-store': 'Gravity-Water-Underground-store',
'HighT-Molten-Salt-charger': 'HighT-Molten-Salt-charger',
'HighT-Molten-Salt-discharger': 'HighT-Molten-Salt-discharger',
'HighT-Molten-Salt-store': 'HighT-Molten-Salt-store',
'Hydrogen-charger': 'Hydrogen-charger',
'Hydrogen-discharger': 'Hydrogen-discharger',
'Hydrogen-store': 'Hydrogen-store',
'Lead-Acid-bicharger': 'Lead-Acid-bicharger',
'Lead-Acid-store': 'Lead-Acid-store',
'Liquid-Air-charger': 'Liquid-Air-charger',
'Liquid-Air-discharger': 'Liquid-Air-discharger',
'Liquid-Air-store': 'Liquid-Air-store',
'Lithium-Ion-LFP-bicharger': 'Lithium-Ion-LFP-bicharger',
'Lithium-Ion-LFP-store': 'Lithium-Ion-LFP-store',
'Lithium-Ion-NMC-bicharger': 'Lithium-Ion-NMC-bicharger',
'Lithium-Ion-NMC-store': 'Lithium-Ion-NMC-store',
'LowT-Molten-Salt-charger': 'LowT-Molten-Salt-charger',
'LowT-Molten-Salt-discharger': 'LowT-Molten-Salt-discharger',
'LowT-Molten-Salt-store': 'LowT-Molten-Salt-store',
'Ni-Zn-bicharger': 'Ni-Zn-bicharger',
'Ni-Zn-store': 'Ni-Zn-store',
'Pumped-Heat-charger': 'Pumped-Heat-charger',
'Pumped-Heat-discharger': 'Pumped-Heat-discharger',
'Pumped-Heat-store': 'Pumped-Heat-store',
'Pumped-Storage-Hydro-bicharger': 'Pumped-Storage-Hydro-bicharger',
'Pumped-Storage-Hydro-store': 'Pumped-Storage-Hydro-store',
'Sand-charger': 'Sand-charger',
'Sand-discharger': 'Sand-discharger',
'Sand-store': 'Sand-store',
'Vanadium-Redox-Flow-bicharger': 'Vanadium-Redox-Flow-bicharger',
'Vanadium-Redox-Flow-store': 'Vanadium-Redox-Flow-store',
'Zn-Air-bicharger': 'Zn-Air-bicharger',
'Zn-Air-store': 'Zn-Air-store',
'Zn-Br-Flow-bicharger': 'Zn-Br-Flow-bicharger',
'Zn-Br-Flow-store': 'Zn-Br-Flow-store',
'Zn-Br-Nonflow-bicharger': 'Zn-Br-Nonflow-bicharger',
'Zn-Br-Nonflow-store': 'Zn-Br-Nonflow-store',
}

dic_ref = {'Technology Data for Energy Plants for Electricity and District heating generation':'DEA_2019',
Expand All @@ -129,6 +200,7 @@
#'NREL http://www.nrel.gov/docs/fy09osti/45873.pdf;
'IWES Interaktion':'Gerhardt_2015, DEA_2019',
'Schaber thesis':'Schaber_2013',
'Hagspiel et al. (2014): doi:10.1016/j.energy.2014.01.025 ': 'Hagspiel_2014',
'Hagspiel':'Hagspiel_2014',
#'Fasihi':'Fasihi_2017',
'Fasihi et al 2017, table 1, https://www.mdpi.com/2071-1050/9/2/306':'Fasihi_2017',
Expand All @@ -142,6 +214,8 @@
'Is a 100% renewable European power system feasible by 2050?': 'Zappa_2019, JRC_biomass',
'Entwicklung der spezifischen Kohlendioxid-Emissionen des deutschen Strommix in den Jahren 1990 - 2018': 'German_Environment_Agency',
'IEA WEM2017 97USD/boe = http://www.iea.org/media/weowebsite/2017/WEM_Documentation_WEO2017.pdf':'IEA_WEO2017',
'Danish Energy Agency': 'DEA_2019',
'Danish Energy Agency, technology_data_for_el_and_dh.xlsx':'DEA_2019',
'Danish Energy Agency, technology_data_for_el_and_dh_-_0009.xlsx':'DEA_2019',
'Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx':'DEA_2019',
'Danish Energy Agency, technology_data_catalogue_for_energy_storage.xlsx, Note K.':'DEA_2019',
Expand All @@ -152,7 +226,8 @@
'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',
'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',
'TODO':'govUK',

'Viswanathan_2022': 'Viswanathan_2022',
'Georgiou_2018': 'Georgiou_2018',
}

# Solar thermal collector decentral & 270 & m$^{2}$ & 1.3 & 20 & variable & \cite{Henning20141003} \\
Expand All @@ -170,6 +245,10 @@
lifetime = str(int(costs.loc[idx[technology,'lifetime'],'value']))
else:
lifetime= ' '
if idx[technology,'investment'] in costs.index:
investment = str(int(costs.loc[idx[technology,'investment'],'value']/1000))
else:
investment= ' '
if idx[technology,'efficiency'] in costs.index and technology not in ['onwind',
'offwind', 'central gas CHP', 'biomass CHP', 'battery storage',
'home battery storage', 'central coal CHP'
Expand All @@ -189,17 +268,19 @@
else:
source = costs.loc[idx[technology,'efficiency'],'source']
if technology == 'water tank charger':
file.write(' ' +name[technology]
+ ' & ' + FOM
+ ' & ' + lifetime
file.write(' ' + name[technology]
+ ' & ' + investment
+ ' & ' + FOM
+ ' & ' + lifetime
+ ' & ' + efficiency
+ ' & ' + ' \\' + ' ')
else:
file.write(' ' +name[technology]
+ ' & ' + FOM
+ ' & ' + lifetime
else:
file.write(' ' + name[technology]
+ ' & ' + investment
+ ' & ' + FOM
+ ' & ' + lifetime
+ ' & ' + efficiency
+ ' & ' + ' \\' + 'cite{' + dic_ref[source]+ '} ')
+ ' & ' + ' \\' + 'cite{' + dic_ref[source.split(sep=",")[0]] + '} ')

file.write('\\')
file.write('\\')
Expand Down
Loading