adress review comments
This commit is contained in:
parent
0b0de7ba77
commit
25f6c014e7
@ -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
|
||||
|
@ -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
|
||||
,,,
|
||||
|
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user