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 ConstantReserveavailable.
InfrastructureSystems.get_name — Methodget_name(value::ConstantReserve) -> String
Get ConstantReservename.
InfrastructureSystems.set_available! — Methodset_available!(value::ConstantReserve, val) -> Any
Set ConstantReserveavailable.
PowerSystems.get_deployed_fraction — Methodget_deployed_fraction(value::ConstantReserve) -> Float64
Get ConstantReservedeployed_fraction.
PowerSystems.get_ext — Methodget_ext(value::ConstantReserve) -> Dict{String, Any}
Get ConstantReserveext.
PowerSystems.get_max_output_fraction — Methodget_max_output_fraction(value::ConstantReserve) -> Float64
Get ConstantReservemax_output_fraction.
PowerSystems.get_max_participation_factor — Methodget_max_participation_factor(
value::ConstantReserve
) -> Float64
Get ConstantReservemax_participation_factor.
PowerSystems.get_requirement — Methodget_requirement(value::ConstantReserve) -> Float64
Get ConstantReserverequirement.
PowerSystems.get_sustained_time — Methodget_sustained_time(value::ConstantReserve) -> Float64
Get ConstantReservesustained_time.
PowerSystems.get_time_frame — Methodget_time_frame(value::ConstantReserve) -> Float64
Get ConstantReservetime_frame.
PowerSystems.set_deployed_fraction! — Methodset_deployed_fraction!(value::ConstantReserve, val) -> Any
Set ConstantReservedeployed_fraction.
PowerSystems.set_ext! — Methodset_ext!(value::ConstantReserve, val) -> Any
Set ConstantReserveext.
PowerSystems.set_max_output_fraction! — Methodset_max_output_fraction!(value::ConstantReserve, val) -> Any
Set ConstantReservemax_output_fraction.
PowerSystems.set_max_participation_factor! — Methodset_max_participation_factor!(
value::ConstantReserve,
val
) -> Any
Set ConstantReservemax_participation_factor.
PowerSystems.set_requirement! — Methodset_requirement!(value::ConstantReserve, val) -> Any
Set ConstantReserverequirement.
PowerSystems.set_sustained_time! — Methodset_sustained_time!(value::ConstantReserve, val) -> Any
Set ConstantReservesustained_time.
PowerSystems.set_time_frame! — Methodset_time_frame!(value::ConstantReserve, val) -> Any
Set ConstantReservetime_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 ConstantReserveGroupavailable.
InfrastructureSystems.get_name — Methodget_name(value::ConstantReserveGroup) -> String
Get ConstantReserveGroupname.
InfrastructureSystems.set_available! — Methodset_available!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGroupavailable.
PowerSystems.get_contributing_services — Methodget_contributing_services(
value::ConstantReserveGroup
) -> Vector{Service}
Get ConstantReserveGroupcontributing_services.
PowerSystems.get_ext — Methodget_ext(value::ConstantReserveGroup) -> Dict{String, Any}
Get ConstantReserveGroupext.
PowerSystems.get_requirement — Methodget_requirement(value::ConstantReserveGroup) -> Float64
Get ConstantReserveGrouprequirement.
PowerSystems.set_ext! — Methodset_ext!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGroupext.
PowerSystems.set_requirement! — Methodset_requirement!(value::ConstantReserveGroup, val) -> Any
Set ConstantReserveGrouprequirement.
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 aTimeSeriesDatasustained_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 VariableReserveavailable.
InfrastructureSystems.get_name — Methodget_name(value::VariableReserve) -> String
Get VariableReservename.
InfrastructureSystems.set_available! — Methodset_available!(value::VariableReserve, val) -> Any
Set VariableReserveavailable.
PowerSystems.get_deployed_fraction — Methodget_deployed_fraction(value::VariableReserve) -> Float64
Get VariableReservedeployed_fraction.
PowerSystems.get_ext — Methodget_ext(value::VariableReserve) -> Dict{String, Any}
Get VariableReserveext.
PowerSystems.get_max_output_fraction — Methodget_max_output_fraction(value::VariableReserve) -> Float64
Get VariableReservemax_output_fraction.
PowerSystems.get_max_participation_factor — Methodget_max_participation_factor(
value::VariableReserve
) -> Float64
Get VariableReservemax_participation_factor.
PowerSystems.get_requirement — Methodget_requirement(value::VariableReserve) -> Float64
Get VariableReserverequirement.
PowerSystems.get_sustained_time — Methodget_sustained_time(value::VariableReserve) -> Float64
Get VariableReservesustained_time.
PowerSystems.get_time_frame — Methodget_time_frame(value::VariableReserve) -> Float64
Get VariableReservetime_frame.
PowerSystems.set_deployed_fraction! — Methodset_deployed_fraction!(value::VariableReserve, val) -> Any
Set VariableReservedeployed_fraction.
PowerSystems.set_ext! — Methodset_ext!(value::VariableReserve, val) -> Any
Set VariableReserveext.
PowerSystems.set_max_output_fraction! — Methodset_max_output_fraction!(value::VariableReserve, val) -> Any
Set VariableReservemax_output_fraction.
PowerSystems.set_max_participation_factor! — Methodset_max_participation_factor!(
value::VariableReserve,
val
) -> Any
Set VariableReservemax_participation_factor.
PowerSystems.set_requirement! — Methodset_requirement!(value::VariableReserve, val) -> Any
Set VariableReserverequirement.
PowerSystems.set_sustained_time! — Methodset_sustained_time!(value::VariableReserve, val) -> Any
Set VariableReservesustained_time.
PowerSystems.set_time_frame! — Methodset_time_frame!(value::VariableReserve, val) -> Any
Set VariableReservetime_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 ReserveDemandCurveavailable.
InfrastructureSystems.get_name — Methodget_name(value::ReserveDemandCurve) -> String
Get ReserveDemandCurvename.
InfrastructureSystems.set_available! — Methodset_available!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurveavailable.
PowerSystems.get_deployed_fraction — Methodget_deployed_fraction(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurvedeployed_fraction.
PowerSystems.get_ext — Methodget_ext(value::ReserveDemandCurve) -> Dict{String, Any}
Get ReserveDemandCurveext.
PowerSystems.get_max_participation_factor — Methodget_max_participation_factor(
value::ReserveDemandCurve
) -> Float64
Get ReserveDemandCurvemax_participation_factor.
PowerSystems.get_sustained_time — Methodget_sustained_time(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurvesustained_time.
PowerSystems.get_time_frame — Methodget_time_frame(value::ReserveDemandCurve) -> Float64
Get ReserveDemandCurvetime_frame.
PowerSystems.get_variable — Methodget_variable(
value::ReserveDemandCurve
) -> Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}
Get ReserveDemandCurvevariable.
PowerSystems.set_deployed_fraction! — Methodset_deployed_fraction!(
value::ReserveDemandCurve,
val
) -> Any
Set ReserveDemandCurvedeployed_fraction.
PowerSystems.set_ext! — Methodset_ext!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurveext.
PowerSystems.set_max_participation_factor! — Methodset_max_participation_factor!(
value::ReserveDemandCurve,
val
) -> Any
Set ReserveDemandCurvemax_participation_factor.
PowerSystems.set_sustained_time! — Methodset_sustained_time!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurvesustained_time.
PowerSystems.set_time_frame! — Methodset_time_frame!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurvetime_frame.
PowerSystems.set_variable! — Methodset_variable!(value::ReserveDemandCurve, val) -> Any
Set ReserveDemandCurvevariable.