quintel / etsource

Data source for the Energy Transition Model
https://energytransitionmodel.com/
MIT License
12 stars 8 forks source link

Custom hourly profile doesn't work anymore for offshore wind #3069

Closed kndehaan closed 2 months ago

kndehaan commented 3 months ago

The modify hourly profiles functionality shows some bugs in processing the custom uploaded curve and downloading this again.

When uploading a flat profile for offshore wind, the chart "Modifiable profiles" is updated and the electricity_output_curve of the offshore wind node (regular or hybrid) is also updated. It generates a lower hourly output than expected:

With an installed capacity of 10 GW for hybrid offshore wind and flat profile of 0.5, availability of 0.97, I would expect an hourly output of either 5 GW (if availability is not directly accounted for) or 4.85 GW. The output is however ~ 4.4 GW.

Furthermore, when downloading the uploaded file again, the file shows oddly low numbers of the custom profile: 3.17E-08, 3.17E-08, 3.17E-08, ...

Also mentioned here https://github.com/quintel/etsource/pull/3067#issuecomment-2173387006

kndehaan commented 3 months ago

It seems that some changes in the hybrid offshore wind project caused the custom curve upload tool to malfunction. I've fixed part of the problem on the custom-curve branche in ETSource: https://github.com/quintel/etsource/tree/custom-curve

When I now upload a flat profile (for instance 0.5, 0.5, 0.5,... the full load hours and production capacity of energy_power_wind_turbine_offshore and energy_power_hybrid_wind_turbine_offshore seems to be updated as expected. However, when I upload a flat profile with a relatively low fraction (0.1, 0.1, 0.1,...), the full load hours and profile of energy_power_wind_turbine_offshore are updated. For energy_power_hybrid_wind_turbine_offshore only the profile is updated, but the total full load hours are not.

It seems that the full load hours of energy_power_hybrid_wind_turbine_offshore are only updated when the total full load hours (summation of the uploaded profile) are higher than the number of full load hours of the default year. This is tested by uploading a flat profile that sums up to 3733 full load hours per year and a profile of 3734 hours per year. The full load hours do not update with the first profile, whereas they do update with the second profile. Nr of full load hours in the default year are 3,733.54231974922 (nl2019).

I don't understand yet why energy_power_wind_turbine_offshore and energy_power_hybrid_wind_turbine_offshore do not update through the same method and why the hybrid offshore wind turbines will only update when the new full load hours are higher than the initial... I'll try to figure this out, but perhaps you already have an idea @mabijkerk ?

Final point of attention: full load hours of dedicated offshore wind for hydrogen production are not updated yet with the custom curve for offshore wind.

  1. Do we want the full load hours of dedicated offshore wind to be updated with the custom curve of offshore wind? To me, it would seem logical, but this decision also depends on the following two questions.
  2. Currently, full load hours of dedicated offshore wind are not the same as full load hours of 'normal' offshore wind. Is there a reason for this and shouldn't this be the same value?
  3. Currently, there's a separate slider for flh of dedicated offshore wind, is this desirable? shouldn't this 'fall' under one generic slider for offshore wind flh?
kndehaan commented 3 months ago

Ok the reason that the full load hours of energy_power_hybrid_wind_turbine_offshore don't always update has something to do with the min and max value of flh_of_energy_power_wind_turbine_offshore I think:

- max_value = 6500.0
- min_value_gql = present:V(energy_power_wind_turbine_offshore, full_load_hours)

The flh don't want to be uploaded below the initial flh. Also, when I update a flat profile that sums up to 6501 flh, it updates its full load hours to 6500:

EACH(
  V(energy_power_wind_turbine_offshore, full_load_hours),
  V(energy_power_hybrid_wind_turbine_offshore, full_load_hours)
)

Gives:

[
  6,501.0000028800005,
  6,500.0
]

I still have to figure out how/why it goes wrong exactly.

UPDATED: I can't seem to work it out how to solve this final step... @mabijkerk would be great if you could have a look here.

kndehaan commented 2 months ago

In addition to this issue: when downloading an uploaded profile of e.g. wind, you obtain a CSV where all values add up to 1/3600 (type: profile) whereas if you want to upload a CSV to set this profile, it needs to be set that all values add up to the full load hours (type: capacity_profile). It would be desirable to get the downloaded profile in the format that can directly be uploaded, so we should change the downloaded CSV to type: capacity_profile.

kndehaan commented 2 months ago

Updated issue name since the issue entails that uploading a custom profile for offshore wind doesn't work anymore. I think this is since implementations for the hybrid offshore wind project and something in this configuration is not working properly.

This issue also arrises when using scenario-tools to upload a custom offshore wind profile (the scenario-tools script breaks and abruptly stops).

mabijkerk commented 2 months ago

@kndehaan in an initial version of the hybrid offshore wind turbine we had a dedicated slider for its full load hours. In the end, we removed that slider, but it seems like we forgot to remove its reference in the user_curves.yml. I updated the user_curves.yml and it all seems to work now.

This issue contains a lot of information. Can you check whether we can close it now, or whether we should open another issue?

kndehaan commented 2 months ago

Issue is solved by fixing redundant flh hyrbid offshore wind and typo in flh of hybrid offshore wind.