Storage type of technological processes with accumulating capacity of a commodity.
Usage
newStorage(
name = "",
desc = "",
commodity = character(),
aux = data.frame(),
region = character(),
start = data.frame(),
end = data.frame(),
olife = data.frame(),
charge = data.frame(),
seff = data.frame(),
aeff = data.frame(),
af = data.frame(),
fixom = data.frame(),
varom = data.frame(),
invcost = data.frame(),
capacity = data.frame(),
cluster = data.frame(),
vintage = data.frame(),
cap2stg = 1,
fullYear = TRUE,
weather = data.frame(),
optimizeRetirement = FALSE,
misc = list(),
...
)Arguments
- name
character. Name of the storage (used in sets).
- desc
character. Description of the storage.
- commodity
character. Name of the stored commodity.
- aux
data.frame. Auxiliary commodities.
- acomm
character. Name of the auxiliary commodity (used in sets).
- unit
character. Unit of the auxiliary commodity.
- region
character. Region where the storage technology exists or can be installed.
- start
deprecated, use the
startcolumn ofvintage.- end
deprecated, use the
endcolumn ofvintage.- olife
deprecated, use the
olifecolumn ofvintage.- charge
data.frame. Pre-charged level at the beginning of the operational cycle.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- slice
character. Time slice for which the charged level will be specified.
- charge
numeric. Pre-charged or targeted level at the specified slice.
- seff
data.frame. Storage efficiency parameters.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- slice
character. Time slice to apply the parameter, NA for every slice.
- stgeff
numeric. Storage decay annual rate.
- inpeff
numeric. Input efficiency rate.
- outeff
numeric. Output efficiency rate.
- aeff
data.frame. Auxiliary commodities efficiency parameters.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- acomm
character. Name of the auxiliary commodity (used in sets).
- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- slice
character. Time slice to apply the parameter, NA for every slice.
- stg2ainp
numeric. Storaage-level-to-auxiliary-input-commodity coefficient (multiplier).
- cinp2ainp
numeric. Input-commodity-to-auxiliary-input-commodity coefficient (multiplier).
- cout2ainp
numeric. Output-commodity-to-auxiliary-input-commodity coefficient (multiplier).
- stg2aout
numeric. Storage-level-to-auxiliary-output-commodity coefficient (multiplier).
- cinp2aout
numeric. Input-commodity-to-auxiliary-output-commodity coefficient (multiplier).
- cout2aout
numeric. Output-commodity-to-auxiliary-output-commodity coefficient (multiplier).
- cap2ainp
numeric. Capacity-to-auxiliary-input-commodity coefficient (multiplier).
- cap2aout
numeric. Capacity-to-auxiliary-output-commodity coefficient (multiplier).
- ncap2ainp
numeric. New-capacity-to-auxiliary-input-commodity coefficient (multiplier).
- ncap2aout
numeric. New-capacity-to-auxiliary-output-commodity coefficient (multiplier).
- ncap2stg
numeric. New-capacity-to-storage-level coefficient (multiplier).
- af
data.frame. Availability factor parameters.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- slice
character. Time slice to apply the parameter, NA for every slice.
- af.lo
numeric. Lower bound of the availability factor.
- af.up
numeric. Upper bound of the availability factor.
- af.fx
numeric. Fixed value of the availability factor. This parameter overrides
af.loandaf.up.- cinp.lo
numeric. Lower bound of the input commodity availability factor.
- cinp.up
numeric. Upper bound of the input commodity availability factor.
- cinp.fx
numeric. Fixed value of the input commodity availability factor. This parameter overrides
cinp.loandcinp.up.- cout.lo
numeric. Lower bound of the output commodity availability factor.
- cout.up
numeric. Upper bound of the output commodity availability factor.
- cout.fx
numeric. Fixed value of the output commodity availability factor. This parameter overrides
cout.loandcout.up.
- fixom
data.frame. Fixed operation and maintenance cost.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- fixom
numeric. Fixed operation and maintenance cost for the specified sets.
- varom
data.frame. Variable operation and maintenance cost.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- slice
character. Time slice to apply the parameter, NA for every slice.
- inpcost
numeric. Costs associated with the input commodity.
- outcost
numeric. Costs associated with the output commodity.
- stgcost
numeric. Costs associated with the storage level.
- invcost
data.frame. Investment cost.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- invcost
numeric. Overnight investment cost for the specified region and year.
- wacc
numeric. Weighted average cost of capital used to annuitise
invcostfor this storage. Overrides the model-widewacc(see the modeldiscountargument). The social discount rate is never used here.- payback
numeric. Cost-recovery period in years. Where given it replaces
olifein the annuity AND in the years over which the annuity is charged, so the investment is repaid overpaybackyears while the capacity keeps operating for its full operational life. Must be positive and not exceedolife. Unset (or 0) means recover overolife. Implemented for the GLPK solver only.- eac
numeric. Equivalent annual cost, supplied directly instead of being computed from
invcost,waccand the lifetime. Where given it wins; where absent the annuity is computed. Mutually exclusive withinvcostper row.- retcost
numeric. Costs of early retirement of the storage, default is 0.
- capacity
data.frame. Capacity parameters of the storage technology.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- cap
numeric. Capacity of the storage technology.
- cap.lo
numeric. Lower bound of the storage capacity.
- cap.up
numeric. Upper bound of the storage capacity.
- cap.fx
numeric. Fixed value of the storage capacity. This parameter overrides
cap.loandcap.up.- ncap.lo
numeric. Lower bound of the new storage capacity.
- ncap.up
numeric. Upper bound of the new storage capacity.
- ncap.fx
numeric. Fixed value of the new storage capacity. This parameter overrides
ncap.loandncap.up.- ret.lo
numeric. Lower bound of the storage capacity retirement.
- ret.up
numeric. Upper bound of the storage capacity retirement.
- ret.fx
numeric. Fixed value of the storage capacity retirement. This parameter overrides
ret.loandret.up.
- cluster
data.frame. Declaration of the storage clusters – parallel sub-processes of the same storage with their own capacity, availability and costs. The motivating cases are site-constrained storage (pumped-hydro head classes, CAES caverns) and duration classes via a per-cluster
cap2stg. Optional: when empty, cluster labels are harvested from the other slots; when populated it is authoritative and an undeclared label raises an error.- cluster
character. Cluster label. Must match the
clustercolumn values used in the other slots.- desc
character. Human-readable description of the cluster, used in reports.
- region
character. Region the cluster exists in, NA for every region.
- order
integer. Optional display/ranking order; controls the order variants are created and reported in.
- vintage
data.frame. Investment window and operational life of the storage, one row per (vintage, region, cluster). Replaces the former
start,endandolifeslots. A vintage is a separately investable variant that keeps the characteristics of its build year for its whole life – for storage typically a falling capex and a rising round-trip efficiency. Each column is read independently, so a region-agnosticstartmay be combined with a per-regionolife.- vintage
character. Vintage label, normally the build year as a string. NA for an un-vintaged storage.
- region
character. Region name to apply the parameter, NA for every region.
- cluster
character. Cluster label, NA for every cluster.
- start
integer. The first year the storage can be installed. Defaults to the vintage year.
- end
integer. The last year the storage can be installed. Defaults to the vintage year.
- olife
integer. Operational life of the storage in years, applicable to new investment only.
- cap2stg
data.frame. Charging and discharging capacity to the storing capacity inverse ratio, i.e. the storage duration. A data.frame rather than a scalar so it can differ by cluster – 1h / 4h / 8h duration classes of the same storage. A bare scalar (
cap2stg = 4) is still accepted.- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage.
- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster.
- region
character. Region name to apply the parameter, NA for every region.
- year
integer. Year to apply the parameter, NA for every year.
- cap2stg
numeric. Capacity-to-storage ratio (storage duration).
- fullYear
logical. If TRUE (default), the storage technology operates between parent timeframes through the year. The last time-slice in the timeframe is used as a preciding time-slice for the first time-slice in the the same group of time-slices within the parent timeframe. if FALSE, the storage charge and discchare cycle is limited to the parent timeframe. The last time-slice in the timeframe is used as a preciding time-slice for the first time-slice in the the same group of time-slices within the parent timeframe.
- weather
data.frame. Weather factors multipliers.
- vintage
character. Vintage label selecting the variant this row applies to, NA for every vintage. See the
vintageslot.- cluster
character. Cluster label selecting the variant this row applies to, NA for every cluster. See the
clusterslot.- weather
character. Name of the weather factor to apply.
- waf.lo
numeric. Coefficient that links the weather factor with the lower bound of the availability factor.
- waf.up
numeric. Coefficient that links the weather factor with the upper bound of the availability factor.
- waf.fx
numeric. Coefficient that links the weather factor with the fixed value of the availability factor. This parameter overrides
waf.loandwaf.up.- wcinp.lo
numeric. Coefficient that links the weather factor with the lower bound of the input commodity availability factor.
- wcinp.up
numeric. Coefficient that links the weather factor with the upper bound of the input commodity availability factor.
- wcinp.fx
numeric. Coefficient that links the weather factor with the fixed value of the input commodity availability factor. This parameter overrides
wcinp.loandwcinp.up.- wcout.lo
numeric. Coefficient that links the weather factor with the lower bound of the output commodity availability factor.
- wcout.up
numeric. Coefficient that links the weather factor with the upper bound of the output commodity availability factor.
- wcout.fx
numeric. Coefficient that links the weather factor with the fixed value of the output commodity availability factor. This parameter overrides
wcout.loandwcout.up.
- optimizeRetirement
logical. Incidates if the retirement of the storage should be optimized. Also requires the same parameter in the
modelorscenarioclass to be set to TRUE to be effective.- misc
list. List of additional parameters that are not used in the model but can be used for reference or user-defined functions. For example, links to the source of the storage data, or other metadata.
Details
Storage can be used in combination with other processes, such as technologies, supply, or demand to represent complex technological chains, demand or supply technologies with time-shift. Operation of storage includes accumulation, storing, and release of the stored commodity. The storing cycle operates on the ordered time-slices of the commodity timeframe. The cycle is looped either on an annual basis (last time-slice of a year follows the first time slice of the same year) or within the parent time-frame (for example, when commodity time-frame is "HOUR" and the parent time-frame is "DAY" then the storage cycle will be a calendar day).
Examples
STG1 <- newStorage(
name = "STG1",
desc = "Storage description",
commodity = "electricity",
region = "R1",
start = data.frame(region = "R1", start = 0),
end = data.frame(region = "R1", end = 1),
olife = data.frame(region = "R1", olife = 20),
charge = data.frame(
# region = "R1",
year = 2020,
# slice = "HOUR",
charge = 0.1
),
seff = data.frame(
# region = "R1",
# year = 2020,
# slice = "HOUR",
stgeff = 0.999,
inpeff = 0.9,
outeff = 0.9
),
aeff = data.frame(
acomm = "electricity",
region = "R1",
year = 2020,
# slice = "HOUR",
stg2ainp = 0.9,
cinp2ainp = 0.1,
cout2ainp = 0.2,
stg2aout = 0.9,
cinp2aout = 0.9,
cout2aout = 0.9,
cap2ainp = 0.9,
cap2aout = 0.9,
ncap2ainp = 0.9,
ncap2aout = 0.9,
ncap2stg = 0.9
),
af = data.frame(
region = "R1", year = 2020, slice = "HOUR",
af.lo = 0.9, af.up = 0.9, af.fx = 0.9, cinp.up = 0.9,
cinp.fx = 0.9, cinp.lo = 0.9, cout.up = 0.9,
cout.fx = 0.9, cout.lo = 0.9
),
fixom = data.frame(region = "R1", year = 2020, fixom = 0.9),
varom = data.frame(
region = "R1", year = 2020, slice = "HOUR",
inpcost = 0.9, outcost = 0.9, stgcost = 0.9
),
invcost = data.frame(
region = "R1", year = 2020, invcost = 0.9,
wacc = 0.09, payback = 10, retcost = 0.9
),
capacity = data.frame(
region = "R1", year = 2020, stock = 0.9,
cap.lo = 0.9, cap.up = 0.9, cap.fx = 0.9, ncap.lo = 0.9,
ncap.up = 0.9, ncap.fx = 0.9, ret.lo = 0.9, ret.up = 0.9,
ret.fx = 0.9
),
cap2stg = 1,
fullYear = TRUE,
weather = data.frame(
weather = "sunny",
waf.lo = 0.9,
waf.up = 0.9,
waf.fx = 0.9, wcinp.lo = 0.9,
wcinp.fx = 0.9, wcinp.up = 0.9, wcout.lo = 0.9, wcout.fx = 0.9,
wcout.up = 0.9
),
optimizeRetirement = FALSE,
misc = list()
)
