Skip to content

Custom curve flhs #3223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Custom curve flhs #3223

wants to merge 5 commits into from

Conversation

kaskranenburgQ
Copy link
Contributor

@kaskranenburgQ kaskranenburgQ commented Mar 5, 2025

This PR aims to close #3119.

It does so by updating the flh inputs for geothermal, solar thermal and hydro technologies.
Please note that the produced energy of each of the technologies in the input statements will change with the flh's expect for buildings_space_heater_solar_thermal & households_water_heater_solar_thermal, since the energy production of these technologies is set via share inputs and not via a combintion of capaicty and flh's.

@mabijkerk
Copy link
Member

@kaskranenburgQ will this change model results? If so, we cannot merge it without discussing it with our clients.

@kndehaan
Copy link
Contributor

kndehaan commented Mar 7, 2025

Just did a quick scan of the changes. In addition to Mathijs' question and remark, I think we also need to write a migration, since the inputs that will be deleted with this PR can be set in scenarios... Let's discuss in the sprint.

@kaskranenburgQ
Copy link
Contributor Author

In the modeler sprint we discussed whether a scenario migration was necessary for the changes that were made in these inputs. We concluded that an investigation about the current working of the input statements was necessary: Do these inputs work when you set them in the backend? And do they work when we upload a curve?

I found that the input statement does work. If set:
flh_of_geothermal_heat: 1000 in a blank nl2019 scenario on master, I see that the full load hours of the node agriculture_geothermal will be changed to 1000.0:
Screenshot 2025-03-11 at 11 40 57

However, when I then upload a capacity profile via the front-end:

Screenshot 2025-03-11 at 11 45 25

The flh setting is removed from the inputs:
Screenshot 2025-03-11 at 11 46 02

And the full load hours of agriculture_geothermal is reverted back to it's orginal value:
Screenshot 2025-03-11 at 11 46 22

To conclude:

  • The flh inputs work as a back-end input
  • Uploading a curve is not functional and resets the input when it is set.
  • Therefore there is a great chance that users who 'accidentally' have set the input have overwritten the input with a curve.
  • We should check if this is the case.

@louispt1
Copy link
Contributor

I had a look at the scenarios through the server. I couldn't always parse the user_inputs for older scenarios for this hash serialisation issue for some of the values, especially in older scenarios:
Tried to load unspecified class: Rational (Psych::DisallowedClass)

But from the scenarios which I could check, and definitely for all the scenarios in the etengine pro backup, none of these inputs are set:

  • flh_of_solar_thermal
  • flh_of_geothermal_heat
  • flh_of_hydro_river

@kndehaan
Copy link
Contributor

kndehaan commented Mar 14, 2025

The user curve for hydro river works as it should!

There's an issue in the geothermal and solar thermal user curve in scenarios where there's already installed capacity of related technologies in the start year. For example, take the a blank EU27 scenario and upload custom curves for solar thermal and geothermal. This correctly changes the full load hours, but incorrectly updates the number of units and incorrectly doesn't affect the production output, see example below for two technologies.

image

I think this is because the flh_..._user_curve input should include a correction where the original NoU is set and preset demand is updated based production_based_on_number_of_units, just like the other flh inputs. In the electricity production technologies, this is done with preset_demand_by_electricity_production. For steam hot water production, this method doesn't exist.

Is there another way to tackle this with the methods we already have? Or do we need to create this method for steam hot water as well? @kaskranenburgQ @mabijkerk

@kaskranenburgQ
Copy link
Contributor Author

Great catch!
Let's discuss this with @mabijkerk.

@kaskranenburgQ
Copy link
Contributor Author

Based on the PR of @louispt1 (quintel/etengine#1537), I have added the preset_demand_by_steam_hot_water_production update in the user curve inputs. While testing I found the following points:

  1. I have implemented the input statement based on 'production_based_on_number_of_units'. This does not work since this function in turn is based on the typical_electricity_production_per_unit. For hydrogen producers (i.e. for energy_hydrogen_electrolysis_solar_electricity in the input flh_of_solar_pv_solar_radiation) we use hydrogen_production_based_on_number_of_units. In order to be able to update the preset_demand_by_steam_hot_water_production correctly, I propose we also add a function 'steam_hot_water_production_based_on_number_of_untis.
  2. While uploading a curve for solar thermal a huge flow from energy to heat occurs, see picture below:
    Energy flow overview 1289457 (1), it could be that this occurs due to the issue described in point 1. We should check whether this still occurs when the fix for point is implemented.

@louispt1 Could you add this in your PR? Then I will change the inputs to accomodate this change.

@louispt1
Copy link
Contributor

@kaskranenburgQ I've added the method, untested except for the pre-existing spec: quintel/etengine@b62b037
Let me know if there are any issues!

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.

Solar thermal and geothermal custom curve full load hours don't work
4 participants