From 180d62d75f3e6d3787e5e16198ea28bf3178ad41 Mon Sep 17 00:00:00 2001 From: Julian Straus Date: Wed, 25 Mar 2026 12:25:52 +0100 Subject: [PATCH 1/2] Minor changes to documentation --- docs/src/nodes/availability.md | 2 +- docs/src/nodes/networknode.md | 4 ++-- docs/src/nodes/sink.md | 2 +- docs/src/nodes/source.md | 4 ++-- docs/src/nodes/storage.md | 4 ++-- src/model.jl | 4 +--- src/structures/link.jl | 6 +++--- src/structures/node.jl | 4 ++-- 8 files changed, 14 insertions(+), 16 deletions(-) diff --git a/docs/src/nodes/availability.md b/docs/src/nodes/availability.md index 02a4d57b..adda4827 100644 --- a/docs/src/nodes/availability.md +++ b/docs/src/nodes/availability.md @@ -55,7 +55,7 @@ with square brackets, while functions are represented as ``func\_example(index_1, index_2)`` -with paranthesis. +with parantheses. ### [Variables](@id nodes-availability-math-var) diff --git a/docs/src/nodes/networknode.md b/docs/src/nodes/networknode.md index 092c87c0..362486bc 100644 --- a/docs/src/nodes/networknode.md +++ b/docs/src/nodes/networknode.md @@ -16,7 +16,7 @@ The fields of a [`RefNetworkNode`](@ref) are given as: If the node should contain investments through the application of [`EnergyModelsInvestments`](https://energymodelsx.github.io/EnergyModelsInvestments.jl/), it is important to note that you can only use `FixedProfile` or `StrategicProfile` for the capacity, but not `RepresentativeProfile` or `OperationalProfile`. In addition, all values have to be non-negative. - **`opex_var::TimeProfile`**:\ - The variable operational expenses are based on the capacity utilization through the variable [`:cap_use`](@ref man-opt_var-cap). + The variable operating expenses are based on the capacity utilization through the variable [`:cap_use`](@ref man-opt_var-cap). Hence, it is directly related to the specified `input` and `output` ratios. The variable operating expenses can be provided as `OperationalProfile` as well. - **`opex_fixed::TimeProfile`**:\ @@ -54,7 +54,7 @@ with square brackets, while functions are represented as ``func\_example(index_1, index_2)`` -with paranthesis. +with parantheses. ### [Variables](@id nodes-network_node-math-var) diff --git a/docs/src/nodes/sink.md b/docs/src/nodes/sink.md index 98624e09..71a38205 100644 --- a/docs/src/nodes/sink.md +++ b/docs/src/nodes/sink.md @@ -43,7 +43,7 @@ with square brackets, while functions are represented as ``func\_example(index_1, index_2)`` -with paranthesis. +with parantheses. ### [Variables](@id nodes-sink-math-var) diff --git a/docs/src/nodes/source.md b/docs/src/nodes/source.md index c1c7fd3a..f2d56dfd 100644 --- a/docs/src/nodes/source.md +++ b/docs/src/nodes/source.md @@ -16,7 +16,7 @@ The fields of a [`RefSource`](@ref) node are given as: If the node should contain investments through the application of [`EnergyModelsInvestments`](https://energymodelsx.github.io/EnergyModelsInvestments.jl/), it is important to note that you can only use `FixedProfile` or `StrategicProfile` for the capacity, but not `RepresentativeProfile` or `OperationalProfile`. In addition, all values have to be non-negative. - **`opex_var::TimeProfile`**:\ - The variable operational expenses are based on the capacity utilization through the variable [`:cap_use`](@ref man-opt_var-cap). + The variable operating expenses are based on the capacity utilization through the variable [`:cap_use`](@ref man-opt_var-cap). Hence, it is directly related to the specified `output` ratios. The variable operating expenses can be provided as `OperationalProfile` as well. - **`opex_fixed::TimeProfile`**:\ @@ -57,7 +57,7 @@ with square brackets, while functions are represented as ``func\_example(index_1, index_2)`` -with paranthesis. +with parantheses. ### [Variables](@id nodes-source-math-var) diff --git a/docs/src/nodes/storage.md b/docs/src/nodes/storage.md index 0cc7ed56..c59e6d9e 100644 --- a/docs/src/nodes/storage.md +++ b/docs/src/nodes/storage.md @@ -7,7 +7,7 @@ As a consequence, a new abstract type is specified. ## [Philosophy of Storage nodes](@id nodes-storage-phil) [`Storage`](@ref) nodes differ from the other nodes as they are designed per default as *[parametric types](https://docs.julialang.org/en/v1/manual/types/#man-parametric-composite-types)* using the concept of [`EnergyModelsBase.StorageBehavior`](@ref). -In addition, capacities and operational expenses are not included at the first level of the composite type, but instead on a lower level. +In addition, capacities and operating expenses are not included at the first level of the composite type, but instead on a lower level. ### [Parametric implementation](@id nodes-storage-phil-parametric) @@ -106,7 +106,7 @@ with square brackets, while functions are represented as ``func\_example(index_1, index_2)`` -with paranthesis. +with parantheses. ### [Variables](@id nodes-storage-math-var) diff --git a/src/model.jl b/src/model.jl index c6e5431c..16f1e385 100644 --- a/src/model.jl +++ b/src/model.jl @@ -304,7 +304,6 @@ The default methods are empty and intended to be implemented in extension packag function variables_flow_resource(m, โ„’::Vector{<:Link}, ๐’ซ::Vector{<:Resource}, ๐’ฏ, modeltype::EnergyModel) end function variables_flow_resource(m, ๐’ฉ::Vector{<:Node}, ๐’ซ::Vector{<:Resource}, ๐’ฏ, modeltype::EnergyModel) end - """ variables_opex(m, ๐’ฉ::Vector{<:Node}, ๐’ณแต›แต‰แถœ, ๐’ฏ, modeltype::EnergyModel) variables_opex(m, โ„’::Vector{<:Link}, ๐’ณแต›แต‰แถœ, ๐’ฏ, modeltype::EnergyModel) @@ -641,7 +640,6 @@ specific resource types. In `EnergyModelsBase`, this method is provided for The function is empty by default and can be implemented in extension packages. """ function constraints_resource(m, n::Node, ๐’ฏ, ๐’ซ::Vector{<:Resource}, modeltype::EnergyModel) end - function constraints_resource(m, l::Link, ๐’ฏ, ๐’ซ::Vector{<:Resource}, modeltype::EnergyModel) end """ @@ -789,7 +787,7 @@ end objective_operational(m, ๐’ณ, ๐’ฏแดตโฟแต›::TS.AbstractStratPers, modeltype::EnergyModel) Create JuMP expressions indexed over the investment periods `๐’ฏแดตโฟแต›` for different elements ๐’ณ. -The expressions correspond to the operational expenses of the different elements. +The expressions correspond to the operating expenses of the different elements. The expressions are not discounted and do not take the duration of the investment periods into account. diff --git a/src/structures/link.jl b/src/structures/link.jl index f6dc64e5..cf54b4f0 100644 --- a/src/structures/link.jl +++ b/src/structures/link.jl @@ -88,10 +88,10 @@ has_capacity(l::Link) = false """ has_opex(l::Link) -Checks whether link `l` has operational expenses. +Checks whether link `l` has operating expenses. -By default, links do not have operational expenses. You must dispatch on this function if -you want to introduce links with operational expenses. +By default, links do not have operating expenses. You must dispatch on this function if +you want to introduce links with operating expenses. """ has_opex(l::Link) = false diff --git a/src/structures/node.jl b/src/structures/node.jl index 7712d96b..1ef07a88 100644 --- a/src/structures/node.jl +++ b/src/structures/node.jl @@ -448,9 +448,9 @@ has_capacity(n::Availability) = false """ has_opex(n::Node) -Checks whether node `n` has operational expenses. +Checks whether node `n` has operating expenses. -By default, all nodes except for [`Availability`](@ref) nodes do have operational expenses. +By default, all nodes except for [`Availability`](@ref) nodes do have operating expenses. """ has_opex(n::Node) = true has_opex(n::Availability) = false From e161bcadeabce55b1ae44fcab349d05826ec572f Mon Sep 17 00:00:00 2001 From: Julian Straus Date: Wed, 25 Mar 2026 12:27:30 +0100 Subject: [PATCH 2/2] Updated NEWS.md --- NEWS.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index 5099c893..cc7eb90a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,17 @@ # Release notes -## Unversioned +## Version 0.9.5 (2026-03-25) -* New functions (`variables_flow_resource()`, `constraints_resource()`, `constraints_couple_resource()`) that dispatch on resource types, which allow for creation of new resource-specific variables and constraints in extension packages. -* New function to indentify the unique resource types of a vector of resources -* New function that segments the vector of resources into sub-vectors based on each resource type +### Minor updates + +* Minor updates in the documentation. + +### Support for resource specific variables and constraints + +* New functions (`variables_flow_resource()`, `constraints_resource()`, `constraints_couple_resource()`) that dispatch on resource types. +* New function to indentify the unique resource types of a vector of resources. +* New function that segments the vector of resources into sub-vectors based on each resource type. +* This allows for creation of new resource-specific variables and constraints in extension packages. ## Version 0.9.4 (2025-11-26)