Merge pull request #69 from PyPSA/salt_cavern_potential
Salt cavern potential
This commit is contained in:
commit
6b964865e7
@ -229,6 +229,7 @@ rule prepare_sector_network:
|
|||||||
timezone_mappings='data/timezone_mappings.csv',
|
timezone_mappings='data/timezone_mappings.csv',
|
||||||
heat_profile="data/heat_load_profile_BDEW.csv",
|
heat_profile="data/heat_load_profile_BDEW.csv",
|
||||||
costs=config['costs_dir'] + "costs_{planning_horizons}.csv",
|
costs=config['costs_dir'] + "costs_{planning_horizons}.csv",
|
||||||
|
h2_cavern = "data/hydrogen_salt_cavern_potentials.csv",
|
||||||
co2_budget="data/co2_budget.csv",
|
co2_budget="data/co2_budget.csv",
|
||||||
profile_offwind_ac=pypsaeur("resources/profile_offwind-ac.nc"),
|
profile_offwind_ac=pypsaeur("resources/profile_offwind-ac.nc"),
|
||||||
profile_offwind_dc=pypsaeur("resources/profile_offwind-dc.nc"),
|
profile_offwind_dc=pypsaeur("resources/profile_offwind-dc.nc"),
|
||||||
|
31
data/hydrogen_salt_cavern_potentials.csv
Normal file
31
data/hydrogen_salt_cavern_potentials.csv
Normal 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,
|
|
@ -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
|
capital_cost=costs.at["fuel cell","fixed"]*costs.at["fuel cell","efficiency"], #NB: fixed cost is per MWel
|
||||||
lifetime=costs.at['fuel cell','lifetime'])
|
lifetime=costs.at['fuel cell','lifetime'])
|
||||||
|
|
||||||
|
cavern_nodes = pd.DataFrame()
|
||||||
|
|
||||||
if options['hydrogen_underground_storage']:
|
if options['hydrogen_underground_storage']:
|
||||||
h2_capital_cost = costs.at["gas storage","fixed"]
|
h2_salt_cavern_potential = pd.read_csv(snakemake.input.h2_cavern,
|
||||||
#TODO: change gas storage to hydrogen underground storage when cost database is updated
|
index_col=0, skiprows=[0],
|
||||||
#h2_capital_cost = costs.at["hydrogen underground storage","fixed"]
|
names=["potential", "TWh"])
|
||||||
else:
|
h2_cavern_ct = h2_salt_cavern_potential[h2_salt_cavern_potential.potential]
|
||||||
h2_capital_cost = costs.at["hydrogen storage","fixed"]
|
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",
|
network.madd("Store",
|
||||||
nodes + " H2 Store",
|
nodes_overground + " H2 Store",
|
||||||
bus=nodes + " H2",
|
bus=nodes_overground + " H2",
|
||||||
e_nom_extendable=True,
|
e_nom_extendable=True,
|
||||||
e_cyclic=True,
|
e_cyclic=True,
|
||||||
carrier="H2 Store",
|
carrier="H2 Store",
|
||||||
capital_cost=h2_capital_cost,
|
capital_cost=h2_capital_cost)
|
||||||
lifetime=costs.at['gas storage','lifetime'])
|
|
||||||
|
|
||||||
h2_links = pd.DataFrame(columns=["bus0","bus1","length"])
|
h2_links = pd.DataFrame(columns=["bus0","bus1","length"])
|
||||||
prefix = "H2 pipeline "
|
prefix = "H2 pipeline "
|
||||||
|
Loading…
Reference in New Issue
Block a user