Skip to content

Commit a0ba5e9

Browse files
author
Jon Vegard Venås
authored
Enhance/descriptive names (#43)
* Use EMG v0.11.3 to resolve a bug resolved in its PR http://EnergyModelsX/EnergyModelsGeography.jl#45 * Enabled exporting topo axis to bmp, tif, tiff, jpg, jpeg, and png file format. * Adjusted `descriptive_names` to be more robust to available packages. Introduced module names as intermediate `Dict`s in the `structures` field of `descriptive_names` (this is a breaking change). * Enable custom boundary background map instead of the default coastlines (through a `.geojson` file location provided by the keyword argument `map_boundary_file` in the `GUI`-function).
1 parent 51c0e35 commit a0ba5e9

15 files changed

Lines changed: 335 additions & 245 deletions

NEWS.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Release notes
22

3+
## Version 0.6.0 (2025-12-15)
4+
5+
### Bugfix
6+
7+
* Added missing descriptive names for the variables `emissions_link`, `link_opex_var`, `link_opex_fixed` and `emissions_trans`.
8+
9+
### Enhancements
10+
11+
* Enabled exporting topo axis to bmp, tif, tiff, jpg, jpeg, and png file format.
12+
* Enable custom boundary background map instead of the default coastlines (through a `.geojson` file location provided by the keyword argument `map_boundary_file` in the `GUI`-function).
13+
14+
### Adjustments
15+
16+
* Adjusted `descriptive_names` to be more robust to available packages. Introduced module names as intermediate `Dict`s in the `structures` field of `descriptive_names` (this is a breaking change).
17+
318
## Version 0.5.18 (2025-11-24)
419

520
### Bugfix

Project.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "EnergyModelsGUI"
22
uuid = "737a7361-d3b7-40e9-b1ac-59bee4c5ea2d"
3-
version = "0.5.18"
4-
authors = ["Jon Vegard Venås <JonVegard.Venas@sintef.no>", "Magnus Askeland <Magnus.Askeland@sintef.no>", "Shweta Tiwari <Shweta.Tiwari@sintef.no>"]
3+
version = "0.6.0"
4+
authors = ["Jon Vegard Venås <JonVegard.Venas@sintef.no>", "Dimitri Pinel <Dimitri.Pinel@sintef.no>", "Magnus Askeland <Magnus.Askeland@sintef.no>", "Shweta Tiwari <Shweta.Tiwari@sintef.no>"]
55

66
[deps]
77
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
@@ -41,7 +41,7 @@ Colors = "0.13"
4141
DataFrames = "1"
4242
Dates = "1"
4343
EnergyModelsBase = "0.9"
44-
EnergyModelsGeography = "0.11"
44+
EnergyModelsGeography = "0.11.3"
4545
EnergyModelsInvestments = "0.8"
4646
FileIO = "1"
4747
GLMakie = "0.13"

docs/src/library/public.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@ GUI
2020
save_results
2121
set_colors
2222
set_icons
23+
create_descriptive_names
24+
get_descriptive_names
2325
```

examples/generate_examples.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,6 @@ function get_sub_system_data(
483483
Dict(CO2 => 1, Power => 0.02), # Input resource with input ratio
484484
# Line above: This implies that storing CO2 requires Power
485485
Dict(CO2 => 1), # Output from the node with output ratio
486-
# In practice, for CO₂ storage, this is never used.
487-
Data[],
488486
),
489487
RefSink(
490488
j + 7, # Node id

src/EnergyModelsGUI.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ export EnergySystemDesign
8787
export set_colors
8888
export set_icons
8989
export save_results
90+
export create_descriptive_names, get_descriptive_names
9091

9192
end # module

src/descriptive_names.yml

Lines changed: 120 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,132 +1,122 @@
11
# This file contains description of EMX element fields (and potential sub-fields) and variables
2-
# with fields of type TimeStruct.TimeProfile
2+
# with fields of type TimeStruct.TimeProfile and fields that cannot be inherited
3+
# from supertypes.
34
structures:
4-
# EnergyModelsBase
5-
## node.jl
6-
AbstractStorageParameters:
7-
capacity: "Installed capacity"
8-
opex_var: "Relative variable operating expense per energy unit"
9-
opex_fixed: "Relative fixed operating expense per installed capacity"
10-
11-
Node:
12-
cap: "Installed capacity"
13-
opex_var: "Relative variable operating expense per energy unit produced"
14-
opex_fixed: "Relative fixed operating expense per installed capacity"
15-
16-
Sink:
17-
cap: "Demand"
18-
penalty:
19-
surplus: "Penalties for surplus"
20-
deficit: "Penalties for deficits"
21-
22-
# EnergyModelsGeography
23-
## mode.jl
24-
TransmissionMode:
25-
trans_cap: "Capacity of the transmission mode"
26-
trans_loss: "Relative loss of the transported resource during transmission"
27-
opex_var: "Relative variable operating expense per energy unit transported"
28-
opex_fixed: "Relative fixed operating expense per installed capacity"
29-
consumption_rate: "Rate at which the resource is consumed, as a ratio of the volume of the resource going into the inlet"
30-
31-
# EnergyModelsInvestment
5+
EnergyModelsBase:
6+
## node.jl
7+
AbstractStorageParameters:
8+
capacity: "Installed capacity"
9+
opex_var: "Relative variable operating expense per energy unit"
10+
opex_fixed: "Relative fixed operating expense per installed capacity"
11+
12+
Node:
13+
cap: "Installed capacity"
14+
opex_var: "Relative variable operating expense per energy unit produced"
15+
opex_fixed: "Relative fixed operating expense per installed capacity"
16+
17+
Sink:
18+
cap: "Demand"
19+
penalty:
20+
surplus: "Penalties for surplus"
21+
deficit: "Penalties for deficits"
22+
23+
## data.jl
24+
EmissionsData:
25+
emissions: "The process emissions per capacity usage through the variable `:cap_use`"
26+
27+
EnergyModelsGeography:
28+
TransmissionMode:
29+
## mode.jl
30+
trans_cap: "Capacity of the transmission mode"
31+
trans_loss: "Relative loss of the transported resource during transmission"
32+
opex_var: "Relative variable operating expense per energy unit transported"
33+
opex_fixed: "Relative fixed operating expense per installed capacity"
34+
consumption_rate: "Rate at which the resource is consumed, as a ratio of the volume of the resource going into the inlet"
35+
36+
EnergyModelsInvestments:
3237
## investment_data.jl
33-
AbstractInvData:
34-
capex: "Capital costs for investing in a capacity"
35-
max_inst: "Maximum installed capacity in a strategic period"
36-
initial: "Initial capacity in the first strategic period"
37-
38-
## investment_mode.jl
39-
Investment:
40-
min_add: "Minimum added capacity in a strategic period"
41-
max_add: "Maximum added capacity in a strategic period"
42-
increment: "Used increment for discrete investments"
43-
capex_offset: "Offset for the CAPEX in a strategic period"
44-
FixedInvestment:
45-
cap: "Capacity used for the fixed investments"
46-
47-
BinaryInvestment:
48-
cap: "Capacity used for the binary investments"
49-
50-
## lifetime_mode.jl
51-
LifetimeMode:
52-
lifetime: "Chosen lifetime of the technology"
53-
54-
# EnergyModelsRenewableProducers
55-
## datastructures.jl
56-
AbstractNonDisRES:
57-
profile: "Power production profile as a ratio of installed capacity"
58-
59-
HydroStorage:
60-
level_init: "Initial stored energy in the dam"
61-
level_inflow: "Inflow of power per operational period"
62-
level_min: "Minimum fraction of the reservoir capacity required"
63-
64-
ScheduleConstraint:
65-
value: "The constraint value not to be violated"
66-
flag: "Boolean value indicating if the constraint is active"
67-
penalty: "Penalty for violating the constraint"
68-
69-
HydroReservoir:
70-
vol_inflow: "Water inflow to the reservoir"
71-
72-
HydroGate:
73-
cap: "Installed discharge capacity"
74-
opex_var: "Variable operational costs per water flow"
75-
opex_fixed: "Fixed operational costs"
76-
77-
HydroUnit:
78-
opex_var: "Variable operational costs per energy unit produced"
79-
opex_fixed: "Fixed operational costs"
80-
81-
HydroGenerator:
82-
cap: "Installed discharge or power capacity"
83-
84-
HydroPump:
85-
cap: "Installed pumping capacity"
86-
87-
AbstractBatteryLife:
88-
stack_cost: "Relative cost for replacing a battery stack"
89-
90-
# EnergyModelsHeat
91-
## link.jl
92-
DHPipe:
93-
cap: "Heat transport capacity of the pipe"
94-
t_ground: "Ground temperature in °C"
95-
96-
## node.jl
97-
HeatPump:
98-
t_source: "Heat source temperature"
99-
t_sink: "Heat sink temperature"
100-
eff_carnot: "Carnot Efficiency"
101-
102-
## resource.jl
103-
ResourceHeat:
104-
t_supply: "Supply temperature in °C"
105-
t_return: "Return temperature in °C"
106-
107-
# EnergyModelsHydrogen
108-
## node.jl
109-
AbstractElectrolyzer:
110-
opex_var: "Variable operating expense per capacity used"
111-
stack_replacement_cost: "Replacement cost of electrolyzer stacks"
112-
113-
CommitParameters:
114-
opex: "Operating cost per installed capacity and operational duration"
115-
time: "Minimum time node must remain in a state before transitioning"
116-
117-
AbstractRampParameters:
118-
up: "Maximum positive rate of change of a node"
119-
down: "Maximum negative rate of change of a node"
120-
121-
# EnergyModelsCO2
122-
CO2Source:
123-
opex_var: "Variable operating expense per energy unit produced"
124-
125-
RefNetworkNodeRetrofit:
126-
opex_var: "Variable operating expense per energy unit produced"
127-
128-
CCSRetroFit:
129-
opex_var: "Variable operating expense per unit of CO₂ captured"
38+
AbstractInvData:
39+
capex: "Capital costs for investing in a capacity"
40+
max_inst: "Maximum installed capacity in a strategic period"
41+
initial: "Initial capacity in the first strategic period"
42+
43+
## investment_mode.jl
44+
Investment:
45+
min_add: "Minimum added capacity in a strategic period"
46+
max_add: "Maximum added capacity in a strategic period"
47+
increment: "Used increment for discrete investments"
48+
capex_offset: "Offset for the CAPEX in a strategic period"
49+
50+
FixedInvestment:
51+
cap: "Capacity used for the fixed investments"
52+
53+
BinaryInvestment:
54+
cap: "Capacity used for the binary investments"
55+
56+
## lifetime_mode.jl
57+
LifetimeMode:
58+
lifetime: "Chosen lifetime of the technology"
59+
60+
EnergyModelsRenewableProducers:
61+
## datastructures.jl
62+
AbstractNonDisRES:
63+
profile: "Power production profile as a ratio of installed capacity"
64+
65+
HydroStorage:
66+
level_init: "Initial stored energy in the dam"
67+
level_inflow: "Inflow of power per operational period"
68+
level_min: "Minimum fraction of the reservoir capacity required"
69+
70+
ScheduleConstraint:
71+
value: "The constraint value not to be violated"
72+
flag: "Boolean value indicating if the constraint is active"
73+
penalty: "Penalty for violating the constraint"
74+
75+
HydroReservoir:
76+
vol_inflow: "Water inflow to the reservoir"
77+
78+
HydroGate:
79+
cap: "Installed discharge capacity"
80+
opex_var: "Variable operational costs per water flow"
81+
opex_fixed: "Fixed operational costs"
82+
83+
HydroUnit:
84+
opex_var: "Variable operational costs per energy unit produced"
85+
opex_fixed: "Fixed operational costs"
86+
87+
HydroGenerator:
88+
cap: "Installed discharge or power capacity"
89+
90+
HydroPump:
91+
cap: "Installed pumping capacity"
92+
93+
AbstractBatteryLife:
94+
stack_cost: "Relative cost for replacing a battery stack"
95+
96+
EnergyModelsHydrogen:
97+
## node.jl
98+
AbstractElectrolyzer:
99+
opex_var: "Variable operating expense per capacity used"
100+
stack_replacement_cost: "Replacement cost of electrolyzer stacks"
101+
102+
CommitParameters:
103+
opex: "Operating cost per installed capacity and operational duration"
104+
time: "Minimum time node must remain in a state before transitioning"
105+
106+
AbstractRampParameters:
107+
up: "Maximum positive rate of change of a node"
108+
down: "Maximum negative rate of change of a node"
109+
110+
EnergyModelsCO2:
111+
## datastructures.jl
112+
CO2Source:
113+
opex_var: "Variable operating expense per energy unit produced"
114+
115+
RefNetworkNodeRetrofit:
116+
opex_var: "Variable operating expense per energy unit produced"
117+
118+
CCSRetroFit:
119+
opex_var: "Variable operating expense per unit of CO₂ captured"
130120

131121

132122
variables:
@@ -148,11 +138,14 @@ variables:
148138
emissions_node: "Emission of a node"
149139
emissions_total: "Total strategic emissions"
150140
emissions_strategic: "Total emissions"
141+
emissions_link: "Emissions of a link"
151142
opex_var: "Absolute variable operating expenses"
152143
opex_fixed: "Absolute fixed operating expenses"
153144
sink_surplus: "Surplus delivered to a sink, i.e., oversatisfied demand"
154145
sink_deficit: "Deficit in a sink, i.e., not satisfied demand"
155146
link_cap_inst: "Installed capacity"
147+
link_opex_var: "Variable operating expenses"
148+
link_opex_fixed: "Fixed operating expenses"
156149

157150
# EnergyModelsGeography
158151
area_exchange: "Area exchange"
@@ -165,6 +158,7 @@ variables:
165158
trans_neg: "Negative loss during transmission"
166159
trans_pos: "Positive loss during transmission"
167160
linepack_stor_level: "Storage level in linepack"
161+
emissions_trans: "Emissions of a transmission mode"
168162

169163
# EnergyModelsInvestment
170164
cap_capex: "Absolute CAPEX for investments in the capacity of a technology"
@@ -216,9 +210,6 @@ variables:
216210
bat_res_up: "Upwards reserve of battery storage"
217211
bat_res_down: "Downwards reserve of battery storage"
218212

219-
# EnergyModelsHeat
220-
dh_pipe_loss: "Heat losses in DH pipes"
221-
222213
# EnergyModelsHydrogen
223214
ref_off_b: "Binary variable indicating if the reformer is in the 'off' state"
224215
ref_start_b: "Binary variable indicating if the reformer is in the 'start-up' state"

0 commit comments

Comments
 (0)