From 90819b1cea81d5b83d1e2081066f130799824040 Mon Sep 17 00:00:00 2001 From: Kas Kranenburg Date: Mon, 3 Mar 2025 12:29:43 +0100 Subject: [PATCH 1/3] Updating solar thermal and geothermal custom curve flh inputs --- config/energy_node_positions.yml | 2 +- config/user_curves.yml | 3 +++ .../full_load_hours/flh_of_geothermal_heat.ad | 25 ++++++++++++++++++- .../flh_of_geothermal_heat_user_curve.ad | 21 ++++++++++++++++ inputs/full_load_hours/flh_of_hydro_river.ad | 20 ++++++++++++++- .../flh_of_hydro_river_user_curve.ad | 15 +++++++++++ .../full_load_hours/flh_of_solar_thermal.ad | 24 +++++++++++++++++- .../flh_of_solar_thermal_user_curve.ad | 19 ++++++++++++++ 8 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad create mode 100644 inputs/full_load_hours/flh_of_hydro_river_user_curve.ad create mode 100644 inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad diff --git a/config/energy_node_positions.yml b/config/energy_node_positions.yml index f5420220a2..857dc292a2 100644 --- a/config/energy_node_positions.yml +++ b/config/energy_node_positions.yml @@ -1042,7 +1042,7 @@ energy_heat_well_shallow_heatpump_mt_geothermal: "y": 5280 energy_heat_well_shallow_lt_geothermal: x: 6060 - "y": 4500 + "y": 4380 energy_hydrogen_after_distribution: x: 5200 "y": 7220 diff --git a/config/user_curves.yml b/config/user_curves.yml index c7a4eb3b1d..32bea517df 100644 --- a/config/user_curves.yml +++ b/config/user_curves.yml @@ -654,6 +654,7 @@ weather/solar_thermal: as: full_load_hours sets: - flh_of_solar_thermal + - flh_of_solar_thermal_user_curve geothermal_heat: type: capacity_profile @@ -662,6 +663,7 @@ geothermal_heat: as: full_load_hours sets: - flh_of_geothermal_heat + - flh_of_geothermal_heat_user_curve river: type: capacity_profile @@ -670,6 +672,7 @@ river: as: full_load_hours sets: - flh_of_hydro_river + - flh_of_hydro_river_user_curve weather/air_temperature: type: temperature diff --git a/inputs/full_load_hours/flh_of_geothermal_heat.ad b/inputs/full_load_hours/flh_of_geothermal_heat.ad index 6ba17155ab..25aea0a6d6 100644 --- a/inputs/full_load_hours/flh_of_geothermal_heat.ad +++ b/inputs/full_load_hours/flh_of_geothermal_heat.ad @@ -1,4 +1,27 @@ -- query = UPDATE(V(energy_heat_well_geothermal, industry_heat_well_geothermal, agriculture_geothermal), full_load_hours, USER_INPUT()) +# This input updates the FLH's of geothermal heat. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + IF( + EQUALS(AREA(weather_curve_set), "default"), + -> { + EACH( + UPDATE(V(energy_heat_well_shallow_lt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_deep_ht_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_deep_mt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_shallow_heatpump_mt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(industry_heat_well_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(agriculture_geothermal), full_load_hours, USER_INPUT()) + ) + }, + -> {}, + ) + - priority = 3 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(agriculture_geothermal, full_load_hours) +- step_value = 1.0 - unit = hours - update_period = future diff --git a/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad b/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad new file mode 100644 index 0000000000..77c72815bc --- /dev/null +++ b/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad @@ -0,0 +1,21 @@ +# This input updates the FLH's of geothermal heat. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + EACH( + UPDATE(V(energy_heat_well_shallow_lt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_deep_ht_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_deep_mt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_well_shallow_heatpump_mt_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(industry_heat_well_geothermal), full_load_hours, USER_INPUT()), + UPDATE(V(agriculture_geothermal), full_load_hours, USER_INPUT()) + ) + +- priority = 1 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(agriculture_geothermal, full_load_hours) +- step_value = 1.0 +- unit = hours +- update_period = future diff --git a/inputs/full_load_hours/flh_of_hydro_river.ad b/inputs/full_load_hours/flh_of_hydro_river.ad index cf7140cecb..8bb1c8585f 100644 --- a/inputs/full_load_hours/flh_of_hydro_river.ad +++ b/inputs/full_load_hours/flh_of_hydro_river.ad @@ -1,4 +1,22 @@ -- query = UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()) +# This input updates the FLH's of hydro river. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + IF( + EQUALS(AREA(weather_curve_set), "default"), + -> { + EACH( + UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()) + ) + }, + -> {}, + ) + - priority = 3 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(energy_power_hydro_river, full_load_hours) +- step_value = 1.0 - unit = hours - update_period = future diff --git a/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad new file mode 100644 index 0000000000..39f0b4171f --- /dev/null +++ b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad @@ -0,0 +1,15 @@ +# This input updates the FLH's of hydro river. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + EACH( + UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()), + ) +- priority = 1 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(energy_power_hydro_river, full_load_hours) +- step_value = 1.0 +- unit = hours +- update_period = future diff --git a/inputs/full_load_hours/flh_of_solar_thermal.ad b/inputs/full_load_hours/flh_of_solar_thermal.ad index 0143cb0f04..0b31aa602c 100644 --- a/inputs/full_load_hours/flh_of_solar_thermal.ad +++ b/inputs/full_load_hours/flh_of_solar_thermal.ad @@ -1,4 +1,26 @@ -- query = UPDATE(V(energy_heat_solar_thermal, buildings_space_heater_solar_thermal, households_water_heater_solar_thermal), full_load_hours, USER_INPUT()) +# This input updates the FLH's of solar thermal. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + IF( + EQUALS(AREA(weather_curve_set), "default"), + -> { + EACH( + UPDATE(V(energy_heat_solar_ht_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_solar_lt_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_solar_mt_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(buildings_space_heater_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(households_water_heater_solar_thermal), full_load_hours, USER_INPUT()) + ) + }, + -> {}, + ) + - priority = 3 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(households_water_heater_solar_thermal, full_load_hours) +- step_value = 1.0 - unit = hours - update_period = future diff --git a/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad b/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad new file mode 100644 index 0000000000..79e49567ee --- /dev/null +++ b/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad @@ -0,0 +1,19 @@ +# This input updates the FLH's of solar thermal. +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. +# You can see this in the user_curves.yml. + +- query = + EACH( + UPDATE(V(energy_heat_solar_ht_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_solar_lt_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(energy_heat_solar_mt_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(buildings_space_heater_solar_thermal), full_load_hours, USER_INPUT()), + UPDATE(V(households_water_heater_solar_thermal), full_load_hours, USER_INPUT()) + ) +- priority = 1 +- max_value = 8760.0 +- min_value = 0.0 +- start_value_gql = present:V(households_water_heater_solar_thermal, full_load_hours) +- step_value = 1.0 +- unit = hours +- update_period = future From 69864fbcf741add65ef3a160cadbcbf87c9dc71a Mon Sep 17 00:00:00 2001 From: Kas Kranenburg Date: Mon, 3 Mar 2025 17:37:16 +0100 Subject: [PATCH 2/3] Removing unnecessary flh inputs --- config/user_curves.yml | 3 --- .../full_load_hours/flh_of_geothermal_heat.ad | 27 ------------------- inputs/full_load_hours/flh_of_hydro_river.ad | 22 --------------- .../flh_of_hydro_river_user_curve.ad | 3 +++ .../full_load_hours/flh_of_solar_thermal.ad | 26 ------------------ 5 files changed, 3 insertions(+), 78 deletions(-) delete mode 100644 inputs/full_load_hours/flh_of_geothermal_heat.ad delete mode 100644 inputs/full_load_hours/flh_of_hydro_river.ad delete mode 100644 inputs/full_load_hours/flh_of_solar_thermal.ad diff --git a/config/user_curves.yml b/config/user_curves.yml index 32bea517df..be5317438e 100644 --- a/config/user_curves.yml +++ b/config/user_curves.yml @@ -653,7 +653,6 @@ weather/solar_thermal: reduce: as: full_load_hours sets: - - flh_of_solar_thermal - flh_of_solar_thermal_user_curve geothermal_heat: @@ -662,7 +661,6 @@ geothermal_heat: reduce: as: full_load_hours sets: - - flh_of_geothermal_heat - flh_of_geothermal_heat_user_curve river: @@ -671,7 +669,6 @@ river: reduce: as: full_load_hours sets: - - flh_of_hydro_river - flh_of_hydro_river_user_curve weather/air_temperature: diff --git a/inputs/full_load_hours/flh_of_geothermal_heat.ad b/inputs/full_load_hours/flh_of_geothermal_heat.ad deleted file mode 100644 index 25aea0a6d6..0000000000 --- a/inputs/full_load_hours/flh_of_geothermal_heat.ad +++ /dev/null @@ -1,27 +0,0 @@ -# This input updates the FLH's of geothermal heat. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. - -- query = - IF( - EQUALS(AREA(weather_curve_set), "default"), - -> { - EACH( - UPDATE(V(energy_heat_well_shallow_lt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_deep_ht_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_deep_mt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_shallow_heatpump_mt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(industry_heat_well_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(agriculture_geothermal), full_load_hours, USER_INPUT()) - ) - }, - -> {}, - ) - -- priority = 3 -- max_value = 8760.0 -- min_value = 0.0 -- start_value_gql = present:V(agriculture_geothermal, full_load_hours) -- step_value = 1.0 -- unit = hours -- update_period = future diff --git a/inputs/full_load_hours/flh_of_hydro_river.ad b/inputs/full_load_hours/flh_of_hydro_river.ad deleted file mode 100644 index 8bb1c8585f..0000000000 --- a/inputs/full_load_hours/flh_of_hydro_river.ad +++ /dev/null @@ -1,22 +0,0 @@ -# This input updates the FLH's of hydro river. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. - -- query = - IF( - EQUALS(AREA(weather_curve_set), "default"), - -> { - EACH( - UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()) - ) - }, - -> {}, - ) - -- priority = 3 -- max_value = 8760.0 -- min_value = 0.0 -- start_value_gql = present:V(energy_power_hydro_river, full_load_hours) -- step_value = 1.0 -- unit = hours -- update_period = future diff --git a/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad index 39f0b4171f..058aade567 100644 --- a/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad +++ b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad @@ -3,8 +3,11 @@ # You can see this in the user_curves.yml. - query = + original_nou = V(energy_power_hydro_river, number_of_units); EACH( UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()), + UPDATE(V(energy_power_hydro_river), number_of_units, original_nou), + UPDATE(V(energy_power_hydro_river), preset_demand_by_electricity_production, V(energy_power_hydro_river, production_based_on_number_of_units)), ) - priority = 1 - max_value = 8760.0 diff --git a/inputs/full_load_hours/flh_of_solar_thermal.ad b/inputs/full_load_hours/flh_of_solar_thermal.ad deleted file mode 100644 index 0b31aa602c..0000000000 --- a/inputs/full_load_hours/flh_of_solar_thermal.ad +++ /dev/null @@ -1,26 +0,0 @@ -# This input updates the FLH's of solar thermal. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. - -- query = - IF( - EQUALS(AREA(weather_curve_set), "default"), - -> { - EACH( - UPDATE(V(energy_heat_solar_ht_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_solar_lt_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_solar_mt_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(buildings_space_heater_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(households_water_heater_solar_thermal), full_load_hours, USER_INPUT()) - ) - }, - -> {}, - ) - -- priority = 3 -- max_value = 8760.0 -- min_value = 0.0 -- start_value_gql = present:V(households_water_heater_solar_thermal, full_load_hours) -- step_value = 1.0 -- unit = hours -- update_period = future From 89d3124800868cddffb6773342c7bea6edb0b1e9 Mon Sep 17 00:00:00 2001 From: Kyra de Haan Date: Wed, 12 Mar 2025 17:18:43 +0100 Subject: [PATCH 3/3] Minor changes in structure --- .../flh_of_geothermal_heat_user_curve.ad | 27 ++++++++++--------- .../flh_of_hydro_river_user_curve.ad | 9 ++++--- .../flh_of_solar_thermal_user_curve.ad | 26 ++++++++++-------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad b/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad index 77c72815bc..37a1329f74 100644 --- a/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad +++ b/inputs/full_load_hours/flh_of_geothermal_heat_user_curve.ad @@ -1,17 +1,20 @@ -# This input updates the FLH's of geothermal heat. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. +# This input updates the FLHs of geothermal heat +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve +# You can see this in the user_curves.yml -- query = - EACH( - UPDATE(V(energy_heat_well_shallow_lt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_deep_ht_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_deep_mt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_well_shallow_heatpump_mt_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(industry_heat_well_geothermal), full_load_hours, USER_INPUT()), - UPDATE(V(agriculture_geothermal), full_load_hours, USER_INPUT()) +- query = + UPDATE( + V( + energy_heat_well_shallow_lt_geothermal, + energy_heat_well_deep_ht_geothermal, + energy_heat_well_deep_mt_geothermal, + energy_heat_well_shallow_heatpump_mt_geothermal, + industry_heat_well_geothermal, + agriculture_geothermal + ), + full_load_hours, + USER_INPUT() ) - - priority = 1 - max_value = 8760.0 - min_value = 0.0 diff --git a/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad index 058aade567..682594f15f 100644 --- a/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad +++ b/inputs/full_load_hours/flh_of_hydro_river_user_curve.ad @@ -1,9 +1,10 @@ -# This input updates the FLH's of hydro river. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. +# This input updates the FLHs of hydro river +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve +# You can see this in the user_curves.yml -- query = +- query = original_nou = V(energy_power_hydro_river, number_of_units); + EACH( UPDATE(V(energy_power_hydro_river), full_load_hours, USER_INPUT()), UPDATE(V(energy_power_hydro_river), number_of_units, original_nou), diff --git a/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad b/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad index 79e49567ee..9a2df277fd 100644 --- a/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad +++ b/inputs/full_load_hours/flh_of_solar_thermal_user_curve.ad @@ -1,15 +1,19 @@ -# This input updates the FLH's of solar thermal. -# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve. -# You can see this in the user_curves.yml. +# This input updates the FLHs of solar thermal +# These FLH inputs are not listed in the front-end, but is automatically triggered when a user uploads the corresponding custom curve +# You can see this in the user_curves.yml -- query = - EACH( - UPDATE(V(energy_heat_solar_ht_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_solar_lt_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(energy_heat_solar_mt_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(buildings_space_heater_solar_thermal), full_load_hours, USER_INPUT()), - UPDATE(V(households_water_heater_solar_thermal), full_load_hours, USER_INPUT()) - ) +- query = + UPDATE( + V( + energy_heat_solar_ht_solar_thermal, + energy_heat_solar_lt_solar_thermal, + energy_heat_solar_mt_solar_thermal, + buildings_space_heater_solar_thermal, + households_water_heater_solar_thermal + ), + full_load_hours, + USER_INPUT() + ) - priority = 1 - max_value = 8760.0 - min_value = 0.0