add extra bus for HVC, which can either go to air or waste CHP

Here we explicitly add the option to generate energy and/or capture
the CO2 from HVC (i.e. plastics). NB: Since waste CHP is expensive,
it's not built.
This commit is contained in:
Tom Brown 2024-03-01 18:39:15 +01:00 committed by Fabian Neumann
parent f7dc8a7f22
commit 2055fe68ef
2 changed files with 88 additions and 12 deletions

View File

@ -668,6 +668,7 @@ industry:
2045: 0.16 2045: 0.16
2050: 0.20 2050: 0.20
HVC_environment_sequestration_fraction: 0. HVC_environment_sequestration_fraction: 0.
waste_to_energy: false
sector_ratios_fraction_future: sector_ratios_fraction_future:
2020: 0.0 2020: 0.0
2025: 0.1 2025: 0.1
@ -1152,3 +1153,6 @@ plotting:
DC-DC: "#8a1caf" DC-DC: "#8a1caf"
DC link: "#8a1caf" DC link: "#8a1caf"
load: "#dd2e23" load: "#dd2e23"
waste CHP: '#e3d37d'
waste CHP CC: '#e3d3ff'
HVC to air: 'k'

View File

@ -2905,18 +2905,90 @@ def add_industry(n, costs):
investment_year, investment_year,
) )
n.madd( if snakemake.config["industry"]["waste_to_energy"] and options["regional_oil_demand"]:
"Link",
spatial.oil.naphtha, n.madd(
bus0=spatial.oil.nodes, "Bus",
bus1=spatial.oil.naphtha, spatial.oil.demand_locations + " non-sequestered HVC",
bus2="co2 atmosphere", location=spatial.oil.demand_locations,
bus3=spatial.co2.process_emissions, carrier="non-sequestered HVC",
carrier="naphtha for industry", unit="MWh_LHV",
p_nom_extendable=True, )
efficiency2=emitted_co2_per_naphtha * non_sequestered,
efficiency3=process_co2_per_naphtha, n.madd(
) "Link",
spatial.oil.naphtha,
bus0=spatial.oil.nodes,
bus1=spatial.oil.naphtha,
bus2=spatial.oil.demand_locations + " non-sequestered HVC",
bus3=spatial.co2.process_emissions,
carrier="naphtha for industry",
p_nom_extendable=True,
efficiency2=non_sequestered*emitted_co2_per_naphtha/costs.at["oil", "CO2 intensity"],
efficiency3=process_co2_per_naphtha,
)
n.madd(
"Link",
spatial.oil.demand_locations + " HVC to air",
bus0=spatial.oil.demand_locations + " non-sequestered HVC",
bus1="co2 atmosphere",
carrier="HVC to air",
p_nom_extendable=True,
efficiency=costs.at["oil", "CO2 intensity"],
)
#TODO add heat
n.madd(
"Link",
spatial.oil.demand_locations + " waste CHP",
bus0=spatial.oil.demand_locations + " non-sequestered HVC",
bus1=spatial.oil.demand_locations,
bus2="co2 atmosphere",
carrier="waste CHP",
p_nom_extendable=True,
# p_nom=biomass_potential['municipal solid waste'] / 8760,
capital_cost=costs.at['waste CHP', 'fixed'] * costs.at['waste CHP', 'efficiency'],
marginal_cost=costs.at['waste CHP', 'VOM'],
efficiency=costs.at['waste CHP', 'efficiency'],
#efficiency4=costs.at['waste CHP', 'efficiency-heat'],
efficiency2=costs.at['oil', 'CO2 intensity'],
lifetime=costs.at['waste CHP', 'lifetime'])
#TODO add heat
n.madd(
"Link",
spatial.oil.demand_locations + " waste CHP CC",
bus0=spatial.oil.demand_locations + " non-sequestered HVC",
bus1=spatial.oil.demand_locations,
bus2="co2 atmosphere",
bus3=spatial.co2.nodes,
carrier="waste CHP CC",
p_nom_extendable=True,
# p_nom=biomass_potential['municipal solid waste'] / 8760,
capital_cost=costs.at['waste CHP CC', 'fixed'] * costs.at['waste CHP CC', 'efficiency'],
marginal_cost=costs.at['waste CHP CC', 'VOM'],
efficiency=costs.at['waste CHP CC', 'efficiency'],
#efficiency4=costs.at['waste CHP', 'efficiency-heat'],
efficiency2=costs.at['oil', 'CO2 intensity']*(1 - options["cc_fraction"]),
efficiency3=costs.at['oil', 'CO2 intensity']*options["cc_fraction"],
lifetime=costs.at['waste CHP CC', 'lifetime'])
else:
n.madd(
"Link",
spatial.oil.naphtha,
bus0=spatial.oil.nodes,
bus1=spatial.oil.naphtha,
bus2="co2 atmosphere",
bus3=spatial.co2.process_emissions,
carrier="naphtha for industry",
p_nom_extendable=True,
efficiency2=emitted_co2_per_naphtha*non_sequestered,
efficiency3=process_co2_per_naphtha,
)
# aviation # aviation
demand_factor = options.get("aviation_demand_factor", 1) demand_factor = options.get("aviation_demand_factor", 1)