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::Union{StorageCost, MarketBidCost}
conversion_factor::Float64
storage_target::Float64
cycle_limits::Int
services::Vector{Service}
dynamic_injector::Union{Nothing, DynamicInjection}
ext::Dict{String, Any}
internal::InfrastructureSystemsInternal
endAn 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 HydroPumpTurbine and HydroReservoir
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 simulationsbus::ACBus: TheACBusthat this component is connected toprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. SeePrimeMovers.storage_technology_type::StorageTech: Storage Technology Complementary to EIA 923. SeeStorageTech.storage_capacity::Float64: Maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen). When in MWh, this value divided by basepower (MVA) gives an approximate duration in hours, assuming unity power factor. For understanding this relationship, see [per unitization](@ref perunit), 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 AC side output power rating of the unit. Stored in per unit of the device and not to be confused with base_poweractive_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_limitsreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set toNothingif not applicablebase_power::Float64: Base power of the unit (MVA) for per unitization, validation range:(0.0001, nothing)operation_cost::Union{StorageCost, MarketBidCost}: (default:StorageCost(nothing))OperationalCostof storageconversion_factor::Float64: (default:1.0) Conversion factor ofstorage_capacityto 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.internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
InfrastructureSystems.get_available — Methodget_available(value::EnergyReservoirStorage) -> Bool
Get EnergyReservoirStorageavailable.
InfrastructureSystems.get_name — Methodget_name(value::EnergyReservoirStorage) -> String
Get EnergyReservoirStoragename.
InfrastructureSystems.set_available! — Methodset_available!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorageavailable.
PowerSystems.get_active_power — Methodget_active_power(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStorageactive_power.
PowerSystems.get_base_power — Methodget_base_power(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStoragebase_power.
PowerSystems.get_bus — Methodget_bus(value::EnergyReservoirStorage) -> ACBus
Get EnergyReservoirStoragebus.
PowerSystems.get_conversion_factor — Methodget_conversion_factor(
value::EnergyReservoirStorage
) -> Float64
Get EnergyReservoirStorageconversion_factor.
PowerSystems.get_cycle_limits — Methodget_cycle_limits(value::EnergyReservoirStorage) -> Int64
Get EnergyReservoirStoragecycle_limits.
PowerSystems.get_dynamic_injector — Methodget_dynamic_injector(
value::EnergyReservoirStorage
) -> Union{Nothing, DynamicInjection}
Get EnergyReservoirStoragedynamic_injector.
PowerSystems.get_efficiency — Methodget_efficiency(
value::EnergyReservoirStorage
) -> @NamedTuple{in::Float64, out::Float64}
Get EnergyReservoirStorageefficiency.
PowerSystems.get_ext — Methodget_ext(value::EnergyReservoirStorage) -> Dict{String, Any}
Get EnergyReservoirStorageext.
PowerSystems.get_initial_storage_capacity_level — Methodget_initial_storage_capacity_level(
value::EnergyReservoirStorage
) -> Float64
Get EnergyReservoirStorageinitial_storage_capacity_level.
PowerSystems.get_input_active_power_limits — Methodget_input_active_power_limits(
value::EnergyReservoirStorage
) -> @NamedTuple{min::Float64, max::Float64}
Get EnergyReservoirStorageinput_active_power_limits.
PowerSystems.get_operation_cost — Methodget_operation_cost(
value::EnergyReservoirStorage
) -> Union{MarketBidCost, StorageCost}
Get EnergyReservoirStorageoperation_cost.
PowerSystems.get_output_active_power_limits — Methodget_output_active_power_limits(
value::EnergyReservoirStorage
) -> @NamedTuple{min::Float64, max::Float64}
Get EnergyReservoirStorageoutput_active_power_limits.
PowerSystems.get_prime_mover_type — Methodget_prime_mover_type(
value::EnergyReservoirStorage
) -> PrimeMovers
Get EnergyReservoirStorageprime_mover_type.
PowerSystems.get_rating — Methodget_rating(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStoragerating.
PowerSystems.get_reactive_power — Methodget_reactive_power(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStoragereactive_power.
PowerSystems.get_reactive_power_limits — Methodget_reactive_power_limits(
value::EnergyReservoirStorage
) -> Union{Nothing, @NamedTuple{min::Float64, max::Float64}}
Get EnergyReservoirStoragereactive_power_limits.
PowerSystems.get_services — Methodget_services(
value::EnergyReservoirStorage
) -> Vector{Service}
Get EnergyReservoirStorageservices.
PowerSystems.get_storage_capacity — Methodget_storage_capacity(
value::EnergyReservoirStorage
) -> Float64
Get EnergyReservoirStoragestorage_capacity.
PowerSystems.get_storage_level_limits — Methodget_storage_level_limits(
value::EnergyReservoirStorage
) -> @NamedTuple{min::Float64, max::Float64}
Get EnergyReservoirStoragestorage_level_limits.
PowerSystems.get_storage_target — Methodget_storage_target(value::EnergyReservoirStorage) -> Float64
Get EnergyReservoirStoragestorage_target.
PowerSystems.get_storage_technology_type — Methodget_storage_technology_type(
value::EnergyReservoirStorage
) -> StorageTech
Get EnergyReservoirStoragestorage_technology_type.
PowerSystems.set_active_power! — Methodset_active_power!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorageactive_power.
PowerSystems.set_base_power! — Methodset_base_power!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStoragebase_power.
PowerSystems.set_bus! — Methodset_bus!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStoragebus.
PowerSystems.set_conversion_factor! — Methodset_conversion_factor!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageconversion_factor.
PowerSystems.set_cycle_limits! — Methodset_cycle_limits!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStoragecycle_limits.
PowerSystems.set_efficiency! — Methodset_efficiency!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorageefficiency.
PowerSystems.set_ext! — Methodset_ext!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorageext.
PowerSystems.set_initial_storage_capacity_level! — Methodset_initial_storage_capacity_level!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageinitial_storage_capacity_level.
PowerSystems.set_input_active_power_limits! — Methodset_input_active_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageinput_active_power_limits.
PowerSystems.set_operation_cost! — Methodset_operation_cost!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageoperation_cost.
PowerSystems.set_output_active_power_limits! — Methodset_output_active_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageoutput_active_power_limits.
PowerSystems.set_prime_mover_type! — Methodset_prime_mover_type!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStorageprime_mover_type.
PowerSystems.set_rating! — Methodset_rating!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStoragerating.
PowerSystems.set_reactive_power! — Methodset_reactive_power!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragereactive_power.
PowerSystems.set_reactive_power_limits! — Methodset_reactive_power_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragereactive_power_limits.
PowerSystems.set_services! — Methodset_services!(value::EnergyReservoirStorage, val) -> Any
Set EnergyReservoirStorageservices.
PowerSystems.set_storage_capacity! — Methodset_storage_capacity!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragestorage_capacity.
PowerSystems.set_storage_level_limits! — Methodset_storage_level_limits!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragestorage_level_limits.
PowerSystems.set_storage_target! — Methodset_storage_target!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragestorage_target.
PowerSystems.set_storage_technology_type! — Methodset_storage_technology_type!(
value::EnergyReservoirStorage,
val
) -> Any
Set EnergyReservoirStoragestorage_technology_type.