omf
Api
Transform a tessif energy system into an oemof energy system. |
Internal Functionalities
Generates oemof busses out of tessif busses. |
|
Generates oemof sinks out of tessif sinks. |
|
Generates oemof sources out of tessif sources. |
|
Generates oemof storages out of tessif storages. |
|
Generates oemof transformers out of tessif transformers. |
tessif.transform.es2es.omf is a tessif module aggregating all the
functionality for automatically transforming a tessif energy system into an
oemof energy system.
- tessif.transform.es2es.omf.generate_oemof_busses(busses)[source]
Generates oemof busses out of tessif busses.
- Parameters:
busses¶ (Iterable) – Iterable of
tessif.model.components.Busobjects that are to be transformed intooemof.solph.network.bus.Busobjects.- Returns:
Generator object yielding the transformed
bus objects.- Return type:
generated_busses
Generator
- tessif.transform.es2es.omf.generate_oemof_chps(chps, tessif_busses, oemof_busses)[source]
Generate oemof chps out of tessif chps
- Parameters:
chps¶ (Iterable) – Iterable of
tessif.model.components.CHPobjects that are to be transformed intooemof.solph.components.extraction_turbine_chp.ExtractionTurbineCHPoroemof.solph.components.generic_chp.GenericCHPobjects.Collection of
tessif.model.components.Busobjects present in the same energy system aschps.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system aschps.Used for figuring out connections.
- Returns:
Generator object yielding the transformed
chp objects.- Return type:
generated_chps
Generator
Examples
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_variable_chp()
>>> # generate the chps: >>> chp = list(generate_oemof_chps( ... chps=es.chps, ... tessif_busses=es.busses, ... oemof_busses=generate_oemof_busses(es.busses)))[0]
Label:
>>> print(chp.label) CHP1
Conversion Factors:
>>> for key, value in chp.conversion_factors.items(): ... print('{}: {}'.format(key, value[123123])) Powerline: 0.3 Heat Grid: 0.2 Gas Grid: 1
>>> linear_flow_params = ( ... 'nominal_value', 'summed_min', 'summed_max', ... 'min', 'max', 'positive_gradient', 'negative_gradient')
>>> for flow in list( ... chp.inputs.values())+list(chp.outputs.values()): ... print("Flow from '{}' to '{}'".format( ... flow.label.input, flow.label.output)) ... print('Linear flow parameters') ... for attr in linear_flow_params: ... print('{}:'.format(attr), getattr(flow, attr)) ... print() Flow from 'Gas Grid' to 'CHP1' Linear flow parameters nominal_value: None summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0.0} negative_gradient: {'ub': [], 'costs': 0.0} Flow from 'CHP1' to 'Powerline' Linear flow parameters nominal_value: 9 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0.0} negative_gradient: {'ub': [], 'costs': 0.0} Flow from 'CHP1' to 'Heat Grid' Linear flow parameters nominal_value: 6 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0.0} negative_gradient: {'ub': [], 'costs': 0.0}
- tessif.transform.es2es.omf.generate_oemof_links(links, tessif_busses, oemof_busses)[source]
Generates oemof links out of tessif links.
- Parameters:
links¶ (Iterable) – Iterable of
tessif.model.components.Linkobjects that are to be transformed intooemof.solph.custom.link.Linkobjects.Collection of
tessif.model.components.Busobjects present in the same energy system aslinks.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system aslinks.Used for fiuring out connections
- Returns:
Generator object yielding the transformed
link objects.- Return type:
generated_links
Generator
Examples
Creating a small energy system:
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_fpwe()
- tessif.transform.es2es.omf.generate_oemof_sinks(sinks, tessif_busses, oemof_busses)[source]
Generates oemof sinks out of tessif sinks.
- Parameters:
sinks¶ (Iterable) – Iterable of
tessif.model.components.Sinkobjects that are to be transformed intooemof.solph.network.sink.Sinkobjects.Collection of
tessif.model.components.Busobjects present in the same energy system assinks.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system assinks.Used for fiuring out connections
- Returns:
Generator object yielding the transformed
sink objects.- Return type:
generated_sinks
Generator
Examples
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_fpwe()
>>> # generate the sinks: >>> sink = list(generate_oemof_sinks( ... sinks=es.sinks, ... tessif_busses=es.busses, ... oemof_busses=generate_oemof_busses(es.busses)))[0]
>>> print(sink.label) Demand
>>> linear_flow_params = ( ... 'nominal_value', 'summed_min', 'summed_max', ... 'min', 'max', 'positive_gradient', 'negative_gradient')
>>> for flow in sink.inputs.values(): ... print('Linear flow parameters:') ... for attr in linear_flow_params: ... print('{}:'.format(attr), getattr(flow, attr)) Linear flow parameters: nominal_value: 11 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0}
- tessif.transform.es2es.omf.generate_oemof_sources(sources, tessif_busses, oemof_busses)[source]
Generates oemof sources out of tessif sources.
- Parameters:
sources¶ (Iterable) – Iterable of
tessif.model.components.Sourceobjects that are to be transformed intooemof.solph.network.source.Sourceobjects.Collection of
tessif.model.components.Busobjects present in the same energy system assources.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system assources.Used for fiuring out connections
- Returns:
Generator object yielding the transformed
source objects.- Return type:
generated_sources
Generator
Examples
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_fpwe()
>>> # generate the sources: >>> source = list(generate_oemof_sources( ... sources=es.sources, ... tessif_busses=es.busses, ... oemof_busses=generate_oemof_busses(es.busses)))[0]
>>> print(source.label) Gas Station
>>> linear_flow_params = ( ... 'nominal_value', 'summed_min', 'summed_max', ... 'min', 'max', 'positive_gradient', 'negative_gradient')
>>> for flow in source.outputs.values(): ... print('Linear flow parameters:') ... for attr in linear_flow_params: ... print('{}:'.format(attr), getattr(flow, attr)) Linear flow parameters: nominal_value: 100 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0}
- tessif.transform.es2es.omf.generate_oemof_storages(storages, tessif_busses, oemof_busses)[source]
Generates oemof storages out of tessif storages.
- Parameters:
storages¶ (Iterable) – Iterable of
tessif.model.components.Storageobjects that are to be transformed intooemof.solph.network.storage.Storageobjects.Collection of
tessif.model.components.Busobjects present in the same energy system asstorages.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system asstorages.Used for fiuring out connections.
- Returns:
Generator object yielding the transformed
storage objects.- Return type:
generated_storages
Generator
Examples
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_fpwe()
>>> # generate the storages: >>> storage = list(generate_oemof_storages( ... storages=es.storages, ... tessif_busses=es.busses, ... oemof_busses=generate_oemof_busses(es.busses)))[0]
Storage Uid:
>>> print(storage.label) Battery
Storage in and outflow efficiencies:
>>> print('inflow:', storage.inflow_conversion_factor[12371293]) inflow: 1
>>> print('outflow:', storage.inflow_conversion_factor[107088076]) outflow: 1
Idle Changes:
>>> print(storage.loss_rate[12371203]) 0.1
Initial State Of Charge:
>>> print(storage.initial_storage_level) 1.0
Flows:
>>> linear_flow_params = ( ... 'nominal_value', 'summed_min', 'summed_max', 'min', 'max', ... 'positive_gradient', 'negative_gradient', 'variable_costs', ... 'emissions',)
>>> for flow in list( ... storage.inputs.values())+list(storage.outputs.values()): ... print("Flow from '{}' to '{}'".format( ... flow.label.input, flow.label.output)) ... print('Linear flow parameters') ... for attr in linear_flow_params: ... print('{}:'.format(attr), getattr(flow, attr)) Flow from 'Powerline' to 'Battery' Linear flow parameters nominal_value: 30 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0} variable_costs: [] emissions: 0 Flow from 'Battery' to 'Powerline' Linear flow parameters nominal_value: 30 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0} variable_costs: [] emissions: 0
- tessif.transform.es2es.omf.generate_oemof_transformers(transformers, tessif_busses, oemof_busses)[source]
Generates oemof transformers out of tessif transformers.
- Parameters:
transformers¶ (Iterable) – Iterable of
tessif.model.components.Transformerobjects that are to be transformed intooemof.solph.network.transformer.Transformerobjects.Collection of
tessif.model.components.Busobjects present in the same energy system astransformers.Used for figuring out connections.
Iterable of
oemof.solph.network.bus.Busobjects present in the same energy system astransformers.Used for figuring out connections.
- Returns:
Generator object yielding the transformed
transformer objects.- Return type:
generated_transformers
Generator
Examples
>>> # utilize example hub for accessing a parameterized energy system >>> import tessif.examples.data.tsf.py_hard as tsf_py >>> es = tsf_py.create_fpwe()
>>> # generate the transformers: >>> transformer = list(generate_oemof_transformers( ... transformers=es.transformers, ... tessif_busses=es.busses, ... oemof_busses=generate_oemof_busses(es.busses)))[0]
Label:
>>> print(transformer.label) Generator
Conversion Factors:
>>> for key, value in transformer.conversion_factors.items(): ... print('{}: {}'.format(key, value[123123])) Powerline: 0.42 Pipeline: 1
>>> linear_flow_params = ( ... 'nominal_value', 'summed_min', 'summed_max', ... 'min', 'max', 'positive_gradient', 'negative_gradient')
>>> for flow in list( ... transformer.inputs.values())+list(transformer.outputs.values()): ... print("Flow from '{}' to '{}'".format( ... flow.label.input, flow.label.output)) ... print('Linear flow parameters') ... for attr in linear_flow_params: ... print('{}:'.format(attr), getattr(flow, attr)) ... print() Flow from 'Pipeline' to 'Generator' Linear flow parameters nominal_value: 50 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0} Flow from 'Generator' to 'Powerline' Linear flow parameters nominal_value: 15 summed_min: None summed_max: None min: [] max: [] positive_gradient: {'ub': [], 'costs': 0} negative_gradient: {'ub': [], 'costs': 0}
- tessif.transform.es2es.omf.transform(tessif_es, **kwargs)[source]
Transform a tessif energy system into an oemof energy system.
- Parameters:
tessif_es¶ (
tessif.model.energy_system.AbstractEnergySystem) – The tessif energy system that is to be transformed into an oemof energy system.- Returns:
oemof_es – The oemof energy system that was transformed out of the tessif energy system.
- Return type:
oemof.solph.network.energy_system.EnergySystem
Examples
Use the example hub’s
create_mwe()utility for showcasing basic usage:Create the mwe:
>>> from tessif.examples.data.tsf.py_hard import create_mwe >>> tessif_es = create_mwe()
Transform the
tessif energy system:>>> oemof_es = transform(tessif_es)
Show node labels using the
oemof interfaceas well astessif's uid concept:>>> for node in oemof_es.nodes: ... print(node.label.name) Pipeline Powerline Gas Station Demand Generator Battery
Simulate the oemof energy system:
>>> import tessif.simulate as simulate >>> optimized_oemof_es = simulate.omf_from_es(oemof_es)
Extract some results:
>>> import tessif.transform.es2mapping.omf as transform_oemof_results >>> load_results = transform_oemof_results.LoadResultier( ... optimized_oemof_es) >>> print(load_results.node_load['Powerline']) Powerline Battery Generator Battery Demand 1990-07-13 00:00:00 -10.0 -0.0 0.0 10.0 1990-07-13 01:00:00 -0.0 -10.0 0.0 10.0 1990-07-13 02:00:00 -0.0 -10.0 0.0 10.0 1990-07-13 03:00:00 -0.0 -10.0 0.0 10.0
A slightly more advanced example:
>>> from tessif.examples.data.tsf.py_hard import create_fpwe >>> tessif_es = create_fpwe() >>> oemof_es = transform(tessif_es) >>> optimized_oemof_es = simulate.omf_from_es(oemof_es) >>> load_results = transform_oemof_results.LoadResultier( ... optimized_oemof_es) >>> print(load_results.node_load['Powerline']) Powerline Battery Generator Solar Panel Battery Demand 1990-07-13 00:00:00 -0.0 -0.0 -12.0 1.0 11.0 1990-07-13 01:00:00 -8.0 -0.0 -3.0 0.0 11.0 1990-07-13 02:00:00 -0.9 -3.1 -7.0 0.0 11.0