adress review comments

This commit is contained in:
Philipp Glaum 2024-08-26 15:15:02 +02:00
parent 0b0de7ba77
commit 25f6c014e7
3 changed files with 58 additions and 92 deletions

View File

@ -631,19 +631,19 @@ sector:
# - onshore # more than 50 km from sea
- nearshore # within 50 km of sea
# - offshore
methanol: false
regional_methanol_demand: false
methanol_reforming: false
methanol_reforming_cc: false
methanol_to_kerosene: false
methanol_to_olefins: false
methanol_to_power:
ccgt: false
ccgt_cc: false
ocgt: false
allam: false
biomass_to_methanol: false
biomass_to_methanol_cc: false
methanol:
regional_methanol_demand: false
methanol_reforming: false
methanol_reforming_cc: false
methanol_to_kerosene: false
methanol_to_olefins: false
methanol_to_power:
ccgt: false
ccgt_cc: false
ocgt: false
allam: false
biomass_to_methanol: false
biomass_to_methanol_cc: false
ammonia: false
min_part_load_fischer_tropsch: 0.5
min_part_load_methanolisation: 0.3

View File

@ -89,7 +89,7 @@ chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP)
micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas.
solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat.
solar_cf_correction,--,float,The correction factor for the value provided by the solar thermal profile calculations
marginal_cost_storage,currency/MWh ,float,The marginal cost of discharging batteries in distributed grids
marginal_cost_storage,"currency/MWh ",float,The marginal cost of discharging batteries in distributed grids
methanation,--,"{true, false}",Add option for transforming hydrogen and CO2 into methane using methanation.
coal_cc,--,"{true, false}",Add option for coal CHPs with carbon capture
dac,--,"{true, false}",Add option for Direct Air Capture (DAC)
@ -119,17 +119,17 @@ cc_fraction,--,float,The default fraction of CO2 captured with post-combustion c
hydrogen_underground _storage,--,"{true, false}",Add options for storing hydrogen underground. Storage potential depends regionally.
hydrogen_underground _storage_locations,,"{onshore, nearshore, offshore}","The location where hydrogen underground storage can be located. Onshore, nearshore, offshore means it must be located more than 50 km away from the sea, within 50 km of the sea, or within the sea itself respectively."
,,,
methanol, --,"{true, false}", Add methanol as carrrier and add enabled methnol technologies
regional_methanol_demand,--,"{true, false}",Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.
methanol_reforming,--,"{true, false}", Add methanol reforming
methanol_reforming_cc,--,"{true, false}", Add methanol reforming with carbon capture
methanol_to_kerosene,--,"{true, false}", Add methanol to kerosene
methanol_to_olefins,--,"{true, false}", Add methanol to olefins
methanol_to_power,--,--, Add different methanol to power technologies
-- ccgt,--,"{true, false}", Add combined cycle gas turbine (CCGT) using methanol
-- ccgt_cc,--,"{true, false}", Add combined cycle gas turbine (CCGT) with carbon capture using methanol
-- ocgt,--,"{true, false}", Add open cycle gas turbine (OCGT) using methanol
-- allam,--,"{true, false}", Add Allam cycle gas power plants using methanol
methanol,--,--,Add methanol as carrrier and add enabled methnol technologies
-- regional_methanol_demand,--,"{true, false}",Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.
-- methanol_reforming,--,"{true, false}"," Add methanol reforming"
-- methanol_reforming_cc,--,"{true, false}"," Add methanol reforming with carbon capture"
-- methanol_to_kerosene,--,"{true, false}"," Add methanol to kerosene"
-- methanol_to_olefins,--,"{true, false}"," Add methanol to olefins"
-- methanol_to_power,--,--," Add different methanol to power technologies"
-- -- ccgt,--,"{true, false}"," Add combined cycle gas turbine (CCGT) using methanol"
-- -- ccgt_cc,--,"{true, false}"," Add combined cycle gas turbine (CCGT) with carbon capture using methanol"
-- -- ocgt,--,"{true, false}"," Add open cycle gas turbine (OCGT) using methanol"
-- -- allam,--,"{true, false}"," Add Allam cycle gas power plants using methanol"
,,,
ammonia,--,"{true, false, regional}","Add ammonia as a carrrier. It can be either true (copperplated NH3), false (no NH3 carrier) or ""regional"" (regionalised NH3 without network)"
min_part_load_fischer _tropsch,per unit of p_nom ,float,The minimum unit dispatch (``p_min_pu``) for the Fischer-Tropsch process
@ -152,7 +152,7 @@ H2_network,--,"{true, false}",Add option for new hydrogen pipelines
gas_network,--,"{true, false}","Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm <https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation>`_ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well."
H2_retrofit,--,"{true, false}",Add option for retrofiting existing pipelines to transport hydrogen.
H2_retrofit_capacity _per_CH4,--,float,"The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The `European Hydrogen Backbone (April, 2020) p.15 <https://gasforclimate2050.eu/wp-content/uploads/2020/07/2020_European-Hydrogen-Backbone_Report.pdf>`_ 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity."
gas_network_connectivity _upgrade ,--,float,The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm <https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation>`_ used for the gas network
"gas_network_connectivity _upgrade ",--,float,The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm <https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation>`_ used for the gas network
gas_distribution_grid,--,"{true, false}",Add a gas distribution grid
gas_distribution_grid _cost_factor,,,Multiplier for the investment cost of the gas distribution grid
,,,

