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
endA 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.,PowerLoadandACBus) 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.internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_available — Methodget_available(value::ConstantReserve) -> Bool
Get ConstantReserve available.
InfrastructureSystems.get_name — Methodget_name(value::ConstantReserve) -> String
Get ConstantReserve name.
InfrastructureSystems.set_available! — Methodset_available!(value::ConstantReserve, val) -> Any
Set 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) -> Float64
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_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
endA 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.,PowerLoadandACBus) 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.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.jlinternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_available — Methodget_available(value::ConstantReserveGroup) -> Bool
Get ConstantReserveGroup available.
InfrastructureSystems.get_name — Methodget_name(value::ConstantReserveGroup) -> String
Get ConstantReserveGroup name.
InfrastructureSystems.set_available! — Methodset_available!(value::ConstantReserveGroup, val) -> Any
Set 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) -> Float64
Get ConstantReserveGroup requirement.
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
endA 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.,PowerLoadandACBus) 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.internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_available — Methodget_available(value::VariableReserve) -> Bool
Get VariableReserve available.
InfrastructureSystems.get_name — Methodget_name(value::VariableReserve) -> String
Get VariableReserve name.
InfrastructureSystems.set_available! — Methodset_available!(value::VariableReserve, val) -> Any
Set 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_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
endA 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_costusing 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.,PowerLoadandACBus) 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.internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_available — Methodget_available(value::ReserveDemandCurve) -> Bool
Get ReserveDemandCurve available.
InfrastructureSystems.get_name — Methodget_name(value::ReserveDemandCurve) -> String
Get ReserveDemandCurve name.
InfrastructureSystems.set_available! — Methodset_available!(value::ReserveDemandCurve, val) -> Any
Set 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_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.