Public API Reference

Formulations

HydroPowerSimulations.HydroTurbineWaterLinearDispatchType

Formulation type to add injection variables for a HydroTurbine connected to reservoirs using a linear model PowerSystems.HydroGen. The model assumes a shallow reservoir. The head for the conversion between water flow and power can be approximated as a linear function of the water flow on which the head elevation is always the intake elevation.

source

Variables

Parameters

Expressions

Constraints

HydroPowerSimulations.WaterTargetConstraintType

Struct to create the constraint that set-up the target for reservoir formulations. It can use head or volume as the storage variable.

For more information check HydroPowerSimulations Formulations.

The specified constraint is formulated as:

\[l_t + l^\text{shortage} + l^\text{surplus} = \text{WaterTargetTimeSeriesParameter}_t, \quad \forall t \in \{1,\dots, T\}\]

source

Initial Conditions

Feedforwards

HydroPowerSimulations.HydroUsageLimitFeedforwardType
HydroUsageLimitFeedforward(
    component_type::Type{<:PowerSystems.Component},
    source::Type{T},
    affected_values::Vector{DataType},
    meta = CONTAINER_KEY_EMPTY_META
) where {T}

Adds a constraint to enforce a maximum usage of hydro energy based on the source value. It is recommended to use the Auxiliary Variable HydroEnergyOutput as Source, affecting the HydroUsageLimitParameter.

Arguments:

  • component_type::Type{<:PowerSystems.Component} : Specify the type of component on which the Feedforward will be applied
  • source::Type{T} : Specify the VariableType, ParameterType or AuxVariableType as the source of values for the Feedforward
  • affected_values::Vector{DataType} : Specify the variable on which the hydro limit will be applied using the source values
source
HydroPowerSimulations.ReservoirLimitFeedforwardType
ReservoirLimitFeedforward(
    component_type::Type{<:PSY.Component},
    source::Type{T},
    affected_values::Vector{DataType},
    number_of_periods::Int,
    meta = CONTAINER_KEY_EMPTY_META
) where {T}

Adds a constraint to limit the sum of a variable over the number of periods to the source value.

Arguments:

  • component_type::Type{<:PowerSystems.Component} : Specify the type of component on which the Feedforward will be applied
  • source::Type{T} : Specify the VariableType, ParameterType or AuxVariableType as the source of values for the Feedforward
  • affected_values::Vector{DataType} : Specify the variable on which the reservoir limit will be applied using the source values
  • number_of_periods::Int : Specify the total number of periods that are added on which the limits are applied. For example, in a 24-step simulation if number_of_periods = 24, it will add only one constraint over the sum of 24 periods on which the reservoir limit will be applied. If number_of_periods = 12, it will create two constraints, one for the first 12 steps and one for the 13:24 steps. It is mandatory that number_of_periods can divide the total number of simulation steps.
source
HydroPowerSimulations.ReservoirTargetFeedforwardType
ReservoirTargetFeedforward(
    component_type::Type{<:PowerSystems.Component},
    source::Type{T},
    affected_values::Vector{DataType},
    target_period::Int,
    penalty_cost::Float64,
    meta = CONTAINER_KEY_EMPTY_META
) where {T}

Adds a constraint to enforce a minimum reservoir level target with a slack variable associated with a penalty term.

Arguments:

  • component_type::Type{<:PowerSystems.Component} : Specify the type of component on which the Feedforward will be applied
  • source::Type{T} : Specify the VariableType, ParameterType or AuxVariableType as the source of values for the Feedforward
  • affected_values::Vector{DataType} : Specify the variable on which the reservoir target will be applied using the source values
  • target_period::Int : Specify the time step at which the reservoir target will be applied.
  • penalty_cost::Float64 : Specify the penalty cost for not reaching the desired reservoir target.
source
HydroPowerSimulations.WaterLevelBudgetFeedforwardType
WaterLevelBudgetFeedforward(
    component_type::Type{<:PowerSystems.Component},
    source::Type{T},
    affected_values::Vector{DataType},
    meta = CONTAINER_KEY_EMPTY_META
) where {T}

Adds a constraint to enforce a maximum usage of hydro level volume based on the source value. It is recommended to use the Auxiliary Variable TotalHydroFlowRateReservoirOutgoing as Source, affecting the WaterLevelBudgetParameter.

Arguments:

  • component_type::Type{<:PowerSystems.Component} : Specify the type of component on which the Feedforward will be applied
  • source::Type{T} : Specify the VariableType, ParameterType or AuxVariableType as the source of values for the Feedforward
  • affected_values::Vector{DataType} : Specify the variable on which the hydro limit will be applied using the source values
source