1 Unit Values Description
89 micro_chp -- {true, false} Add option for using Combined Heat and Power (CHP) for decentral areas.
90 solar_thermal -- {true, false} Add option for using solar thermal to generate heat.
91 solar_cf_correction -- float The correction factor for the value provided by the solar thermal profile calculations
92 marginal_cost_storage currency/MWh float The marginal cost of discharging batteries in distributed grids
93 methanation -- {true, false} Add option for transforming hydrogen and CO2 into methane using methanation.
94 coal_cc -- {true, false} Add option for coal CHPs with carbon capture
95 dac -- {true, false} Add option for Direct Air Capture (DAC)
119 hydrogen_underground _storage -- {true, false} Add options for storing hydrogen underground. Storage potential depends regionally.
120 hydrogen_underground _storage_locations {onshore, nearshore, offshore} The location where hydrogen underground storage can be located. Onshore, nearshore, offshore means it must be located more than 50 km away from the sea, within 50 km of the sea, or within the sea itself respectively.
121
122 methanol -- {true, false} -- Add methanol as carrrier and add enabled methnol technologies
123 regional_methanol_demand -- regional_methanol_demand -- {true, false} Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.
124 methanol_reforming -- methanol_reforming -- {true, false} Add methanol reforming Add methanol reforming
125 methanol_reforming_cc -- methanol_reforming_cc -- {true, false} Add methanol reforming with carbon capture Add methanol reforming with carbon capture
126 methanol_to_kerosene -- methanol_to_kerosene -- {true, false} Add methanol to kerosene Add methanol to kerosene
127 methanol_to_olefins -- methanol_to_olefins -- {true, false} Add methanol to olefins Add methanol to olefins
128 methanol_to_power -- methanol_to_power -- -- Add different methanol to power technologies Add different methanol to power technologies
129 -- ccgt -- -- ccgt -- {true, false} Add combined cycle gas turbine (CCGT) using methanol Add combined cycle gas turbine (CCGT) using methanol
130 -- ccgt_cc -- -- ccgt_cc -- {true, false} Add combined cycle gas turbine (CCGT) with carbon capture using methanol Add combined cycle gas turbine (CCGT) with carbon capture using methanol
131 -- ocgt -- -- ocgt -- {true, false} Add open cycle gas turbine (OCGT) using methanol Add open cycle gas turbine (OCGT) using methanol
132 -- allam -- -- allam -- {true, false} Add Allam cycle gas power plants using methanol Add Allam cycle gas power plants using methanol
133
134 ammonia -- {true, false, regional} Add ammonia as a carrrier. It can be either true (copperplated NH3), false (no NH3 carrier) or "regional" (regionalised NH3 without network)
135 min_part_load_fischer _tropsch per unit of p_nom float The minimum unit dispatch (``p_min_pu``) for the Fischer-Tropsch process
152 gas_network -- {true, false} Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm <https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation>`_ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.
153 H2_retrofit -- {true, false} Add option for retrofiting existing pipelines to transport hydrogen.
154 H2_retrofit_capacity _per_CH4 -- float The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The `European Hydrogen Backbone (April, 2020) p.15 <https://gasforclimate2050.eu/wp-content/uploads/2020/07/2020_European-Hydrogen-Backbone_Report.pdf>`_ 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.
155 gas_network_connectivity _upgrade -- float The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm <https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation>`_ used for the gas network
156 gas_distribution_grid -- {true, false} Add a gas distribution grid
157 gas_distribution_grid _cost_factor Multiplier for the investment cost of the gas distribution grid
158

View File

@ -155,7 +155,7 @@ def define_spatial(nodes, options):
spatial.methanol.nodes = ["EU methanol"]
spatial.methanol.locations = ["EU"]
if options["regional_methanol_demand"]:
if options["methanol"]["regional_methanol_demand"]:
spatial.methanol.demand_locations = nodes
spatial.methanol.industry = nodes + " industry methanol"
spatial.methanol.shipping = nodes + " shipping methanol"
@ -779,14 +779,9 @@ def add_allam(n, costs):
def add_biomass_to_methanol(n, costs):
if len(spatial.biomass.nodes) <= 1 and len(spatial.methanol.nodes) > 1:
link_names = nodes + " " + spatial.biomass.nodes
else:
link_names = spatial.biomass.nodes
n.madd(
"Link",
link_names,
spatial.biomass.nodes,
suffix=" biomass-to-methanol",
bus0=spatial.biomass.nodes,
bus1=spatial.methanol.nodes,
@ -806,14 +801,9 @@ def add_biomass_to_methanol(n, costs):
def add_biomass_to_methanol_cc(n, costs):
if len(spatial.biomass.nodes) <= 1 and len(spatial.methanol.nodes) > 1:
link_names = nodes + " " + spatial.biomass.nodes
else:
link_names = spatial.biomass.nodes
n.madd(
"Link",
link_names,
spatial.biomass.nodes,
suffix=" biomass-to-methanol CC",
bus0=spatial.biomass.nodes,
bus1=spatial.methanol.nodes,
@ -869,7 +859,7 @@ def add_methanol_to_power(n, costs, types={}):
logger.info("Adding methanol CCGT power plants.")
# efficiency * EUR/MW * (annuity + FOM)
capital_cost = 0.58 * 916e3 * (calculate_annuity(25, 0.07) + 0.035)
capital_cost = costs.at["CCGT", "efficiency"] * costs.at["CCGT", "fixed"]
n.madd(
"Link",
@ -882,9 +872,9 @@ def add_methanol_to_power(n, costs, types={}):
p_nom_extendable=True,
capital_cost=capital_cost,
marginal_cost=2,
efficiency=0.58,
efficiency=costs.at["CCGT", "efficiency"],
efficiency2=costs.at["methanolisation", "carbondioxide-input"],
lifetime=25,
lifetime=costs.at["CCGT", "lifetime"],
)
if types["ccgt_cc"]:
@ -895,7 +885,7 @@ def add_methanol_to_power(n, costs, types={}):
# TODO consider efficiency changes / energy inputs for CC
# efficiency * EUR/MW * (annuity + FOM)
capital_cost = 0.58 * 916e3 * (calculate_annuity(25, 0.07) + 0.035)
capital_cost = costs.at["CCGT", "efficiency"] * costs.at["CCGT", "fixed"]
capital_cost_cc = (
capital_cost
@ -915,12 +905,12 @@ def add_methanol_to_power(n, costs, types={}):
p_nom_extendable=True,
capital_cost=capital_cost_cc,
marginal_cost=2,
efficiency=0.58,
efficiency=costs.at["CCGT", "efficiency"],
efficiency2=costs.at["cement capture", "capture_rate"]
* costs.at["methanolisation", "carbondioxide-input"],
efficiency3=(1 - costs.at["cement capture", "capture_rate"])
* costs.at["methanolisation", "carbondioxide-input"],
lifetime=25,
lifetime=costs.at["CCGT", "lifetime"],
)
if types["ocgt"]:
@ -935,15 +925,11 @@ def add_methanol_to_power(n, costs, types={}):
bus2="co2 atmosphere",
carrier="OCGT methanol",
p_nom_extendable=True,
capital_cost=0.35
* 458e3
* (
calculate_annuity(25, 0.07) + 0.035
), # efficiency * EUR/MW * (annuity + FOM)
capital_cost=costs.at["OCGT", "fixed"] * costs.at["OCGT", "efficiency"],
marginal_cost=2,
efficiency=0.35,
efficiency=costs.at["OCGT", "efficiency"],
efficiency2=costs.at["methanolisation", "carbondioxide-input"],
lifetime=25,
lifetime=costs.at["OCGT", "lifetime"],
)
@ -978,7 +964,7 @@ def add_methanol_to_olefins(n, costs):
n.madd(
"Link",
spatial.methanol.locations,
nodes,
suffix=f" {tech}",
carrier=tech,
capital_cost=costs.at[tech, "fixed"] / costs.at[tech, "methanol-input"],
@ -1000,7 +986,6 @@ def add_methanol_to_olefins(n, costs):
def add_methanol_to_kerosene(n, costs):
nodes = pop_layout.index
nhours = n.snapshot_weightings.generators.sum()
nyears = nhours / 8760
demand_factor = options["aviation_demand_factor"]
@ -1022,7 +1007,7 @@ def add_methanol_to_kerosene(n, costs):
n.madd(
"Link",
spatial.methanol.locations,
spatial.h2.locations,
suffix=f" {tech}",
carrier=tech,
capital_cost=capital_cost,
@ -1041,15 +1026,13 @@ def add_methanol_to_kerosene(n, costs):
def add_methanol_reforming(n, costs):
logger.info("Adding methanol steam reforming.")
nodes = pop_layout.index
tech = "Methanol steam reforming"
capital_cost = costs.at[tech, "fixed"] / costs.at[tech, "methanol-input"]
n.madd(
"Link",
spatial.methanol.locations,
spatial.h2.locations,
suffix=f" {tech}",
bus0=spatial.methanol.nodes,
bus1=spatial.h2.nodes,
@ -1066,8 +1049,6 @@ def add_methanol_reforming(n, costs):
def add_methanol_reforming_cc(n, costs):
logger.info("Adding methanol steam reforming with carbon capture.")
nodes = pop_layout.index
tech = "Methanol steam reforming"
# TODO: heat release and electricity demand for process and carbon capture
@ -1084,7 +1065,7 @@ def add_methanol_reforming_cc(n, costs):
n.madd(
"Link",
nodes,
spatial.h2.locations,
suffix=f" {tech} CC",
bus0=spatial.methanol.nodes,
bus1=spatial.h2.nodes,
@ -2579,43 +2560,28 @@ def add_heat(n: pypsa.Network, costs: pd.DataFrame, cop: xr.DataArray):
def add_methanol(n, costs):
methanol_options = options["methanol"]
if not any(methanol_options.values()):
return
logger.info("Add methanol")
n.add("Carrier", "methanol")
n.madd(
"Bus",
spatial.methanol.nodes,
location=spatial.methanol.locations,
carrier="methanol",
unit="MWh_LHV",
)
n.madd(
"Store",
spatial.methanol.nodes,
suffix=" Store",
bus=spatial.methanol.nodes,
e_nom_extendable=True,
e_cyclic=True,
carrier="methanol",
capital_cost=0.02,
)
add_carrier_buses(n, "methanol")
if n.buses.carrier.str.contains("biomass").any():
if options["biomass_to_methanol"]:
if methanol_options["biomass_to_methanol"]:
add_biomass_to_methanol(n, costs)
if options["biomass_to_methanol"]:
if methanol_options["biomass_to_methanol"]:
add_biomass_to_methanol_cc(n, costs)
if options["methanol_to_power"]:
add_methanol_to_power(n, costs, types=options["methanol_to_power"])
if methanol_options["methanol_to_power"]:
add_methanol_to_power(n, costs, types=methanol_options["methanol_to_power"])
if options["methanol_reforming"]:
if methanol_options["methanol_reforming"]:
add_methanol_reforming(n, costs)
if options["methanol_reforming_cc"]:
if methanol_options["methanol_reforming_cc"]:
add_methanol_reforming_cc(n, costs)
@ -3398,7 +3364,7 @@ def add_industry(n, costs):
/ nhours
)
if not options["regional_methanol_demand"]:
if not options["methanol"]["regional_methanol_demand"]:
p_set_methanol = p_set_methanol.sum()
n.madd(
@ -3521,7 +3487,7 @@ def add_industry(n, costs):
* efficiency
)
if not options["regional_methanol_demand"]:
if not options["methanol"]["regional_methanol_demand"]:
p_set_methanol_shipping = p_set_methanol_shipping.sum()
n.madd(
@ -3819,7 +3785,7 @@ def add_industry(n, costs):
efficiency3=process_co2_per_naphtha,
)
if options["methanol_to_olefins"]:
if options["methanol"]["methanol_to_olefins"]:
add_methanol_to_olefins(n, costs)
# aviation
@ -3866,7 +3832,7 @@ def add_industry(n, costs):
efficiency2=costs.at["oil", "CO2 intensity"],
)
if options["methanol_to_kerosene"]:
if options["methanol"]["methanol_to_kerosene"]:
add_methanol_to_kerosene(n, costs)
# TODO simplify bus expression