xlsx

Engineers love spreadsheets. Yep they do.

Basic Energy System

Note

Original Spreadsheet data can be found in: tessif/examples/data/omf/xlsx/energy_system.xlsx

Reading the Data

Setting spellings.get_from's logging level to debug for decluttering doctest output:

>>> from tessif.frused import configurations
>>> configurations.spellings_logging_level = 'debug'

Reading in the data:

>>> from tessif.parse import xl_like
>>> from tessif.frused.paths import example_dir
>>> import os
>>> p = os.path.join(example_dir, 'data', 'omf', 'xlsx', 'energy_system.xls')
>>> energy_system_mapping = xl_like(p, engine='xlrd')
>>> for key in energy_system_mapping.keys():
...     print(key)
Info
Grid
Renewable
Demand
Commodity
mimo_transformers
global_constraints
timeframe

Displaying the parsed timeframe

>>> print(energy_system_mapping['timeframe'])
            timeindex
0 2016-01-01 00:00:00
1 2016-01-01 01:00:00
2 2016-01-01 02:00:00
3 2016-01-01 03:00:00
4 2016-01-01 04:00:00

Tansforming the Read-In Data

>>> from tessif.transform.mapping2es.omf import transform
>>> es = transform(energy_system_mapping)
>>> for node in es.nodes:
...     print(node.label.name)
Power Grid
Gas Grid
Heat Grid
Coal Grid
PV
Onshore
Offshore
Gas
Coal
Power Demand
Heat Demand
Gas_CHP
Coal_PP
Gas_HP

Using the Simulate Wrapper

Automatically do the steps from above utilizing the omf() wrapper:

>>> from tessif import simulate
>>> import functools
>>> import tessif.parse as parse
>>> es = simulate.omf(
...     path = p,
...     parser=functools.partial(
...         parse.xl_like, engine='xlrd'),
...     )
>>> print(type(es.results))
<class 'pyomo.opt.results.results_.SolverResults'>
>>> print(len(es.nodes) is len(es.results['main']))
True