Hydro gate node
Introduced type and its field
The HydroGate
is used when water can be released between reservoirs without going through a generator. The HydroGate
can either represent a controlled gate that is used to regulate the dispatch from a reservoir without production, or to bypass water when a reservoir is, for example, full. The HydroGate
can also be used to represent spillage. Althoug spillage is not, in reality, a control decision but a consequence of full reservoir, it is often modelled as a controllable decisions since state dependent spillage can not be modelled directly in a linear model. Costs for operating gates can be added to penalize unwanted spillage using the field opex_var
.
Standard fields
The HydroGate
nodes build on the NetworkNode node type. Standard fields are given as:
id
:
The fieldid
is only used for providing a name to the node. This is similar to the approach utilized inEnergyModelsBase
.cap::TimeProfile
:
The installed gate discharge capacity. In the case of aHydroGate
, this value corresponds to the maximum possible discharge without any generator. In practice, this value has to be sufficiently large to avoid an unfeasible system.opex_var::TimeProfile
:
The variable operational expenses are based on the capacity utilization through the variablecap_use
. Hence, it is directly related to the specifiedoutput
ratios. The variable operating expenses can be provided asOperationalProfile
as well.opex_fixed::TimeProfile
:
The fixed operating expenses are relative to the installed capacity (through the fieldcap
) and the chosen duration of a strategic period as outlined on UtilizeTimeStruct
.
It is important to note that you can only useFixedProfile
orStrategicProfile
for the fixed OPEX, but notRepresentativeProfile
orOperationalProfile
. In addition, all values have to be non-negative.data::Vector{Data}
:
An entry for providing additional data to the model.Additional constraints The
data
field can be used to add minimum, maximum, and schedule constraints on the discharge using the general constraints types.
HydroGate
nodes do not utilize the fields input
and output
as a hydro gate can only have one resource type, water, and the conversion is always 1 due to mass conservation.
Additional fields
HydroGate
nodes a single additional field:
resource::Resource
:
The water resource that the node can release.
Mathematical description
The HydroGate
inherits its mathematical description from the NetworkNode where there is only a single input and output resource given by the resource
field and a conversion ratio of 1.
Variables
Standard variables
The HydroGate
utilizes the standard variables from the NetworkNode, as described on the page Optimization variables:
- $\texttt{opex\_var}$
- $\texttt{opex\_fixed}$
- $\texttt{cap\_use}$
- $\texttt{cap\_inst}$
- $\texttt{flow\_in}$
- $\texttt{flow\_out}$
Additional variables
HydroGate
nodes add additional variables if required by the additional constraints:
- $\texttt{gate\_penalty\_up}[n, t]$: Variable for penalizing violation of the discharge constraint in direction up in
HydroGate
node $n$ in operational period $t$ with unit volume per time unit.
Up implies in this case that the flow through the gate is larger than planned. - $\texttt{gate\_penalty\_down}[n, t]$: Variable for penalizing violation of the discharge constraint in direction down in
HydroGate
node $n$ in operational period $t$ with unit volume per time unit.
Down implies in this case that the flow through the gate is smaller than planned.
Constraints
The following sections omit the direct inclusion of the vector of HydroGate
nodes. Instead, it is implicitly assumed that the constraints are valid $\forall n ∈ N$ for all HydroGate
types if not stated differently. In addition, all constraints are valid $\forall t \in T$ (that is in all operational periods) or $\forall t_{inv} \in T^{Inv}$ (that is in all strategic periods).
Standard constraints
HydroGate
nodes utilize in general the standard constraints described in Constraint functions for NetworkNode
. The majority of these constraints are hence ommitted in the following description.
The function constraints_opex_var
requires a new method as we have to include the penalty variables for violating the constraints if required:
\[\begin{aligned} \texttt{opex\_var}&[n, t_{inv}] = \\ \sum_{t \in t_{inv}} \Big( &opex\_var(n, t) \times \texttt{cap\_use}[n, t] + \\ & penalty(c_{up}, t) \times \texttt{gate\_penalty\_up}[n, t] + \\ & penalty(c_{down}, t) \times \texttt{gate\_penalty\_down}[n, t] \Big) \times scale\_op\_sp(t_{inv}, t) \end{aligned}\]
where $penalty()$ returns the penalty value for violation in the upward and downward direction of constraints with penalty variables, denoted by $c_{up}$ and $c_{up}$ respectively.
The function $scale\_op\_sp(t_{inv}, t)$ calculates the scaling factor between operational and strategic periods. It also takes into account potential operational scenarios and their probability as well as representative periods.
The method for constraints_flow_out
adds discharge constraints if additional constraints are provided in the Data
field. Soft constraints, i.e., constraints with a penalty, are used if the constraints have non-infinite penalty values. The mathematical formualtion of the constraints are:
Minimum constraints for the discharge:
\[\begin{aligned} \texttt{flow\_out}[n, t, p] \geq & capacity(n, t) \times value(c, t) \qquad & \forall c \in C^{min}\\ \texttt{flow\_out}[n, t, p] + & \texttt{gate\_penalty\_up}[n, t] \geq \\ & capacity(n, t) \times value(c, t) \qquad & \forall c \in C^{min} \end{aligned}\]
Maximum constraints for the discharge:
\[\begin{aligned} \texttt{flow\_out}[n, t, p] \leq & capacity(n, t) \times value(c, t) \qquad & \forall c \in C^{max}\\ \texttt{flow\_out}[n, t, p] - & \texttt{gate\_penalty\_down}[n, t] \leq \\ & capacity(n, t) \times value(c, t) \qquad & \forall c \in C^{max} \end{aligned}\]
Scheduling constraints for the discharge:
\[\begin{aligned} \texttt{flow\_out}[n, t, p] = & capacity(n, t) \times value(c, t) \qquad & \forall c \in C^{sch}\\ \texttt{flow\_out}[n, t, p] + & \texttt{gate\_penalty\_up}[n, t] - \texttt{gate\_penalty\_down}[n, t] = \\ & capacity(n, t) \times value(c, t) \quad & \forall c \in C^{sch} \end{aligned}\]
where $value(c,t)$ returns the relative limit of constraint c
and $capacity(n,t)$ returns the installed capacity of node n
. The sets $C^{min}$,$C^{max}$ and $C^{sch}$ contain additional minimum, maximum, and scheduling constraints, repectively.
Additional constraints
The HydroGate
nodes do not include any additional constraints other than through dispatching on Constraint functions for NetworkNode
nodes as described above.