Primary supply
Primary commodities, such as primary energy sources, materials, appear in the RES-model either by export from the rest of the world, or supply. Neither, supply or export from ROW has capacity per se. The main difference between them is the origin of the commodity if it is domestic or foreign Here we assume that different regions of Utopia have different resources to stimulate trade between them. Function newSupply
creates supply
object with declared parameters. The annual, regional, or slice-level limits, as well as costs, can be assigned with availability
parameters.
# If we assume that coal is abundunt resource, available in every region with the same price,
# we don't have to declare @region of the supply.
SUP_COA <- newSupply(
name = "SUP_COA",
description = "Supply of coal",
commodity = "COA",
unit = "PJ",
reserve = list(res.up = 1e6), # total limit of the resource (i.e. deposits)
region = reg_names[1],
availability = list(
year = c(2015, 2030, 2050),
ava.up = c(1000, 2000, 1000), # the upper bound on availability of the commodity
cost = c(convert("USD/tce", "MUSD/PJ", c(50, 60, 70) * .7)) # assumed price per 1PJ
),
slice = "ANNUAL"
)
The saved parameter can be checked in SUP_COA@availability
slot:
region | year | slice | ava.lo | ava.up | ava.fx | cost |
---|---|---|---|---|---|---|
NA | 2015 | NA | NA | 1000 | NA | 1.194213 |
NA | 2030 | NA | NA | 2000 | NA | 1.433056 |
NA | 2050 | NA | NA | 1000 | NA | 1.671898 |
The NA
values mean “for all” by default in columns with sets (region
, year
, slice
) or “no constraint” in columns with numeric parameters. The values between the specified years will be linearly interpolated by default.
Similarly, for other primary commodities:
set.seed(100)
SUP_GAS <- newSupply(
name = "SUP_GAS",
description = "Supply of natural gas",
commodity = "GAS",
unit = "PJ",
reserve = list(res.up = runif(1, 1e3, 1e6)), #
region = reg_names[min(2, nreg)], # only those regions will have the supply
availability = list(
year = c(2015, 2030, 2050),
ava.up = c(1000, 2000, 1000),
cost = c(convert("USD/tce", "MUSD/PJ", c(60, 70, 80) * .7))
),
slice = "ANNUAL"
)
SUP_NUC <- newSupply(
name = "SUP_NUC",
commodity = "NUC",
availability = list(
cost = convert("USD/MWh", "MUSD/PJ", 4) # assumed
),
slice = "ANNUAL"
)
RES_HYD <- newSupply(
name = "RES_HYD",
commodity = "HYD",
availability = data.frame(
ava.up = 1e3,
cost = 0 # no price to the resource, can be dropped
)
)
RES_SOL <- newSupply(
name = "RES_SOL",
commodity = "SOL"
# availability will be defined by weather factors (see below)
)
RES_WIN <- newSupply(
name = "RES_WIN",
commodity = "WIN"
# availability will be defined by weather factors (see below)
)