Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Release notes

## Version 0.6.1 (2025-12-17)

### Enhancements

* Improved testing of `descriptive_names` and added more names from other packages.
* Improved documentation.


## Version 0.6.0 (2025-12-15)

### Bugfix
Expand Down
2 changes: 2 additions & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ makedocs(;
"Customize colors"=>"how-to/customize-colors.md",
"Customize icons"=>"how-to/customize-icons.md",
"Customize descriptive_names"=>"how-to/customize-descriptive_names.md",
"Improve performance"=>"how-to/improve-performance.md",
"Use custom backgroun map"=>"how-to/use-custom-background-map.md",
],
"Library" => Any[
"Public"=>"library/public.md",
Expand Down
Binary file added docs/src/figures/NUTS2_illustration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 12 additions & 11 deletions docs/src/how-to/customize-descriptive_names.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

`EnergyModelsGUI` provides a set of descriptive names for case input structures and assosiated JuMP variables.
These can be found in `src/descriptive_names.yml`. These descriptions are extended/overwritten with EMX
packages having a `descriptive_names.yml` file in a `ext/EMGUIExt` folder of its repository. That is,
if you want to provide descriptive names for your EMX package, add a `.yml` file in this location, with the
same structure as `src/descriptive_names.yml`.
packages having a `descriptive_names.yml` file in a `ext/EMGUIExt` folder of its repository (having a module
name starting with `EnergyModel`). That is, if you want to provide descriptive names for your EMX package,
add a `.yml` file in this location, with the same structure as `src/descriptive_names.yml`.

It can be convenient to provide a user defined file in addition.
If you have this file located at `path_to_descriptive_names`, simply add it using
Expand All @@ -18,13 +18,15 @@ If you instead (or in addition) want to provide descriptive names through a `Dic
```julia
descriptive_names_dict = Dict(
:structures => Dict( # Input parameter from the case Dict
:RefStatic => Dict(
:trans_cap => "New description for `trans_cap`",
:opex_fixed => "New description for `opex_fixed`",
),
:RefDynamic => Dict(
:opex_var => "New description for `opex_var`",
:directions => "New description for `directions`",
:EnergyModelsGeography => Dict( # Input parameter from the case Dict
:RefStatic => Dict(
:trans_cap => "New description for `trans_cap`",
:opex_fixed => "New description for `opex_fixed`",
),
:RefDynamic => Dict(
:opex_var => "New description for `opex_var`",
:directions => "New description for `directions`",
),
),
),
:variables => Dict( # variables from the JuMP model
Expand All @@ -34,7 +36,6 @@ descriptive_names_dict = Dict(
)
gui = GUI(
case;
path_to_descriptive_names=path_to_descriptive_names,
descriptive_names_dict=descriptive_names_dict,
)
```
Expand Down
31 changes: 31 additions & 0 deletions docs/src/how-to/improve-performance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# [Improve performance](@id how_to-improve_performance)

Due to the just-in-time (JIT) compilation of Julia, the instantiation of the `EnergyModelsGUI` window takes some time (but reopening the window will take less time).
This also includes interactive features in the GUI (creating the first plot is a lot slower than creating subsequent plots).

That being said, it is possible to boost startup time by turning of redundant features.
One can for example plot sub-areas only on demand (which for large system significantly reduces setup of the `GUI`) through

```julia
gui = GUI(case; pre_plot_sub_components = false)
```

If there is no need to use the background map when using `EnergyModelsGeography` one can skip the usage of `GeoMakie` (this will also increase performance)

```julia
gui = GUI(case; use_geomakie = false)
```

If the user do not see any usage of the `DataInspector` tool provided by `Makie` (which enables information of plot objects upon hovering with the mouse) one could use the `enable_data_inspector` toogle to further improve performance

```julia
gui = GUI(case; enable_data_inspector = false)
```

It is also possible to use a simplified plotting of the `Link`s/`Transmission`s using the `simplified_connection_plotting` which improves performance slightly.
This option is however more motivated by simplified visuals.
One can also use `simplify_all_levels` to have this simplified plotting on all levels (not just the top level).

```julia
gui = GUI(case; simplified_connection_plotting = true, simplify_all_levels = true)
```
13 changes: 13 additions & 0 deletions docs/src/how-to/use-custom-background-map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# [Use custom backgruond map](@id how_to-use_custom_backgruond_map)

The GUI enables user defined background maps in `.geojson` format through the `GUI` constructor parameter `String::map_boundary_file`. One could for example download NUTS boundaries as GeoJSON from [datahub.io](https://datahub.io/core/geo-nuts-administrative-boundaries), save this file at a desired location and use this file path as `map_boundary_file`.

Downloading [NUTS2](https://r2.datahub.io/clt98mkvt000ql70811z8xj6l/main/raw/data/NUTS_RG_60M_2024_4326_LEVL_2.geojson), one can with a EMX-case variable `case`

```julia
gui = GUI(case; map_boundary_file = joinpath(@__DIR__, "NUTS_RG_60M_2024_4326_LEVL_2.geojson"))
```

get something like

![NUTS2 illustration](../figures/NUTS2_illustration.png)
41 changes: 41 additions & 0 deletions src/descriptive_names.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,30 @@ structures:
AbstractBatteryLife:
stack_cost: "Relative cost for replacing a battery stack"

EnergyModelsHeat:
## link.jl
DHPipe:
cap: "Heat transport capacity of the pipe"
t_ground: "Ground temperature in °C"

## node.jl
HeatPump:
t_source: "Heat source temperature"
t_sink: "Heat sink temperature"
eff_carnot: "Carnot Efficiency"

## resource.jl
ResourceHeat:
t_supply: "Supply temperature in °C"
t_return: "Return temperature in °C"

PinchData:
T_SH_hot: "Hot temperature of surplus heat source in °C"
T_SH_cold: "Cold temperature of surplus heat source in °C"
ΔT_min: "Minimum temperature difference between surplus source and DH network in °C"
T_DH_hot: "Hot temperature of district heating network in °C"
T_DH_cold: "Cold temperature of district heating network in °C"

EnergyModelsHydrogen:
## node.jl
AbstractElectrolyzer:
Expand Down Expand Up @@ -227,6 +251,23 @@ variables:
# EnergyModelsCO2
stor_level_Δ_sp: "Increase in `stor_level` during a strategic period"

# EnergyModelsHeat
dh_pipe_loss: "Heat losses in DH pipes"

# EnergyModelsLanguageInterface
buildings_surplus: "Surplus delivered to a sink, i.e., oversatisfied demand"
buildings_deficit: "Deficit in a sink, i.e., not satisfied demand"
solar_curtailment: "Curtailment of a solar energy source"
solar_cap_use: "Absolute capacity utilization"

# EnergyModelsFlex
input_frac_strat: "Input resource fraction"
load_shift_from: "Load shift from"
load_shift_to: "Load shift to"
load_shifted: "Load shifted"
sink_surplus_p: "Penalties for surplus of resource"
sink_deficit_p: "Penalties for deficits of resource"

# Overview of total quantities and their components
total:
opex_fields:
Expand Down
4 changes: 4 additions & 0 deletions test/Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
[deps]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
EnergyModelsBase = "5d7e687e-f956-46f3-9045-6f5a5fd49f50"
EnergyModelsCO2 = "84b3f4d7-d799-4a5d-b06c-25c90dcfcad7"
EnergyModelsGeography = "3f775d88-a4da-46c4-a2cc-aa9f16db6708"
EnergyModelsHeat = "ad1b8b27-e232-4da9-b498-bea9c19a30d7"
EnergyModelsHydrogen = "44855f8b-b147-4985-ac18-48817d03c548"
EnergyModelsInvestments = "fca3f8eb-b383-437d-8e7b-aac76bb2004f"
EnergyModelsRenewableProducers = "b007c34f-ba52-4995-ba37-fffe79fbde35"
HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b"
Expand All @@ -10,6 +13,7 @@ JuliaFormatter = "98e50ef6-434e-11e9-1051-2b60c6c9e899"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
SCIP = "82193955-e24f-5292-bf16-6f2c5261a85f"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TimeStruct = "f9ed5ce0-9f41-4eaa-96da-f38ab8df101c"
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
15 changes: 15 additions & 0 deletions test/design/example_all_structures/Coal area.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
n_Reg_1-CO2_storage_geo:
y: 46.26174
x: 5.0772
n_Reg_1-Coal_source:
y: 46.26174
x: 6.92496
n_Reg_1-Coal_power_plant:
y: 45.17195
x: 5.29398
n_Reg_1-Electricity_demand:
y: 46.87906
x: 6.00108
n_Reg_1-Availability:
y: 45.87906
x: 6.00108
129 changes: 129 additions & 0 deletions test/design/example_all_structures/Natural gas area.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
n_CO2_storage_big:
y: 45.76981
x: 8.47282
n_Reg_2-NG_source:
y: 44.80648
x: 8.57883
n_heat_demand:
y: 46.08825
x: 10.21651
"n_hydrogen storage":
y: 45.4147
x: 8.44048
n_CO2_storage_small:
y: 46.27751
x: 9.99404
n_ss_inv_electricity_demand:
y: 46.1934
x: 10.11129
"n_reserve down demand":
y: 46.42308
x: 10.07954
n_market_buy:
y: 45.46697
x: 9.71667
n_hydro_pump:
y: 44.64628
x: 10.23688
n_balancing_source:
y: 46.04724
x: 8.55851
n_hydro_generator_down:
y: 44.32898
x: 10.13109
n_water_source:
y: 45.57435
x: 10.76056
n_hydro_av:
y: 45.53768
x: 9.8735
n_heat_pump:
y: 46.3376
x: 9.41381
n_hydro_generator_up:
y: 45.1698
x: 10.21044
n_wind_simple:
y: 46.2075
x: 8.45478
n_ss_electricity_demand:
y: 45.7621
x: 10.07954
n_hub-h2_demand:
y: 45.86594
x: 10.2105
n_battery:
y: 46.42614
x: 9.93808
n_CCGT_retrofittable:
y: 45.60759
x: 8.69229
n_PEM:
y: 45.21135
x: 8.43592
n_ocean:
y: 43.95617
x: 10.14167
n_TES:
y: 46.49982
x: 9.57916
n_market_sale:
y: 45.4147
x: 10.22099
n_ss_electricity_source:
y: 45.94354
x: 8.45164
n_hub-electricity_source:
y: 45.00822
x: 8.48167
n_district_heat_source:
y: 46.50915
x: 9.30152
n_NG_source_for_CCGT:
y: 45.59557
x: 8.45479
n_hub:
y: 45.57898
x: 9.28942
n_ss_inv_electricity_source:
y: 46.33006
x: 8.52708
n_h2_demand_reformer:
y: 45.65866
x: 10.20449
n_Reg_2-Availability:
y: 45.3385
x: 9.42555
n_CCS_unit:
y: 45.73977
x: 8.69229
n_CO2_source_negative:
y: 46.44946
x: 8.67481
n_hydro_reservoir_up:
y: 45.17244
x: 10.54897
n_reformer:
y: 46.58908
x: 9.83352
n_Reg_2-ng+CCS_power_plant:
y: 44.70925
x: 9.43732
n_electricity_demand_big:
y: 45.94706
x: 10.09024
n_hydropower_simple:
y: 46.5186
x: 8.94828
n_hydro_gate:
y: 44.90462
x: 10.5442
n_Reg_2-Electricity_demand:
y: 44.89218
x: 9.73437
n_CO2_storage_reformer_sink:
y: 46.58908
x: 10.08261
n_hydro_reservoir_down:
y: 44.61719
x: 10.50137
6 changes: 6 additions & 0 deletions test/design/example_all_structures/top_level.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
"Coal area":
y: 45.87906
x: 6.00108
"Natural gas area":
y: 45.3385
x: 9.42555
Loading
Loading