Skip to content

Heat pump revisions for regional datasets - #3477

Draft
kndehaan wants to merge 32 commits into
heat-pump-analysisfrom
regional-heat-pump-analysis-update
Draft

Heat pump revisions for regional datasets#3477
kndehaan wants to merge 32 commits into
heat-pump-analysisfrom
regional-heat-pump-analysis-update

Conversation

@kndehaan

Copy link
Copy Markdown
Member

Context

Implemented changes

Related

Closes issue ...

Goes with pull requests #3472

Checklist

  • I have tested these changes
  • I have updated documentation as needed
  • I have tagged the relevant people for review

jort-wolda and others added 30 commits August 21, 2026 13:25
In this push are 5 new input sliders:
- New buildings (priority 2)
- Demolished buildings (priority 2)
- Insulation new buildings (priority 1)
- Insulation existing buildings (priority 1)
- Buildings heating behaviour (priority 0)

The old input keys are still there and are untouched.
Added a start value to share of new buildings per building type based on existing stock:
Created seperate queries in which the starting values are calculated

Changed the step value to 0.1 instead of 1 for:
Shares of new buildings
Shares of demolished buildings

Wrote descriptions for following inputs:
Shares of new buildings
Shares of demolished buildings

Chaned priorities:
Total_numbers 2 to 3
Shares of new/demolished 3 to 4

Wrote a demolished V2a, which is longer than V2 but it rounds number_of_units to integers. Also made sure to round to integers in V3
Also, changed priorities to accomodate for settings_weather_curves_set.ac
The priority of the market share is 0 so it is set after all housing stock sliders. The number of units in the start year is always 0 as well. The reference to the households p2p can therefore be removed from all housing stock sliders. The QUERY FUTURE did not work, so it is replaced by referring to INPUT VALUES and AREA attributes.
@kndehaan
kndehaan changed the base branch from master to heat-pump-analysis August 21, 2026 13:05
@kndehaan

Copy link
Copy Markdown
Member Author

Due to a mismatch between how efficiencies of heat pumps for hot water are set in the national (full) dataset and regional (derived) datasets, an imbalance arises in the energy graph, which breaks the model.

  • Regional dataset use the same efficiency for both heat pumps used for space heating and hot water. So the hybrid heat pump for hot water for example uses the efficiency of the same technology for space heating (see households_final_demand_for_hot_water_electricity-households_water_heater_hybrid_heatpump_air_water_electricity@electricity+parent_share). Hybrid heat pump for hot water therefore consume electricity in the regional datasets.
  • For the national dataset, the hot water heat pump efficiency can be set separately from the space heating technology. In Heat pump revisions for nl2023 #3472, households_water_heater_hybrid_heatpump_air_water_electricity_efficiency.csv is updated so that it only requires network gas. In the national dataset, the hybrid heat pump does not consume electricity.
  • This goes wrong in the sparse graph query (SGQ) households_water_heater_hybrid_heatpump_air_water_electricity+input (see below), where the input of electricity, network_gas, and ambient_heat is determined. ambient_relative_to_elec in this SGQ divides 0 with 0, resulting in NaN. The IF statement at the then sets the efficiencies to the same value as the parent dataset. This results in the mismatch in flows in the energy graph.
elec_tj = DATASET_INPUT(households_final_demand_electricity_demand) * DATASET_INPUT(households_final_demand_electricity_households_final_demand_for_hot_water_electricity_parent_share) * SPARSE_GRAPH_QUERY("households_final_demand_for_hot_water_electricity-households_water_heater_hybrid_heatpump_air_water_electricity@electricity", parent_share);
ambient_relative_to_elec = NODE_EFFICIENCY(households_water_heater_hybrid_heatpump_air_water_electricity, input, ambient_heat) / NODE_EFFICIENCY(households_water_heater_hybrid_heatpump_air_water_electricity, input, electricity);
ambient_tj = elec_tj * ambient_relative_to_elec;
gas_tj = DATASET_INPUT(households_final_demand_network_gas_demand) * DATASET_INPUT(households_final_demand_network_gas_households_final_demand_for_hot_water_network_gas_parent_share) * SPARSE_GRAPH_QUERY("households_final_demand_for_hot_water_network_gas-households_water_heater_hybrid_heatpump_air_water_electricity@network_gas", parent_share);
total_heat = elec_tj + ambient_tj + gas_tj;

    IF(total_heat > 0.0, {
        electricity: elec_tj / total_heat,
        network_gas: gas_tj / total_heat,
        ambient_heat: ambient_tj / total_heat}, {
        electricity: NODE_EFFICIENCY(households_water_heater_hybrid_heatpump_air_water_electricity, input, electricity),
        network_gas: NODE_EFFICIENCY(households_water_heater_hybrid_heatpump_air_water_electricity, input, network_gas),
        ambient_heat: NODE_EFFICIENCY(households_water_heater_hybrid_heatpump_air_water_electricity, input, ambient_heat)}
        )

We need to discuss further how to approach this problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants