EnergyReservoirStorage
PowerSystems.EnergyReservoirStorage
— Typemutable struct EnergyReservoirStorage <: Storage
name::String
available::Bool
bus::ACBus
prime_mover_type::PrimeMovers
storage_technology_type::StorageTech
storage_capacity::Float64
storage_level_limits::MinMax
initial_storage_capacity_level::Float64
rating::Float64
active_power::Float64
input_active_power_limits::MinMax
output_active_power_limits::MinMax
efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}
reactive_power::Float64
reactive_power_limits::Union{Nothing, MinMax}
base_power::Float64
operation_cost::StorageCost
conversion_factor::Float64
storage_target::Float64
cycle_limits::Int
services::Vector{Service}
dynamic_injector::Union{Nothing, DynamicInjection}
ext::Dict{String, Any}
internal::InfrastructureSystemsInternal
end
An energy storage device, modeled as a generic energy reservoir.
This is suitable for modeling storage charging and discharging with average efficiency losses, ignoring the physical dynamics of the storage unit. A variety of energy storage types and chemistries can be modeled with this approach. For pumped hydro storage, alternatively see HydroPumpedStorage
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 simulationsbus::ACBus
: Bus that this component is connected toprime_mover_type::PrimeMovers
: Prime mover technology according to EIA 923. Options are listed herestorage_technology_type::StorageTech
: Storage Technology Complementary to EIA 923. Options are listed herestorage_capacity::Float64
: Maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen), validation range:(0, nothing)
storage_level_limits::MinMax
: Minimum and maximum allowable storage levels [0, 1], which can be used to model derates or other restrictions, such as state-of-charge restrictions on battery cycling, validation range:(0, 1)
initial_storage_capacity_level::Float64
: Initial storage capacity level as a ratio [0, 1.0] ofstorage_capacity
, validation range:(0, 1)
rating::Float64
: Maximum output power rating of the unit (MVA)active_power::Float64
: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver usedinput_active_power_limits::MinMax
: Minimum and maximum limits on the input active power (i.e., charging), validation range:(0, nothing)
output_active_power_limits::MinMax
: Minimum and maximum limits on the output active power (i.e., discharging), validation range:(0, nothing)
efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}
: Average efficiency [0, 1]in
(charging/filling) andout
(discharging/consuming) of the storage system, validation range:(0, 1)
reactive_power::Float64
: Initial reactive power set point of the unit (MVAR), validation range:reactive_power_limits
reactive_power_limits::Union{Nothing, MinMax}
: Minimum and maximum reactive power limits. Set toNothing
if not applicablebase_power::Float64
: Base power of the unit (MVA) for per unitization, validation range:(0, nothing)
operation_cost::StorageCost
: (default:StorageCost(nothing)
)OperationalCost
of storageconversion_factor::Float64
: (default:1.0
) Conversion factor ofstorage_capacity
to MWh, if different than 1.0. For example, X MWh/liter hydrogenstorage_target::Float64
: (default:0.0
) Storage target at the end of simulation as ratio of storage capacitycycle_limits::Int
: (default:1e4
) Storage Maximum number of cycles per yearservices::Vector{Service}
: (default:Device[]
) Services that this device contributes todynamic_injector::Union{Nothing, DynamicInjection}
: (default:nothing
) corresponding dynamic injection deviceext::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::EnergyReservoirStorage) -> String
Get EnergyReservoirStorage
name
.
PowerSystems.get_active_power
— Methodget_active_power(value::EnergyReservoirStorage) -> Any
Get EnergyReservoirStorage
active_power
.
PowerSystems.get_available
— Methodget_available(value::EnergyReservoirStorage) -> Bool
Get EnergyReservoirStorage
available
.
PowerSystems.get_base_power
— Methodget_base_power(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStorage
base_power
.
PowerSystems.get_bus
— Methodget_bus(value::EnergyReservoirStorage) -> ACBus
Get EnergyReservoirStorage
bus
.
PowerSystems.get_conversion_factor
— Methodget_conversion_factor(
value::EnergyReservoirStorage
) -> Float64
Get EnergyReservoirStorage
conversion_factor
.
PowerSystems.get_cycle_limits
— Methodget_cycle_limits(value::EnergyReservoirStorage) -> Int64
Get EnergyReservoirStorage
cycle_limits
.
PowerSystems.get_dynamic_injector
— Methodget_dynamic_injector(
value::EnergyReservoirStorage
) -> Union{Nothing, DynamicInjection}
Get EnergyReservoirStorage
dynamic_injector
.
PowerSystems.get_efficiency
— Methodget_efficiency(
value::EnergyReservoirStorage
) -> @NamedTuple{in::Float64, out::Float64}
Get EnergyReservoirStorage
efficiency
.
PowerSystems.get_ext
— Methodget_ext(value::EnergyReservoirStorage) -> Dict{String, Any}
Get EnergyReservoirStorage
ext
.
PowerSystems.get_initial_storage_capacity_level
— Methodget_initial_storage_capacity_level(
value::EnergyReservoirStorage
) -> Float64
Get EnergyReservoirStorage
initial_storage_capacity_level
.
PowerSystems.get_input_active_power_limits
— Methodget_input_active_power_limits(
value::EnergyReservoirStorage
) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}
Get EnergyReservoirStorage
input_active_power_limits
.
PowerSystems.get_operation_cost
— Methodget_operation_cost(
value::EnergyReservoirStorage
) -> StorageCost
Get EnergyReservoirStorage
operation_cost
.
PowerSystems.get_output_active_power_limits
— Methodget_output_active_power_limits(
value::EnergyReservoirStorage
) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}
Get EnergyReservoirStorage
output_active_power_limits
.
PowerSystems.get_prime_mover_type
— Methodget_prime_mover_type(
value::EnergyReservoirStorage
) -> PrimeMovers
Get EnergyReservoirStorage
prime_mover_type
.
PowerSystems.get_rating
— Methodget_rating(value::EnergyReservoirStorage) -> Any
Get EnergyReservoirStorage
rating
.
PowerSystems.get_reactive_power
— Methodget_reactive_power(value::EnergyReservoirStorage) -> Any
Get EnergyReservoirStorage
reactive_power
.
PowerSystems.get_reactive_power_limits
— Methodget_reactive_power_limits(
value::EnergyReservoirStorage
) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}
Get EnergyReservoirStorage
reactive_power_limits
.
PowerSystems.get_services
— Methodget_services(
value::EnergyReservoirStorage
) -> Vector{Service}
Get EnergyReservoirStorage
services
.
PowerSystems.get_storage_capacity
— Methodget_storage_capacity(value::EnergyReservoirStorage) -> Any
Get EnergyReservoirStorage
storage_capacity
.
PowerSystems.get_storage_level_limits
— Methodget_storage_level_limits(
value::EnergyReservoirStorage
) -> @NamedTuple{min::Float64, max::Float64}
Get EnergyReservoirStorage
storage_level_limits
.
PowerSystems.get_storage_target
— Methodget_storage_target(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStorage
storage_target
.
PowerSystems.get_storage_technology_type
— Methodget_storage_technology_type(
value::EnergyReservoirStorage
) -> StorageTech
Get EnergyReservoirStorage
storage_technology_type
.
PowerSystems.set_active_power!
— Methodset_active_power!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
active_power
.
PowerSystems.set_available!
— Methodset_available!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
available
.
PowerSystems.set_base_power!
— Methodset_base_power!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
base_power
.
PowerSystems.set_bus!
— Methodset_bus!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
bus
.
PowerSystems.set_conversion_factor!
— Methodset_conversion_factor!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
conversion_factor
.
PowerSystems.set_cycle_limits!
— Methodset_cycle_limits!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
cycle_limits
.
PowerSystems.set_efficiency!
— Methodset_efficiency!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
efficiency
.
PowerSystems.set_ext!
— Methodset_ext!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
ext
.
PowerSystems.set_initial_storage_capacity_level!
— Methodset_initial_storage_capacity_level!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
initial_storage_capacity_level
.
PowerSystems.set_input_active_power_limits!
— Methodset_input_active_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
input_active_power_limits
.
PowerSystems.set_operation_cost!
— Methodset_operation_cost!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
operation_cost
.
PowerSystems.set_output_active_power_limits!
— Methodset_output_active_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
output_active_power_limits
.
PowerSystems.set_prime_mover_type!
— Methodset_prime_mover_type!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
prime_mover_type
.
PowerSystems.set_rating!
— Methodset_rating!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
rating
.
PowerSystems.set_reactive_power!
— Methodset_reactive_power!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
reactive_power
.
PowerSystems.set_reactive_power_limits!
— Methodset_reactive_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
reactive_power_limits
.
PowerSystems.set_services!
— Methodset_services!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorage
services
.
PowerSystems.set_storage_capacity!
— Methodset_storage_capacity!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
storage_capacity
.
PowerSystems.set_storage_level_limits!
— Methodset_storage_level_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
storage_level_limits
.
PowerSystems.set_storage_target!
— Methodset_storage_target!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
storage_target
.
PowerSystems.set_storage_technology_type!
— Methodset_storage_technology_type!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorage
storage_technology_type
.