Skip to content

Commit 8ace5b5

Browse files
author
Micha
authored
Merge pull request PyPSA#35 from PyPSA/landfill
allow landfill of plastics, and option for waste-to-energy
2 parents 84ef002 + d66ff3f commit 8ace5b5

File tree

2 files changed

+61
-6
lines changed

2 files changed

+61
-6
lines changed

config/config.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#run
66
run:
7-
prefix: 20240524mastrchps
7+
prefix: 20240527wasteCHP
88
name:
99
# - CurrentPolicies
1010
- KN2045_Bal_v4
@@ -259,6 +259,16 @@ industry:
259259
2040: 0.12
260260
2045: 0.16
261261
2050: 0.20
262+
HVC_environment_sequestration_fraction:
263+
2020: 0.1
264+
2025: 0.1
265+
2030: 0.12
266+
2035: 0.15
267+
2040: 0.18
268+
2045: 0.20
269+
2050: 0.20
270+
waste_to_energy: true
271+
waste_to_energy_cc: true
262272

263273

264274
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solving

workflow/scripts/export_ariadne_variables.py

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ def _get_capacities(n, region, cap_func, cap_string="Capacity|"):
215215
var[cap_string + "Electricity|Biomass"] = \
216216
var[cap_string + "Electricity|Biomass|Solids"]
217217

218+
var[cap_string + "Electricity|Non-Renewable Waste"] = \
219+
capacities_electricity.filter(like="waste CHP").sum()
218220

219221
var[cap_string + "Electricity|Coal|Hard Coal"] = \
220222
capacities_electricity.filter(like="coal").sum()
@@ -289,9 +291,6 @@ def _get_capacities(n, region, cap_func, cap_string="Capacity|"):
289291
var[cap_string + "Electricity|Hydrogen"] = \
290292
var[cap_string + "Electricity|Hydrogen|FC"]
291293

292-
# var[cap_string + "Electricity|Non-Renewable Waste"] =
293-
# ! Not implemented
294-
295294
var[cap_string + "Electricity|Nuclear"] = \
296295
capacities_electricity.get("nuclear", 0)
297296

@@ -409,6 +408,7 @@ def _get_capacities(n, region, cap_func, cap_string="Capacity|"):
409408
cap_string + "Electricity|Hydro",
410409
cap_string + "Electricity|Hydrogen",
411410
cap_string + "Electricity|Nuclear",
411+
cap_string + "Electricity|Non-Renewable Waste",
412412
]].sum()
413413

414414
# Test if we forgot something
@@ -460,6 +460,9 @@ def _get_capacities(n, region, cap_func, cap_string="Capacity|"):
460460
var[cap_string + "Heat|Biomass"],
461461
capacities_central_heat.filter(like="biomass").sum()
462462
)
463+
464+
var[cap_string + "Heat|Non-Renewable Waste"] = \
465+
capacities_central_heat.filter(like="waste CHP").sum()
463466

464467
var[cap_string + "Heat|Resistive heater"] = \
465468
capacities_central_heat.filter(like="resistive heater").sum()
@@ -507,7 +510,8 @@ def _get_capacities(n, region, cap_func, cap_string="Capacity|"):
507510
var[cap_string + "Heat|Gas"] +
508511
var[cap_string + "Heat|Processes"] +
509512
#var[cap_string + "Heat|Hydrogen"] +
510-
var[cap_string + "Heat|Heat pump"]
513+
var[cap_string + "Heat|Heat pump"] +
514+
var[cap_string + "Heat|Non-Renewable Waste"]
511515
)
512516

513517
# This check requires further changes to n.statistics
@@ -783,6 +787,20 @@ def get_primary_energy(n, region):
783787
# )
784788
# ! There are CC sub-categories that could be used
785789

