quintel / etmodel

Professional interface of the Energy Transition model.
https://energytransitionmodel.com/
MIT License
33 stars 14 forks source link

Chart duration of excess electricity events does not respond to changes in flexible demand #3777

Closed mabijkerk closed 3 years ago

mabijkerk commented 3 years ago

The description of the chart "Duration of excess electricity events" states the following:

If you include flexibility options in your scenario, the number of excess events decreases.

When I open a new II3050 - National governance scenario the power-to-gas capacity is at 51000 MW, and I get the following chart:

Screenshot 2021-07-28 at 13 28 54

When I then decrease the power-to-gas capacity to 0 MW, based on the chart description, I would expect the number of excess electricity events to increase, but the chart does not change:

Screenshot 2021-07-28 at 13 30 15

@antw can you help me understand how the excess electricity events in this charts are calculated, so that we can determine whether the chart has a bug or whether the description should be changed. In both cases we can pick up this chart's maintenance as part of the flex-improvement project, given that it might need some changed due to the flex-improvements anyway.

What I also noticed is that the underlying number_of_excess_events.gql query has a query called excess_event_excludes.gql. This query includes "power_to_heat_industry". As far as I know there are currently multiple power-to-heat technologies in the model, so could this query be outdated @antw? Moreover, several other flexible technologies are not included, such as large-scale batteries and underground pumped hydro storage.

antw commented 3 years ago

As far as I know, this chart shows the hours where production of electricity from must-runs and volatiles exceed the baseload demand. Electricity produced in these hours of excess may or may not be consumed by flexible technologies such as batteries.

The chart description says that adding flexibility options to the scenario will decrease the number of excess events, but I don't think this matches the implementation.

I'm not sure about the excess_event_excludes query. It's almost certainly not doing what is intended.

Internally, the calculation of excess events works like this:

  1. Create a consumption curve based on all the users in the merit order.
  2. Create a production curve based on all the producers in the merit order.
  3. Subtract them to get a net load curve.

From the net load curve, it's easy to count the number of excess events, blackouts, etc.

There are some caveats:

  1. Step 1 includes only consumption by "users". Flexibility technologies (P2P, P2H, P2G, ...) are not included: "users" are typically what we think of as "baseload demand". Energy consumed by flex technologies is therefore not included in consumption.
  2. In step 2 you can optionally provide a list of producers that should not be included in the production curve. I think this is useful for calculating loss of load events, but it's not clear to me what purpose it would serve for calculating excesses. In the excess events query, it will be excluding energy emitted by batteries from the production curve (why...? I don't know).

List of users

agriculture_geothermal
agriculture_heatpump_water_water_ts_electricity
agriculture_useful_demand_electricity
buildings_appliances_electricity
buildings_cooling_airconditioning_electricity
buildings_cooling_collective_heatpump_water_water_ts_electricity
buildings_final_demand_for_space_heating_electricity
buildings_lighting_efficient_fluorescent_electricity
buildings_lighting_led_electricity
buildings_lighting_standard_fluorescent_electricity
energy_cokesoven_consumption_coal_gas
energy_compressor_network_gas
energy_direct_air_capture_co2_electricity
energy_heat_heatpump_water_water_electricity
energy_heat_well_geothermal
energy_offshore_sequestration_co2_electricity
energy_power_hv_network_loss
energy_power_sector_own_use_electricity
energy_synthetic_products_electricity
households_cooker_halogen_electricity
households_cooker_induction_electricity
households_cooker_resistive_electricity
households_cooling_airconditioning_electricity
households_cooling_heatpump_air_water_electricity
households_cooling_heatpump_ground_water_electricity
households_final_demand_for_appliances_electricity
households_final_demand_for_hot_water_electricity
households_final_demand_for_space_heating_electricity
households_lighting_efficient_fluorescent_electricity
households_lighting_incandescent_electricity
households_lighting_led_electricity
industry_aluminium_carbothermalreduction_electricity
industry_aluminium_electrolysis_bat_electricity
industry_aluminium_electrolysis_current_electricity
industry_aluminium_smeltoven_electricity
industry_chemicals_fertilizers_captured_combustion_co2_electricity
industry_chemicals_fertilizers_captured_processes_co2_electricity
industry_chemicals_other_heater_electricity
industry_chemicals_other_heatpump_water_water_electricity
industry_chemicals_other_steam_recompression_electricity
industry_final_demand_for_other_ict_electricity
industry_final_demand_for_other_non_specified_electricity
industry_heat_well_geothermal
industry_other_food_captured_co2_electricity
industry_other_food_heater_electricity
industry_other_metals_process_electricity
industry_other_paper_captured_co2_electricity
industry_other_paper_heater_electricity
industry_steel_blastfurnace_bat_consumption_useable_heat
industry_steel_blastfurnace_captured_co2_electricity
industry_steel_blastfurnace_current_consumption_useable_heat
industry_steel_electricfurnace_captured_co2_electricity
industry_steel_electricfurnace_electricity
industry_steel_hisarna_captured_co2_electricity
industry_steel_hisarna_consumption_useable_heat
industry_useful_demand_for_chemical_fertilizers_electricity
industry_useful_demand_for_chemical_other_electricity
industry_useful_demand_for_chemical_refineries_electricity
industry_useful_demand_for_other_food_electricity
industry_useful_demand_for_other_paper_electricity
other_final_demand_electricity
transport_bicycle_using_electricity
transport_bus_using_electricity
transport_car_using_electricity
transport_freight_train_using_electricity
transport_motorcycle_using_electricity
transport_passenger_train_using_electricity
transport_tram_using_electricity
transport_truck_using_electricity

