Skip to content

QuickStart

José Zapata edited this page Jan 18, 2022 · 11 revisions

Quick start guide

openCEM simulates scenarios based on a set of parameters specified in a configuration file. Consult openCEM examples for examples. For example, to run the base case scenario, copy all the files in the folder scenario01 into the openCEM directory.

To run the scenario, type the following command on a command console

$ ./msolve.py scenario01.cfg

Note: Solvers other than the default must be specified by passing the --solver option. For example:

$ ./msolve.py scenario01.cfg --solver=gurobi

openCEM will process the configuration file and run a simulation. At the end of each simulated year it will print a summary of capacity and dispatch decisions for that period. When finished, openCEM it will save the entire set of results in a JSON file.

Configuration files

Scenario files like scenario01.cfg can be copied and edited to manage multiple scenario configurations of openCEM. The following explains the purpose of each field in the configuration file. Configuration files use the Python configparse module to import parameters to simulations.

NOTE: Results will be written in JSON format using the name of the configuration file as its prefix, e.g. for scenario01.cfg the output file will be called scenario01.json.

Name

The field Name gives each simulation a descriptive name, which is used as an identifier for simulations.This field must be specified.

Years

The field Years specifies which calendar years on which evaluate capacity and expansion decisions. openCEM will reject any numbers below 2018 and above 2050 due to the absence of data for those years. openCEM will simulate capacity expansions for each of the years declared in the simulation in chronological order. The Sample.cfg file suggests 5 year intervals, as a trade-off between resolution against computing time and saved data (about 400 MB per simulated year).

discountrate

The field discountrate specifies a discount rate for annualised capital cost calculations. Annual capital technology costs are calculated using a fixed charge rate, with lifetimes defined per technology built. This field must be specified.

nem_ret_gwh

The field nem_ret_gwh specifies, for each year in the Years list a renewable energy target (RET) for the NEM as a minimum amount of energy generated by the system over a year. If this field is commented or deleted, no NEM wide RET is enforced in the simulation.

nem_ret_ratio

The field nem_ret_ratio specifies, for each year in the Years list a renewable energy target (RET) for the NEM as a ratio between 0 and 1 of the total energy generated in a year (where 1 corresponds to enforcing 100% renewable target for the NEM). If this field is commented or deleted, no NEM wide RET is enforced in the simulation.

region_ret_ratio

The field region_ret_ratio specifies a regional renewable energy target as a ratio of the total energy generated in a year, for each year in the Years list and each region in the NEM (1=NSW,2=QLD,3=SA,4=TAS,5=VIC). If the field is omitted no region level RET is enforced. If some regions are omitted, no region level RET is enforced in those regions either. For example, to impose a RET trajectory for VIC and QLD only:

regionret = [
  [5,[0.1, 0.2, 0.3, 0.4]],
  [2,[0.2, 0.3, 0.4, 0.4]]
  ]

nem_emit_limit

The field nem_emit_limit specifies a NEM wide emission limits in megatonnes (MT) per year of simulation. If the field is commented or omitted, no emission limits are enforced on the simulation.

cost_emit

The field cost_emit specifies a cost penalty for emissions in dollars per Ton of total emissions per year of simulation. If the field is commented or omitted, no cost is attributed to emissions in simulations.

manual_intercon_build

The field manual_intercon_build specifies for each year to disable openCEM automatic interconnector expansion decisions. For example:

manual_intercon_build = [true, true, false, false]

If automatic decisions are disabled, no interconnector upgrades are performed for that year, unless they have been exogenously prescribed. See exogenous_transmission for details. If this field is commented or omitted, openCEM by default automatically computes transmission link upgrades that reduce the system cost, which is equivalent to setting false for every year.

Template

For advanced users only. Do not modify. The Template field specifies the scope of the simulation and the sources of data used. The template ISPNeutral.dat configures the model to take technology costs, fuel costs and demand projections from the AEMO ISP data and from the NTNDP data for legacy technologies.

NOTE: As new data sets become available, new templates will be published for use.

custom_costs

For advanced users only. Modify with care. The custom_costs field allows users to specify a csv file with overriding values for specific input costs. Values must be specified for each year in the simulation and for the specific cost category, zone and technology. The csv file must contain information in columns as:

name, zone, tech, value, 2025, 2030, 2035, 2040, 2045
cost_fuel, 13, 1, 1.3, 1.31, 1.31, 1.32, 1.33
cost_gen_build, 12, 4, ,3361.12,3320.1,

Note 1: Year columns that do not match simulation years will be ignored. Note 2: Empty fields and omitting years is permitted for convenience. Therefore, malformed csv files are read without warning.

The list of supported costs is:

  • cost_gen_build, cost_hyb_build, cost_stor_build
  • cost_fuel
  • cost_gen_fom, cost_stor_fom, cost_hyb_fom
  • cost_gen_vom, cost_stor_vom, cost_hyb_vom

Note 3 : FOM and VOM costs are defined per technology only and thus apply to all zones.

exogenous_capacity

For advanced users only. Modify with care. The exogenous_capacity field allows users to specify a csv file with exogenous builds and retirement decisions. Decisions need to be declared once, specifying year, zone, technology and capacity. Note that the commissioning year does not need to match simulation years, and the build becomes operational in the next simulated year after the commissioning year specified in the file. The csv file must contain information in columns as:

year, name, zone, tech, value
2024, stor_cap_exo, 5, 15, 300
2031, gen_cap_exo,16,12,450
2032, hyb_cap_exo,14,13,200
2041, ret_gen_cap_exo, 9,6,2100

Note: Exogenous build/retirement instructions will be obeyed to the build limits specified in the model. E.g. if 500 MW are prescribed, but the gap between existing and maximum capacity for a zone/technology is 210 MW, only 210 MW will be built, and retirement of more than existing capacity will result in zero capacity.

exogenous_transmission

For advanced users only. Modify with care. The exogenous_transmission field allows users to specify a csv file with exogenous transmission upgrade between two linked zones. Decisions need to be declared for each flow direction, specifying year, source zone, destination zone and capacity. Commissioning year does not need to match simulation years, and the upgrade becomes operational in the next simulated year after the commissioning year specified in the file. The csv file must contain information in columns as:

year, name, zone_source, zone_dest, value
2023, intercon_cap_exo, 13, 5, 750
2023, intercon_cap_exo, 5, 13, 750
2034, intercon_cap_exo, 16, 10, 550
2034, intercon_cap_exo, 10, 16, 620

Note: Exogenous build limits must be specified in both directions because the model allows for upgrades that have assymetric forward and reverse direction limits.

Note 2: Transmission upgrade instructions between two zones not linked by the openCEM network topology will be ignored.

cluster

For advanced users only. Modify with extreme care. The field cluster enables/disables time slicing dispatch data for a capacity expansion calculation using a combination of reduced dispatch periods. Demand data for each simulated is split into week periods (Mon-Sun 168 hours) and grouped using hierarchical clustering. Capacity calculations are done using a stochastic program (Pyomo PySP).

cluster_sets

For advanced users only. Modify with extreme care. The field cluster_sets specifies the number of time sliced periods using for a stochastic program calculation of capacity (See cluster).

all_tech_per_zone

For advanced users only. Do not modify. The field all_tech_per_zone defines which technologies are enabled for each of the NEM planning zones. See the module cemo.const (cemo/const.py) for a dictionary reference of zones and technologies in openCEM.

Return to the home page