Merge pull request #69 from PyPSA/salt_cavern_potential

Salt cavern potential
This commit is contained in:
Tom Brown 2020-09-22 20:19:29 +02:00 committed by GitHub
commit 6b964865e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 9 deletions

View File

@ -229,6 +229,7 @@ rule prepare_sector_network:
timezone_mappings='data/timezone_mappings.csv',
heat_profile="data/heat_load_profile_BDEW.csv",
costs=config['costs_dir'] + "costs_{planning_horizons}.csv",
h2_cavern = "data/hydrogen_salt_cavern_potentials.csv",
co2_budget="data/co2_budget.csv",
profile_offwind_ac=pypsaeur("resources/profile_offwind-ac.nc"),
profile_offwind_dc=pypsaeur("resources/profile_offwind-dc.nc"),

View File

@ -0,0 +1,31 @@
,,TWh
AT,False,
BA,False,
BE,False,
BG,False,
CH,False,
CZ,False,
DE,True,4500
DK,True,700
EE,False,
ES,True,350
FI,False,
FR,False,
GB,True,1050
GR,True,120
HR,False,
HU,False,
IE,False,
IT,False,
LT,False,
LU,False,
LV,False,
NL,True,150
NO,False,
PL,True,120
PT,True,400
RO,False,
RS,False,
SE,False,
SI,False,
SK,False,
1 TWh
2 AT False
3 BA False
4 BE False
5 BG False
6 CH False
7 CZ False
8 DE True 4500
9 DK True 700
10 EE False
11 ES True 350
12 FI False
13 FR False
14 GB True 1050
15 GR True 120
16 HR False
17 HU False
18 IE False
19 IT False
20 LT False
21 LU False
22 LV False
23 NL True 150
24 NO False
25 PL True 120
26 PT True 400
27 RO False
28 RS False
29 SE False
30 SI False
31 SK False

View File

@ -795,21 +795,42 @@ def add_storage(network):
capital_cost=costs.at["fuel cell","fixed"]*costs.at["fuel cell","efficiency"], #NB: fixed cost is per MWel
lifetime=costs.at['fuel cell','lifetime'])
cavern_nodes = pd.DataFrame()
if options['hydrogen_underground_storage']:
h2_capital_cost = costs.at["gas storage","fixed"]
#TODO: change gas storage to hydrogen underground storage when cost database is updated
#h2_capital_cost = costs.at["hydrogen underground storage","fixed"]
else:
h2_capital_cost = costs.at["hydrogen storage","fixed"]
h2_salt_cavern_potential = pd.read_csv(snakemake.input.h2_cavern,
index_col=0, skiprows=[0],
names=["potential", "TWh"])
h2_cavern_ct = h2_salt_cavern_potential[h2_salt_cavern_potential.potential]
cavern_nodes = pop_layout[pop_layout.ct.isin(h2_cavern_ct.index)]
h2_capital_cost = costs.at["hydrogen storage underground", "fixed"]
# assumptions: weight storage potential in a country by population
h2_pot = (h2_cavern_ct.loc[cavern_nodes.ct, "TWh"].astype(float)
.reset_index().set_index(cavern_nodes.index))
h2_pot = h2_pot.TWh * cavern_nodes.fraction
network.madd("Store",
cavern_nodes.index + " H2 Store",
bus=cavern_nodes.index + " H2",
e_nom_extendable=True,
e_nom_max=h2_pot.values,
e_cyclic=True,
carrier="H2 Store",
capital_cost=h2_capital_cost)
# hydrogen stored overground
h2_capital_cost = costs.at["hydrogen storage tank", "fixed"]
nodes_overground = nodes ^ cavern_nodes.index
network.madd("Store",
nodes + " H2 Store",
bus=nodes + " H2",
nodes_overground + " H2 Store",
bus=nodes_overground + " H2",
e_nom_extendable=True,
e_cyclic=True,
carrier="H2 Store",
capital_cost=h2_capital_cost,
lifetime=costs.at['gas storage','lifetime'])
capital_cost=h2_capital_cost)
h2_links = pd.DataFrame(columns=["bus0","bus1","length"])
prefix = "H2 pipeline "