Source code for oemof.eesyplan.components.converters.chp_variable_ratio

from oemof.eesyplan.investment import _create_invest_if_wanted
from oemof.solph import Flow
from oemof.solph.components import ExtractionTurbineCHP


[docs] class ChpVariableRatio(ExtractionTurbineCHP):
[docs] def __init__( self, name, bus_in_fuel, bus_out_electricity, bus_out_heat, efficiency_electricity_full_condensation, efficiency_electricity_chp, efficiency_heat_chp, project_data, age_installed=0, installed_capacity=0, capex_var=1000, opex_fix=10, opex_var=0, lifetime=20, optimize_cap=False, maximum_capacity=float("+inf"), ): """ Combined Heat and Power (CHP) plant. This class represents a combined heat and power plant that simultaneously generates electricity and useful heat from a single fuel source. .. important :: CHP systems achieve higher overall efficiency by utilising waste heat for useful purposes. :Structure: *input* 1. bus_in_fuel : Gas *output* 1. bus_out_heat : Heat 2. bus_out_electricity : Electricity :Optimization: The characteristic quantity of the optimization is the *maximum electricity power-output (active power)* of the CHP given in kW Parameters ---------- name : str |name| bus_out_electricity: bus-object |bus_out_electricity| bus_out_heat: bus-object |bus_out_heat| efficiency_electricity_full_condensation : float |efficiency_electricity_full_condensation| efficiency_electricity_chp : float |efficiency_electricity_chp| efficiency_heat_chp : float |efficiency_heat_chp| optimize_cap : bool, default=True |optimize_cap| maximum_capacity : float or None, default=None |maximum_capacity| age_installed : int, default=0 |age_installed| installed_capacity : float, default=0 |installed_capacity| capex_var : float, default=1000 |capex_var| opex_fix : float, default=10 |opex_fix| opex_var : float, default=0, |opex_var| lifetime : int, default=20 |lifetime| project_data: project_data |project_data| Examples -------- >>> from oemof.eesyplan import Project >>> from oemof.eesyplan import CarrierBus >>> gas_bus = CarrierBus(name="gas_bus") >>> heat_bus = CarrierBus(name="heat_bus") >>> el_bus = CarrierBus(name="electricity_bus") >>> my_chp_fixed = ChpVariableRatio( ... name="variable_ratio_chp", ... bus_in_fuel=gas_bus, ... bus_out_heat=heat_bus, ... bus_out_electricity=el_bus, ... installed_capacity=300, ... efficiency_electricity_full_condensation=0.3, ... efficiency_electricity_chp=0.3, ... efficiency_heat_chp=0.5, ... capex_var=1500, ... opex_fix=15, ... lifetime=20, ... optimize_cap=True, ... project_data=Project( ... name="Project_X", lifetime=20, tax=0, ... discount_factor=0.01, ... ) ... ) """ if efficiency_electricity_chp + efficiency_heat_chp >= 1.0: raise ValueError("Total efficiency is above 100%.") nv = _create_invest_if_wanted( optimise_cap=optimize_cap, capex_var=capex_var, opex_fix=opex_fix, lifetime=lifetime, age_installed=age_installed, existing_capacity=installed_capacity, maximum_capacity=maximum_capacity, project_data=project_data, ) inputs = {bus_in_fuel: Flow()} outputs = { bus_out_electricity: Flow( nominal_capacity=nv, variable_costs=opex_var, ), bus_out_heat: Flow(), } self.age_installed = age_installed self.installed_capacity = installed_capacity self.capex_var = capex_var self.opex_fix = opex_fix self.opex_var = opex_var self.lifetime = lifetime self.optimize_cap = optimize_cap self.maximum_capacity = maximum_capacity self.efficiency_electricity_chp = efficiency_electricity_chp self.efficiency_heat_chp = efficiency_heat_chp self.efficiency_electricity_full_condensation = ( efficiency_electricity_full_condensation ) super().__init__( label=name, outputs=outputs, inputs=inputs, conversion_factors={ bus_out_electricity: efficiency_electricity_chp, bus_out_heat: efficiency_heat_chp, }, conversion_factor_full_condensation={ bus_out_electricity: efficiency_electricity_full_condensation }, )