Reserves
Constant Reserve
PowerSystems.ConstantReserve
— Typemutable struct ConstantReserve{T <: ReserveDirection} <: Reserve{T}
name::String
available::Bool
time_frame::Float64
requirement::Float64
sustained_time::Float64
max_output_fraction::Float64
max_participation_factor::Float64
deployed_fraction::Float64
ext::Dict{String, Any}
internal::InfrastructureSystemsInternal
end
A reserve product with a constant procurement requirement, such as 3% of the system base power at all times.
This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection
must be specified to define this as a ReserveUp
, ReserveDown
, or ReserveSymmetric
Arguments
name::String
: Name of the component. Components of the same type (e.g.,PowerLoad
) must have unique names, but components of different types (e.g.,PowerLoad
andACBus
) can have the same nameavailable::Bool
: Indicator of whether the component is connected and online (true
) or disconnected, offline, or down (false
). Unavailable components are excluded during simulationstime_frame::Float64
: the saturation time_frame in minutes to provide reserve contribution, validation range:(0, nothing)
requirement::Float64
: the value of required reserves in p.u. (SYSTEM_BASE
), validation range:(0, nothing)
sustained_time::Float64
: (default:3600.0
) the time in seconds reserve contribution must sustained at a specified level, validation range:(0, nothing)
max_output_fraction::Float64
: (default:1.0
) the maximum fraction of each device's output that can be assigned to the service, validation range:(0, 1)
max_participation_factor::Float64
: (default:1.0
) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range:(0, 1)
deployed_fraction::Float64
: (default:0.0
) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range:(0, 1)
ext::Dict{String, Any}
: (default:Dict{String, Any}()
) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.internal::InfrastructureSystemsInternal
: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_name
— Methodget_name(value::ConstantReserve) -> String
Get ConstantReserve
name
.
PowerSystems.get_available
— Methodget_available(value::ConstantReserve) -> Bool
Get ConstantReserve
available
.
PowerSystems.get_deployed_fraction
— Methodget_deployed_fraction(value::ConstantReserve) -> Float64
Get ConstantReserve
deployed_fraction
.
PowerSystems.get_ext
— Methodget_ext(value::ConstantReserve) -> Dict{String, Any}
Get ConstantReserve
ext
.
PowerSystems.get_max_output_fraction
— Methodget_max_output_fraction(value::ConstantReserve) -> Float64
Get ConstantReserve
max_output_fraction
.
PowerSystems.get_max_participation_factor
— Methodget_max_participation_factor(
value::ConstantReserve
) -> Float64
Get ConstantReserve
max_participation_factor
.
PowerSystems.get_requirement
— Methodget_requirement(value::ConstantReserve) -> Any
Get ConstantReserve
requirement
.
PowerSystems.get_sustained_time
— Methodget_sustained_time(value::ConstantReserve) -> Float64
Get ConstantReserve
sustained_time
.
PowerSystems.get_time_frame
— Methodget_time_frame(value::ConstantReserve) -> Float64
Get ConstantReserve
time_frame
.
PowerSystems.set_available!
— Methodset_available!(value::ConstantReserve, val) -> Any
Set ConstantReserve
available
.
PowerSystems.set_deployed_fraction!
— Methodset_deployed_fraction!(value::ConstantReserve, val) -> Any
Set ConstantReserve
deployed_fraction
.
PowerSystems.set_ext!
— Methodset_ext!(value::ConstantReserve, val) -> Any
Set ConstantReserve
ext
.
PowerSystems.set_max_output_fraction!
— Methodset_max_output_fraction!(value::ConstantReserve, val) -> Any
Set ConstantReserve
max_output_fraction
.
PowerSystems.set_max_participation_factor!
— Methodset_max_participation_factor!(
value::ConstantReserve,
val
) -> Any
Set ConstantReserve
max_participation_factor
.
PowerSystems.set_requirement!
— Methodset_requirement!(value::ConstantReserve, val) -> Any
Set ConstantReserve
requirement
.
PowerSystems.set_sustained_time!
— Methodset_sustained_time!(value::ConstantReserve, val) -> Any
Set ConstantReserve
sustained_time
.
PowerSystems.set_time_frame!
— Methodset_time_frame!(value::ConstantReserve, val) -> Any
Set ConstantReserve
time_frame
.
Constant Reserve Group
PowerSystems.ConstantReserveGroup
— Typemutable struct ConstantReserveGroup{T <: ReserveDirection} <: Service
name::String
available::Bool
requirement::Float64
ext::Dict{String, Any}
contributing_services::Vector{Service}
internal::InfrastructureSystemsInternal
end
A reserve product met by a group of individual reserves.
The group reserve requirement is added in addition to any individual reserve requirements, and devices that contribute to individual reserves within the group can also contribute to the overarching group reserve requirement. Example: A group of spinning and non-spinning reserves, where online generators providing spinning reserves can also contribute to the non-spinning reserve requirement.
This model has a constant procurement requirement, such as 3% of the system base power at all times. When defining the reserve, the ReserveDirection
must be specified to define this as a ReserveUp
, ReserveDown
, or ReserveSymmetric
Arguments
name::String
: Name of the component. Components of the same type (e.g.,PowerLoad
) must have unique names, but components of different types (e.g.,PowerLoad
andACBus
) can have the same nameavailable::Bool
: Indicator of whether the component is connected and online (true
) or disconnected, offline, or down (false
). Unavailable components are excluded during simulationsrequirement::Float64
: the value of required reserves in p.u. (SYSTEM_BASE
), validation range:(0, nothing)
ext::Dict{String, Any}
: (default:Dict{String, Any}()
) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.contributing_services::Vector{Service}
: (default:Vector{Service}()
) Services that contribute to this group requirement. Services must be added for this constraint to have an effect when conducting simulations inPowerSimulations.jl
internal::InfrastructureSystemsInternal
: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_name
— Methodget_name(value::ConstantReserveGroup) -> String
Get ConstantReserveGroup
name
.
PowerSystems.get_available
— Methodget_available(value::ConstantReserveGroup) -> Bool
Get ConstantReserveGroup
available
.
PowerSystems.get_contributing_services
— Methodget_contributing_services(
value::ConstantReserveGroup
) -> Vector{Service}
Get ConstantReserveGroup
contributing_services
.
PowerSystems.get_ext
— Methodget_ext(value::ConstantReserveGroup) -> Dict{String, Any}
Get ConstantReserveGroup
ext
.
PowerSystems.get_requirement
— Methodget_requirement(value::ConstantReserveGroup) -> Any
Get ConstantReserveGroup
requirement
.
PowerSystems.set_available!
— Methodset_available!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGroup
available
.
PowerSystems.set_ext!
— Methodset_ext!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGroup
ext
.
PowerSystems.set_requirement!
— Methodset_requirement!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGroup
requirement
.
Variable Reserve
PowerSystems.VariableReserve
— Typemutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}
name::String
available::Bool
time_frame::Float64
requirement::Float64
sustained_time::Float64
max_output_fraction::Float64
max_participation_factor::Float64
deployed_fraction::Float64
ext::Dict{String, Any}
internal::InfrastructureSystemsInternal
end
A reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.
This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection
must be specified to define this as a ReserveUp
, ReserveDown
, or ReserveSymmetric
. To model the time varying requirement, a "requirement
" time series should be added to this reserve
Arguments
name::String
: Name of the component. Components of the same type (e.g.,PowerLoad
) must have unique names, but components of different types (e.g.,PowerLoad
andACBus
) can have the same nameavailable::Bool
: Indicator of whether the component is connected and online (true
) or disconnected, offline, or down (false
). Unavailable components are excluded during simulationstime_frame::Float64
: the saturation time_frame in minutes to provide reserve contribution, validation range:(0, nothing)
requirement::Float64
: the required quantity of the product should be scaled by a TimeSeriesDatasustained_time::Float64
: (default:3600.0
) the time in seconds reserve contribution must sustained at a specified level, validation range:(0, nothing)
max_output_fraction::Float64
: (default:1.0
) the maximum fraction of each device's output that can be assigned to the service, validation range:(0, 1)
max_participation_factor::Float64
: (default:1.0
) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range:(0, 1)
deployed_fraction::Float64
: (default:0.0
) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range:(0, 1)
ext::Dict{String, Any}
: (default:Dict{String, Any}()
) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.internal::InfrastructureSystemsInternal
: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_name
— Methodget_name(value::VariableReserve) -> String
Get VariableReserve
name
.
PowerSystems.get_available
— Methodget_available(value::VariableReserve) -> Bool
Get VariableReserve
available
.
PowerSystems.get_deployed_fraction
— Methodget_deployed_fraction(value::VariableReserve) -> Float64
Get VariableReserve
deployed_fraction
.
PowerSystems.get_ext
— Methodget_ext(value::VariableReserve) -> Dict{String, Any}
Get VariableReserve
ext
.
PowerSystems.get_max_output_fraction
— Methodget_max_output_fraction(value::VariableReserve) -> Float64
Get VariableReserve
max_output_fraction
.
PowerSystems.get_max_participation_factor
— Methodget_max_participation_factor(
value::VariableReserve
) -> Float64
Get VariableReserve
max_participation_factor
.
PowerSystems.get_requirement
— Methodget_requirement(value::VariableReserve) -> Float64
Get VariableReserve
requirement
.
PowerSystems.get_sustained_time
— Methodget_sustained_time(value::VariableReserve) -> Float64
Get VariableReserve
sustained_time
.
PowerSystems.get_time_frame
— Methodget_time_frame(value::VariableReserve) -> Float64
Get VariableReserve
time_frame
.
PowerSystems.set_available!
— Methodset_available!(value::VariableReserve, val) -> Any
Set VariableReserve
available
.
PowerSystems.set_deployed_fraction!
— Methodset_deployed_fraction!(value::VariableReserve, val) -> Any
Set VariableReserve
deployed_fraction
.
PowerSystems.set_ext!
— Methodset_ext!(value::VariableReserve, val) -> Any
Set VariableReserve
ext
.
PowerSystems.set_max_output_fraction!
— Methodset_max_output_fraction!(value::VariableReserve, val) -> Any
Set VariableReserve
max_output_fraction
.
PowerSystems.set_max_participation_factor!
— Methodset_max_participation_factor!(
value::VariableReserve,
val
) -> Any
Set VariableReserve
max_participation_factor
.
PowerSystems.set_requirement!
— Methodset_requirement!(value::VariableReserve, val) -> Any
Set VariableReserve
requirement
.
PowerSystems.set_sustained_time!
— Methodset_sustained_time!(value::VariableReserve, val) -> Any
Set VariableReserve
sustained_time
.
PowerSystems.set_time_frame!
— Methodset_time_frame!(value::VariableReserve, val) -> Any
Set VariableReserve
time_frame
.
Reserve Demand Curve
PowerSystems.ReserveDemandCurve
— Typemutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}
variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}
name::String
available::Bool
time_frame::Float64
sustained_time::Float64
max_participation_factor::Float64
deployed_fraction::Float64
ext::Dict{String, Any}
internal::InfrastructureSystemsInternal
end
A reserve product with an Operating Reserve Demand Curve (ORDC) for operational simulations.
The ORDC is modeled as a discretized set of (Reserve capacity (MW), Price ($/MWh))
steps, which can vary with time. Use set_variable_cost!
to define the ORDCs.
When defining the reserve, the ReserveDirection
must be specified to define this as a ReserveUp
, ReserveDown
, or ReserveSymmetric
Arguments
variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}
: Create this object withvariable
=nothing
, then add assign a cost curve or time-series ofvariable_cost
using theset_variable_cost!
function, which will automatically update this parametername::String
: Name of the component. Components of the same type (e.g.,PowerLoad
) must have unique names, but components of different types (e.g.,PowerLoad
andACBus
) can have the same nameavailable::Bool
: Indicator of whether the component is connected and online (true
) or disconnected, offline, or down (false
). Unavailable components are excluded during simulationstime_frame::Float64
: the saturation time_frame in minutes to provide reserve contribution, validation range:(0, nothing)
sustained_time::Float64
: (default:3600.0
) the time in seconds that the reserve contribution must sustained at a specified level, validation range:(0, nothing)
max_participation_factor::Float64
: (default:1.0
) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range:(0, 1)
deployed_fraction::Float64
: (default:0.0
) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range:(0, 1)
ext::Dict{String, Any}
: (default:Dict{String, Any}()
) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.internal::InfrastructureSystemsInternal
: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_name
— Methodget_name(value::ReserveDemandCurve) -> String
Get ReserveDemandCurve
name
.
PowerSystems.get_available
— Methodget_available(value::ReserveDemandCurve) -> Bool
Get ReserveDemandCurve
available
.
PowerSystems.get_deployed_fraction
— Methodget_deployed_fraction(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurve
deployed_fraction
.
PowerSystems.get_ext
— Methodget_ext(value::ReserveDemandCurve) -> Dict{String, Any}
Get ReserveDemandCurve
ext
.
PowerSystems.get_max_participation_factor
— Methodget_max_participation_factor(
value::ReserveDemandCurve
) -> Float64
Get ReserveDemandCurve
max_participation_factor
.
PowerSystems.get_sustained_time
— Methodget_sustained_time(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurve
sustained_time
.
PowerSystems.get_time_frame
— Methodget_time_frame(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurve
time_frame
.
PowerSystems.get_variable
— Methodget_variable(
value::ReserveDemandCurve
) -> Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}
Get ReserveDemandCurve
variable
.
PowerSystems.set_available!
— Methodset_available!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurve
available
.
PowerSystems.set_deployed_fraction!
— Methodset_deployed_fraction!(
value::ReserveDemandCurve,
val
) -> Any
Set ReserveDemandCurve
deployed_fraction
.
PowerSystems.set_ext!
— Methodset_ext!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurve
ext
.
PowerSystems.set_max_participation_factor!
— Methodset_max_participation_factor!(
value::ReserveDemandCurve,
val
) -> Any
Set ReserveDemandCurve
max_participation_factor
.
PowerSystems.set_sustained_time!
— Methodset_sustained_time!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurve
sustained_time
.
PowerSystems.set_time_frame!
— Methodset_time_frame!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurve
time_frame
.
PowerSystems.set_variable!
— Methodset_variable!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurve
variable
.