List of producers

buildings_solar_pv_solar_radiation
energy_chp_combined_cycle_network_gas
energy_chp_local_engine_biogas
energy_chp_local_engine_network_gas
energy_chp_local_wood_pellets
energy_chp_supercritical_waste_mix
energy_chp_ultra_supercritical_coal
energy_chp_ultra_supercritical_cofiring_coal
energy_chp_ultra_supercritical_lignite
energy_flexibility_curtailment_electricity
energy_flexibility_hv_opac_electricity
energy_flexibility_mv_batteries_electricity
energy_flexibility_pumped_storage_electricity
energy_heat_flexibility_p2h_boiler_electricity
energy_heat_flexibility_p2h_heatpump_electricity
energy_hydrogen_flexibility_p2g_electricity
energy_interconnector_1_exported_electricity
energy_interconnector_1_imported_electricity
energy_interconnector_2_exported_electricity
energy_interconnector_2_imported_electricity
energy_interconnector_3_exported_electricity
energy_interconnector_3_imported_electricity
energy_interconnector_4_exported_electricity
energy_interconnector_4_imported_electricity
energy_interconnector_5_exported_electricity
energy_interconnector_5_imported_electricity
energy_interconnector_6_exported_electricity
energy_interconnector_6_imported_electricity
energy_power_combined_cycle_ccs_coal
energy_power_combined_cycle_ccs_network_gas
energy_power_combined_cycle_coal
energy_power_combined_cycle_hydrogen
energy_power_combined_cycle_network_gas
energy_power_engine_diesel
energy_power_engine_network_gas
energy_power_geothermal
energy_power_hydro_mountain
energy_power_hydro_river
energy_power_nuclear_gen2_uranium_oxide
energy_power_nuclear_gen3_uranium_oxide
energy_power_solar_csp_solar_radiation
energy_power_solar_pv_solar_radiation
energy_power_supercritical_coal
energy_power_supercritical_waste_mix
energy_power_turbine_hydrogen
energy_power_turbine_network_gas
energy_power_ultra_supercritical_ccs_coal
energy_power_ultra_supercritical_coal
energy_power_ultra_supercritical_cofiring_coal
energy_power_ultra_supercritical_crude_oil
energy_power_ultra_supercritical_lignite
energy_power_ultra_supercritical_network_gas
energy_power_ultra_supercritical_oxyfuel_ccs_lignite
energy_power_wind_turbine_coastal
energy_power_wind_turbine_inland
energy_power_wind_turbine_offshore
households_flexibility_p2p_electricity
households_solar_pv_solar_radiation
industry_chemicals_other_flexibility_p2h_hydrogen_electricity
industry_chemicals_other_flexibility_p2h_network_gas_electricity
industry_chemicals_refineries_flexibility_p2h_hydrogen_electricity
industry_chemicals_refineries_flexibility_p2h_network_gas_electricity
industry_chp_combined_cycle_gas_power_fuelmix
industry_chp_engine_gas_power_fuelmix
industry_chp_turbine_gas_power_fuelmix
industry_chp_ultra_supercritical_coal
industry_chp_wood_pellets
industry_other_food_flexibility_p2h_hydrogen_electricity
industry_other_food_flexibility_p2h_network_gas_electricity
industry_other_paper_flexibility_p2h_hydrogen_electricity
industry_other_paper_flexibility_p2h_network_gas_electricity
transport_car_flexibility_p2p_electricity
mabijkerk commented 3 years ago

Thanks for looking into it! Based on your description I would say that this chart can indeed do with some maintenance (or at least critical review).