790+
791+
waste_CHP_E_usage, waste_CHP_H_usage = get_CHP_E_and_H_usage(
792+
n, "non-sequestered HVC", region)
793+
794+
var["Primary Energy|Waste|Electricity"] = \
795+
waste_CHP_E_usage
796+
var["Primary Energy|Waste|Heat"] = \
797+
waste_CHP_H_usage
798+
var["Primary Energy|Waste"] = (
799+
var["Primary Energy|Waste|Electricity"]
800+
+ var["Primary Energy|Waste|Heat"]
801+
)
802+
803+
786804
coal_usage = n.statistics.withdrawal(
787805
bus_carrier=["lignite", "coal"],
788806
**kwargs,
@@ -1013,6 +1031,9 @@ def get_secondary_energy(n, region):
10131031
electricity_supply.get("H2 Fuel Cell", 0)
10141032
# ! Add H2 Turbines if they get implemented
10151033

1034+
var["Secondary Energy|Electricity|Waste"] = \
1035+
electricity_supply.filter(like="waste CHP").sum()
1036+
10161037
var["Secondary Energy|Electricity|Curtailment"] = \
10171038
n.statistics.curtailment(
10181039
bus_carrier=["AC", "low voltage"], **kwargs
@@ -1065,6 +1086,7 @@ def get_secondary_energy(n, region):
10651086
#+ var["Secondary Energy|Electricity|Transmission Losses"]
10661087
#+ var["Secondary Energy|Electricity|Storage Losses"]
10671088
+ var["Secondary Energy|Electricity|Hydrogen"]
1089+
+ var["Secondary Energy|Electricity|Waste"]
10681090
)
10691091

10701092
assert isclose(
@@ -1116,6 +1138,8 @@ def get_secondary_energy(n, region):
11161138
var["Secondary Energy|Heat|Electricity|Heat Pumps"]
11171139
+ var["Secondary Energy|Heat|Electricity|Resistive"]
11181140
)
1141+
var["Secondary Energy|Heat|Waste"] = \
1142+
heat_supply.filter(like="waste CHP").sum()
11191143
var["Secondary Energy|Heat|Other"] = \
11201144
heat_supply.reindex(
11211145
[
@@ -1127,6 +1151,7 @@ def get_secondary_energy(n, region):
11271151
]
11281152
).sum()
11291153
# TODO remember to specify in comments
1154+
11301155
var["Secondary Energy|Heat"] = (
11311156
var["Secondary Energy|Heat|Gas"]
11321157
+ var["Secondary Energy|Heat|Biomass"]
@@ -1135,6 +1160,7 @@ def get_secondary_energy(n, region):
11351160
+ var["Secondary Energy|Heat|Electricity"]
11361161
+ var["Secondary Energy|Heat|Other"]
11371162
+ var["Secondary Energy|Heat|Coal"]
1163+
+ var["Secondary Energy|Heat|Waste"]
11381164
)
11391165
assert isclose(
11401166
var["Secondary Energy|Heat"],
@@ -1563,6 +1589,16 @@ def get_final_energy(n, region, _industry_demand, _energy_totals):
15631589
# var["Final Energy|Geothermal"] = \
15641590
# ! Not implemented
15651591

1592+
waste_withdrawal = n.statistics.withdrawal(
1593+
bus_carrier=["non-sequestered HVC"],
1594+
**kwargs,
1595+
).filter(
1596+
like=region,
1597+
).groupby("carrier").sum().multiply(MWh2PJ)
1598+
1599+
var["Final Energy|Waste"] = \
1600+
waste_withdrawal.filter(like="waste CHP").sum()
1601+
15661602
var["Final Energy incl Non-Energy Use incl Bunkers"] = (
15671603
var["Final Energy|Industry"]
15681604
+ var["Final Energy|Residential and Commercial"]
@@ -1600,6 +1636,11 @@ def get_emissions(n, region, _energy_totals):
16001636
bus_carrier="co2",**kwargs
16011637
).filter(like=region).filter(like="CHP").multiply(t2Mt)
16021638

1639+
# exclude waste CHPs because they are accounted separately
1640+
CHP_emissions = CHP_emissions[
1641+
~CHP_emissions.index.get_level_values(
1642+
"carrier").str.contains("waste")]
1643+
16031644
CHP_E_to_H = (
16041645
n.links.loc[CHP_emissions.index.get_level_values("name")].efficiency
16051646
/ n.links.loc[CHP_emissions.index.get_level_values("name")].efficiency2
@@ -1794,7 +1835,11 @@ def get_emissions(n, region, _energy_totals):
17941835
).sum()
17951836

17961837
var["Emissions|CO2|Supply|Non-Renewable Waste"] = \
1797-
co2_emissions.get("naphtha for industry")
1838+
co2_emissions.reindex([
1839+
"HVC to air",
1840+
"waste CHP",
1841+
"waste CHP CC",
1842+
]).sum()
17981843

17991844
# var["Emissions|CO2|Energy|Supply|Liquids"] = \
18001845
# Our only Liquid production is Fischer-Tropsch

0 commit comments

Comments
 (0)