diff --git a/Snakefile b/Snakefile index 54b8c241..c619dc86 100644 --- a/Snakefile +++ b/Snakefile @@ -186,6 +186,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"), diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index bdddd2cf..f4ceca9b 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -761,21 +761,36 @@ 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"] + + network.madd("Store", + cavern_nodes.index + " H2 Store", + bus=cavern_nodes.index + " H2", + e_nom_extendable=True, + 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 "