First though, I suggest that we decide in the flex-improvements project what we want this chart to show, and whether to keep it at all.

mabijkerk commented 3 years ago

this chart shows the hours where production of electricity from must-runs and volatiles exceed the baseload demand. Electricity produced in these hours of excess may or may not be consumed by flexible technologies such as batteries.

This means that the number of excess electricity events should not be affected by the inclusion of flexibility options. Perhaps something like 'unused excess electricity' was originally intended, but my preference would go to your interpretation of the chart @antw.

We also have a corresponding dashboard value for hours of excess electricity per year. @michieldenhaan / @ChaelKruip would you be in favour of keeping this chart and/or the dashboard value?

mabijkerk commented 3 years ago

If we decide to keep this in, I think we have to change the calculation of excess electricity events due to the changes in flex modelling:

If we define an excess electricity event as an hour where inflexible supply (must-run + volatile) exceeds inflexible demand (baseload, or 'users') then in the current modelling subtracting baseload demand from total production would have worked. In the new modelling however, this is no longer the case since flexible supply is no longer only used to supply inflexible demand, but can also supply flexible demand. This means that there can be hours where flexible supply exceeds inflexible demand that would then be counted as an excess electricity event.

michieldenhaan commented 3 years ago

I would prefer to keep this simple and just have a chart (and dashboard item) showing the number of hours / duration of events where residual load is negative (so where inflexible supply is greater than inflexible demand). Such a chart would not be affected by the use of flexible demand/supply technologies (as these are not part of residual load). The use of flexible demand / flexible supply technologies and how this relates to residual demand can then be seen in other charts (the new chart we are adding and a few existing ones we are revising).

The term 'excess electricity' may not be entirely fitting anymore in the new modelling, but if we explain it well I would prefer it over more complicated terms like 'negative residual load'

mabijkerk commented 3 years ago

In conclusion:

@antw is it possible for you to change the calculation of excess events? As I understand it this calculation of excess events is done independent of the number_of_excess_events query? This would mean that I can review the query after this calculation has been updated, and decide whether it makes sense to keep excess_event_excludes.

antw commented 3 years ago

This is done on the price-sensitive-flex ETEngine branch.

When calculating excess events, the residual load curve is calculating using only the "always-on" (inflexible) production. This means that production from flexible producers is no longer considered.

mabijkerk commented 3 years ago

@antw for all flexible demand technologies the update seems to work, except for the power-to-heat for district heating technologies.

The expectation is that when I add flexible demand technologies to a scenario with excess events, the number of excess event should be unaffected. This is the case for p2p, p2g and p2h for industry, but not for p2h for district heating. For a blank nl 2015 on the price-sensitive-flex branches, when I add 11 GW of offshore wind I get 725 excess event per year. When I then add 2 GW of energy_heat_flexibility_p2h_boiler_electricity the number of excess events decreases to 717 per year.

Could it be the case that power-to-heat for district heating is seen as a 'user'? When I install capacity for power-to-heat for district heating the hourly values for V(CARRIER(electricity), demand_curve) increase, even though as I understand it that curve should only include inflexible demand (i.e. demand from 'users').

antw commented 3 years ago

Could it be the case that power-to-heat for district heating is seen as a 'user'?

P2H is definitely not being classed as a user on the price-sensitive-flex branches. The difference in demand is due to an increase in HV loss when P2H conversion technologies are installed.

These inputs change the node's preset_demand (see: boiler input, heat pump input), which in turn causes an increase in electricity demand; resulting in HV loss also increasing.

It's not clear to me why the inputs do this, as Merit will set the P2H demand after running. Perhaps it was to make these nodes useful in scenarios where Merit is disabled? However, for scenarios with Merit enabled updating preset demand serves no purpose and can be safely removed without any effect on energy flows with the upside that HV loss, and therefore demand and excess events, remain constant.

@marliekeverweij Can you shed any light on the reasoning for updating preset demand?

mabijkerk commented 3 years ago

Due to the inclusion of the preset_demand update statement the power-to-heat sliders did indeed have an effect with merit turned off. This is in contrast to the other flexible demand technologies, which had no effect with merit turned off.

After internal discussion it is decided that the preset_demand can be removed from the update statement. The reasoning is that users that do not want to concern themselves with the effects of the merit order, also likely do not want to concern themselves with flex. Additionally, for power-to-heat with a heat pump, those users can also go to the district heating section.

This fixes the excess electricity events chart on the price-sensitive-flex branches and closes this issue.

ChaelKruip commented 3 years ago

Nice work @mabijkerk!