Merge pull request #890 from PyPSA/air-hp-rural

add air-sourced heat pumps to rural areas
This commit is contained in:
Fabian Neumann 2024-01-24 10:15:01 +01:00 committed by GitHub
commit da1e2862b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 20 deletions

View File

@ -28,8 +28,12 @@ Upcoming Release
* Cluster residential and services heat buses by default. Can be disabled with ``cluster_heat_buses: false``. * Cluster residential and services heat buses by default. Can be disabled with ``cluster_heat_buses: false``.
* Air-sourced heat pumps can now also be built in rural areas. Previously, only
ground-sourced heat pumps were considered for this category.
* Bugfix: Correctly read out number of solver threads from configuration file. * Bugfix: Correctly read out number of solver threads from configuration file.
PyPSA-Eur 0.9.0 (5th January 2024) PyPSA-Eur 0.9.0 (5th January 2024)
================================== ==================================

View File

@ -1803,28 +1803,29 @@ def add_heat(n, costs):
## Add heat pumps ## Add heat pumps
heat_pump_type = "air" if "urban" in name else "ground" heat_pump_types = ["air"] if "urban" in name else ["ground", "air"]
costs_name = f"{name_type} {heat_pump_type}-sourced heat pump" for heat_pump_type in heat_pump_types:
efficiency = ( costs_name = f"{name_type} {heat_pump_type}-sourced heat pump"
cop[heat_pump_type][nodes[name]] efficiency = (
if options["time_dep_hp_cop"] cop[heat_pump_type][nodes[name]]
else costs.at[costs_name, "efficiency"] if options["time_dep_hp_cop"]
) else costs.at[costs_name, "efficiency"]
)
n.madd( n.madd(
"Link", "Link",
nodes[name], nodes[name],
suffix=f" {name} {heat_pump_type} heat pump", suffix=f" {name} {heat_pump_type} heat pump",
bus0=nodes[name], bus0=nodes[name],
bus1=nodes[name] + f" {name} heat", bus1=nodes[name] + f" {name} heat",
carrier=f"{name} {heat_pump_type} heat pump", carrier=f"{name} {heat_pump_type} heat pump",
efficiency=efficiency, efficiency=efficiency,
capital_cost=costs.at[costs_name, "efficiency"] capital_cost=costs.at[costs_name, "efficiency"]
* costs.at[costs_name, "fixed"], * costs.at[costs_name, "fixed"],
p_nom_extendable=True, p_nom_extendable=True,
lifetime=costs.at[costs_name, "lifetime"], lifetime=costs.at[costs_name, "lifetime"],
) )
if options["tes"]: if options["tes"]:
n.add("Carrier", name + " water tanks") n.add("Carrier", name + " water tanks")