Source code for oemof.eesyplan.components.buses.carrier

from oemof.solph import Bus
from oemof.solph import Flow
from oemof.solph.components import Sink
from oemof.solph.components import Source


[docs] class CarrierBus(Bus): # todo add shortage source and excess sink with costs """Bus mit Medium-Attribut"""
[docs] def __init__( self, name, carrier=None, balanced=True, excess_cost=None, shortage_cost=None, ): """ Bus mit Energieträger-Information Parameters ---------- name : str or tuple |name| carrier : str |carrier| balanced : bool |balanced| excess_cost : float |excess_cost| shortage_cost: float |shortage_cost| Examples -------- >>> electricity_bus = CarrierBus(name="grid", carrier="electricity", ... excess_cost=2) >>> electricity_bus.excess_cost 2.0 >>> heat_bus = CarrierBus(name="heating", carrier="heat") >>> heat_bus <CarrierBus 'heating', carrier='heat', shortage: None, excess: None> >>> h2_bus = CarrierBus(name="h2_net", carrier="hydrogen", ... excess_cost=0, shortage_cost=99) >>> h2_bus <CarrierBus 'h2_net', carrier='hydrogen', shortage: 99, excess: 0.0> """ super().__init__(label=name, balanced=balanced) self.carrier = carrier self.name = name if excess_cost is not None: excess_cost = float(excess_cost) self.excess_cost = excess_cost self.shortage_cost = shortage_cost if excess_cost is not None: self.subnode( Sink, local_name="excess", inputs={ self: Flow( variable_costs=excess_cost, ) }, ) if shortage_cost is not None: self.subnode( Source, local_name="shortage", outputs={ self: Flow( variable_costs=shortage_cost, ) }, )
def __repr__(self): return ( f"<CarrierBus '{self.name}', carrier='{self.carrier}', " f"shortage: {self.shortage_cost}, excess: {self.excess_cost}>" )