Declarations (RES templates)¶
These tags build the Reference Energy System: they declare commodities
and processes, connect them, and give them their base data. They are
used in base-year templates (VT_*) and technology repositories
(SubRES_*); ~FI_Comm is also accepted in SysSettings.
Declaration tables take names literally: no wildcards here.
Declare each process and commodity exactly once
Declarations are read in parallel. If the same commodity or process is declared twice with different characteristics (for example two timeslice levels), the result can change from one sync to the next, and cases that combine different files can end up with different definitions. For large models, a good practice is to declare all commodities in one place, such as SysSettings.
Commodity Definition Table (~FI_COMM)¶
Declares commodities and their non-numeric characteristics. One row per commodity.
| Column (aliases) | Meaning |
|---|---|
Csets (cset, sets, set) |
Commodity type: NRG (energy), MAT (material), DEM (demand service), ENV (emission), FIN (financial). Carries down: an empty cell takes the value above; if the first row is empty, or the table has no Csets column, NRG. |
Region |
Region(s), comma list allowed. Empty: in a VT_ file the regions of its book; in SysSettings all regions. Not allowed in SubRES (regions come from ~TFM_AVA-C). |
CommName (commodity) |
Commodity name. |
CommDesc (description) |
Description. |
Unit |
Unit label. Empty: the sector default of ~DefUnits. |
LimType (bd) |
Sense of the commodity balance: LO (production ≥ consumption), FX (=), UP (≤), N (no balance). Leave empty for the TIMES default: LO for NRG, DEM, ENV; FX for MAT and FIN. |
CTSLvl (tslvl, timeslicelevel) |
Timeslice level of the balance: ANNUAL (default), SEASON, WEEKLY, DAYNITE. |
PeakTS (peaktimeslice) |
Timeslices for peak monitoring: ANNUAL (default) or a comma list of timeslices. |
CType (type, commoditytype) |
Electricity and heat subtypes: ELC, HTHEAT, LTHEAT. |
| ~FI_Comm | |||||
|---|---|---|---|---|---|
| Csets | CommName | CommDesc | Unit | CTSLvl | CType |
| NRG | COA | Solid fuels | PJ | ANNUAL | |
| ELC | Electricity | PJ | DAYNITE | ELC | |
| HET | District heat | PJ | SEASON | LTHEAT | |
| ENV | CO2 | Carbon dioxide | kt |
CHP outputs need CType
TIMES recognises the electricity output of a CHP plant by its type,
not its name. The electricity commodity must have CType ELC, and
the heat commodity LTHEAT or HTHEAT; otherwise CHP ratios do not
bind.
Veda adds these commodities to every region of every model, so they can be used without being declared:
- the commodities of TIMES's climate module: CH4-ATM, CH4-LO, CH4-MT, CH4-PPB, CH4-UP, CO2-ATM, CO2-GTC, CO2-LO, CO2-PPM, CO2-UP, DELTA-ATM, DELTA-LO, FGS-CON, FGS-MT, FORC-CH4, FORC-CO2, FORC-FGS, FORC-KYO, FORC-N2O, FORCING, N2O-ATM, N2O-LO, N2O-MT, N2O-PPB, N2O-UP;
- the commodity-type groups NRG, MAT, DEM, ENV, FIN and the process-side groups NRGI, NRGO, MATI, MATO, DEMI, DEMO, ENVI, ENVO, FINI, FINO;
ACT, the activity of a process.
Process Definition Table (~FI_PROCESS)¶
Declares processes and their non-numeric characteristics. One row per
process. Numbers (costs, efficiencies, lifetimes, bounds) do not go
here: they go in ~FI_T or in the
insert and update tags.
| Column (aliases) | Meaning |
|---|---|
Sets (set) |
Process type, comma list allowed: ELE (power plant), CHP, HPL (heat plant), PRE (generic), DMD (demand device), IMP, EXP, MIN, IRE (inter-regional trade), STG, STS, STK, NST, IPS (storage types), … Carries down; if the first row is empty, or the table has no Sets column, PRE. |
Region |
Region(s), comma list allowed. Empty: the regions of the file's book. Not allowed in SubRES (regions come from ~TFM_AVA). |
TechName (process) |
Process name, up to 32 characters; keep to 27, as Veda adds suffixes for some generated processes. |
TechDesc (description) |
Description, up to 255 characters. |
Tact (activityunit) |
Activity unit. Empty: the sector default of ~DefUnits. |
Tcap (capacityunit) |
Capacity unit. Empty: the sector default. |
Tslvl (timeslicelevel) |
Operational timeslice level. Empty: DAYNITE for ELE and CHP, SEASON for HPL (when SysSettings' ~TimeSlices has those levels), ANNUAL otherwise. |
PrimaryCG (pcg) |
The primary commodity group, which defines the activity. Usually left empty: Veda then uses the energy outputs (NRGO). Takes one commodity name or one group (NRGO, NRGI, DEMO, DEMI, MATO, …); a comma list is not valid here. |
Vintage |
YES to track vintages; default NO. |
| ~FI_Process | |||||
|---|---|---|---|---|---|
| Sets | TechName | TechDesc | Tact | Tcap | Tslvl |
| MIN | MINCOA1 | Domestic coal supply, step 1 | PJ | PJa | ANNUAL |
| ELE | ECOAST | Coal steam plant | PJ | GW | DAYNITE |
| EGASCC | Gas combined cycle | PJ | GW |
Different capacity and activity units need CAP2ACT
Tact and Tcap are labels. TIMES assumes one unit of capacity
produces one unit of activity per year. If they differ, give the
factor (CAP2ACT, TIMES PRC_CAPACT) in ~FI_T: 31.536 for GW and
PJ, 8.76 for GW and TWh. Without it, a 1 GW plant can produce 1 PJ a
year.
Set PrimaryCG only when the activity is not the obvious energy output:
processes whose costs are per unit of input, sinks with no energy output
(set it to the consumed commodity), or processes whose only output is an
emission.
Flexible Import Table (~FI_T)¶
~FI_T connects processes to commodities (the topology) and gives them
their numbers, in a layout that follows the source data. It is used in
VT_* and SubRES_* files. Data is imported as given, without rules or
filters.

A ~FI_T table has two parts:
- Index columns on the left, with known headers, say what each row is about.
- Value columns on the right, whose headers say what the numbers are:
an attribute, possibly qualified by year, limit type, timeslice,
currency or region (
INVCOST,ACT_BND~UP~2030,PASTI~2015).
The tag cell may sit above any column (~FI_T is a floating tag); a
common convention puts it above the first value column, which visually
separates the two parts.
Index columns¶
| Column (aliases) | Meaning |
|---|---|
TechName (process, pset_pn) |
Process. Carries down: rows below with an empty cell belong to the same process. |
Comm-IN (comm_in, commodity-in, …) |
Main input commodity (comma list allowed). |
Comm-OUT (comm_out, commodity-out, …) |
Main output commodity (comma list allowed). |
Comm-IN-A, Comm-OUT-A |
Auxiliary inputs and outputs (comma lists allowed). |
Attribute (parameter, attr) |
Attribute, when values are given row-wise. |
Commodity (commname, cset_cn) |
Commodity of the value, when it is not the in/out commodity. |
Region |
Region(s), comma list allowed. |
Year (yr), TimeSlice (ts), LimType (bd) |
Comma lists allowed: one value per combination. |
Curr (currency) |
Currency. |
Other_Indexes (commgrp, commodity_group) |
Extra index required by some attributes (a commodity group, a curve number, …). |
Stage, SOW |
Stochastic stage and state of the world. |
How the rows are read¶
- Topology. Each
Comm-IN,Comm-OUT,Comm-IN-AorComm-OUT-Acell connects the row's process to that commodity. A row with topology and no values still declares the connection. A second output on the row below (Comm-OUTonly) adds it to the topology. - Main versus auxiliary flows. An efficiency (
EFF) relates the commodities inComm-INto those inComm-OUT. Any other flow the process has — a utility, a co-product, captured CO2, the electricity of a heat plant — goes inComm-IN-A/Comm-OUT-A, withINPUT/OUTPUTcoefficients. - Which commodity a value belongs to. The
Commoditycolumn if given; otherwise the first ofComm-OUT,Comm-OUT-A,Comm-IN,Comm-IN-A— orComm-INfirst, for attributes that are about inputs. - Comma lists in index columns give one value per combination.
- Regions. Empty: the regions of the file's book. In base templates, a value for a region where the process is not declared is reported ("The process is not defined for this region") and dropped.
- Defaults for every other empty index follow Defaults for empty indexes.
Tag text¶
The tag text sets table-wide defaults with ~-separated tokens:
~FI_T: USD24 (currency), ~FI_T: UP (limit type of every attribute that
has one), ~FI_T: MEUR2000~FX. A qualifier in a column header overrides
it (tag text).
Example¶
| ~FI_T: USD24 | ||||||
|---|---|---|---|---|---|---|
| TechName | Comm-IN | Comm-OUT | EFF | INVCOST | LIFE | ACT_BNDUP2030 |
| EGASCC | GAS | ELC | 0.58 | 950 | 30 | |
| ECOAST | COA | ELC | 0.38 | 1800 | 40 | 120 |
| CO2 |
The third row adds CO2 as an output of ECOAST. Costs are in USD24.
Pitfalls¶
- Currency. Without a currency on the tag or in the header, costs are in the model's default currency, and TIMES converts them.
- Explicit zeros are written to TIMES as "given as zero" and change TIMES defaults (a peak contribution of 0 does not get the default 1). Leave the cell empty to give nothing.
- Switching a process off. A process (in a template or a repository)
whose
START,EFForLIFEdata add up to zero in a region is removed from the model in that region, and so is a flow whose input or output data add up to zero. - Comment rows. A cell starting with
*makes the row a comment inTechName,Attribute,Year,LimType,TimeSlice,Curr,Other_Indexes,StageandSOW, but not inRegionor the commodity columns.\I:works in all of them (comment rows).