Source code for oemof.solph.components._source
# -*- coding: utf-8 -*-
"""
solph version of oemof.network.Source
SPDX-FileCopyrightText: Uwe Krien <krien@uni-bremen.de>
SPDX-FileCopyrightText: Simon Hilpert
SPDX-FileCopyrightText: Cord Kaldemeyer
SPDX-FileCopyrightText: Stephan Günther
SPDX-FileCopyrightText: Birgit Schachler
SPDX-FileCopyrightText: Johannes Kochems
SPDX-License-Identifier: MIT
"""
from warnings import warn
from oemof.network import Node
from oemof.tools import debugging
[docs]class Source(Node):
"""A component which is designed for one output flow.
Parameters
----------
label : str
String holding the label of the Source object.
The label of each object must be unique.
Examples
--------
Defining a Source:
>>> from oemof import solph
>>> bel = solph.buses.Bus(label='electricity')
>>> pv_plant = solph.components.Source(
... label='pp_pv',
... outputs={bel: solph.flows.Flow()})
>>> type(pv_plant)
<class 'oemof.solph.components._source.Source'>
>>> pv_plant.label
'pp_pv'
>>> str(pv_plant.outputs[bel].output)
'electricity'
Notes
-----
It is theoretically possible to use the Source object with multiple
outputs. However, we strongly recommend using multiple Source objects
instead.
"""
def __init__(self, label=None, outputs=None, custom_attributes=None):
if outputs is None:
outputs = {}
if custom_attributes is None:
custom_attributes = {}
if len(outputs) != 1:
msg = (
"A Source is designed to have one output but you provided {0}."
" If this is intended and you know what you are doing you can "
"disable the SuspiciousUsageWarning globally."
)
warn(
msg.format(len(outputs)),
debugging.SuspiciousUsageWarning,
)
super().__init__(
label=label,
outputs=outputs,
custom_properties=custom_attributes
)
[docs] def constraint_group(self):
pass