A kit of ready energyRt building blocks and scenario levers for the UTOPIA
teaching model, mirroring the structure of IDEEA::ideea_modules. Assemble a
model from a chosen region layout, solve it, and layer the levers to run
scenarios (see the utopia-use vignette). Built by
data-raw/utopia_modules.R, which follows the same explicit steps as the
UTOPIA I: building the model vignette.
Format
A named list:
- info
a description string.
- maps
utopia$map– the referencesfmaps.- calendars
the UTOPIA calendars (
annual/utopia_seasons/s4_h24/m12_h24) plus the symmetric unit calendars (unit_s4, 4 equal seasons;unit_s4h4, 4x4). Noteannualcannot drive the shipped kits (ELCis balanced at theHOURlevel andutopia_profiles()has no annual shapes); it ships as the coarsest example calendar.- horizons
planning horizons (
base= 2020/2030/2040/2050;unit= the single year 2025 for the unit kits).- electricity
per region layout (
R1,R3,R7,R11– an n-region layout is keyedR<n>, matching theR1..R11region names used by the maps), each a "kit":repo(the base repository), the individual blocks (repo_comm,repo_supply,DEM_ELC,WSOL/WWIN/WHYD, the technologies,STG_ELC), the scenario leversCO2_CAP,CT_CO2,RES_SHARE,NO_NEW_NUC,EARLY_RET, and the add-on modules – re-declared objects that REPLACE their base counterpart when added withadd(mod, ., overwrite = TRUE):GAS_CURVE(domestic gas as a 3-stepasSupplyCurve(), absent inR1which has no gas region),EWIN_SITES(wind in two site-grade clusters, finite GOOD + down-rated POOR),ENUC_VINT(nuclear in two build vintages).- unit
the "unit model" kits (
U1,U3): every input is 1 on the symmetricunit_s4calendar, single-yearunithorizon,discount = 0, so each variant's objective is a small hand-checkable integer – baseU1solves to exactly 8,U3(trade chain from theR1endowment) to 36,SUP_CURVE(2-step unit supply curve replacing the flat supply) to 10, the self-containedSOLARrepository (on/off resource fromutopia_profile()+ storage bridging) to 10. The arithmetic is written out indata-raw/utopia_modules.Rand pinned bytest-unit-model.R.
See also
calendars, horizons, utopia_profiles(), utopia_profile(),
asSupplyCurve(), the UTOPIA vignettes
Examples
if (FALSE) { # \dontrun{
um <- utopia_modules$electricity$R3
mod <- newModel("UTOPIA", data = um$repo,
calendar = utopia_modules$calendars$s4_h24,
region = um$regions, horizon = utopia_modules$horizons$base,
discount = 0.05)
scen <- solve_scenario(interpolate_model(mod, "BASE"),
solver = solver_options$glpk)
# the unit model: hand-checkable integer objective (8)
uk <- utopia_modules$unit$U1
umod <- newModel("UNIT", data = uk$repo,
calendar = utopia_modules$calendars$unit_s4,
region = uk$regions,
horizon = utopia_modules$horizons$unit, discount = 0)
} # }
