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 fieldidis 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 specifiedoutputratios. The variable operating expenses can be provided asOperationalProfileas 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 useFixedProfileorStrategicProfilefor the fixed OPEX, but notRepresentativeProfileorOperationalProfile. In addition, all values have to be non-negative.data::Vector{Data}:
An entry for providing additional data to the model.Additional constraints The
datafield 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
HydroGatenode $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
HydroGatenode $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 formulation of the constraints are (the first equation corresponds to hard constraints, the second equation to soft constraints):
Minimum constraints for the discharge:
\[\begin{aligned} \texttt{flow\_out}[n, t, p] \geq & \\ & \texttt{cap\_inst}[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 \\ & \texttt{cap\_inst}[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 & \\ & \texttt{cap\_inst}[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 \\ & \texttt{cap\_inst}[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] = & \\ & \texttt{cap\_inst}[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] = \\ & \texttt{cap\_inst}[n, t] \times value(c, t) \quad & \forall c \in C^{sch} \end{aligned}\]
where $value(c,t)$ returns the relative limit of scheduling constraint c. 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.