Source code for oemof.eesyplan.components.storages.thermal_storage

from oemof.eesyplan.components.storages.storage import EnergyStorage


[docs] class ThermalStorage(EnergyStorage):
[docs] def __init__( self, name, project_data, installed_capacity, bus_in_heat, bus_out_heat=None, age_installed=0, capex_var=0.0, opex_fix=0.0, opex_var=0.0, lifetime=None, optimize_cap=False, soc_max=1.0, soc_min=0.0, thermal_losses_relative=0.0, thermal_losses_absolute=0.0, thermal_losses_absolute_investment=0, efficiency_charge=1.0, efficiency_discharge=1.0, theoretical_time_charge=1.0, # hours theoretical_time_discharge=None, # hours maximum_capacity_investment=float("+inf"), ): """ Heat Energy Storage System (HESS). This class represents a complete thermal energy storage system for electrical energy storage and dispatch. .. important :: This is a simplified representation of a complete HESS including all necessary components. :Structure: *input* 1. charge : Heat *output* 1. discharge : Heat Parameters ---------- name : string |name| project_data : Project object |project_data| installed_capacity : float |installed_capacity| bus_in_heat : Node object |bus_in_heat| bus_out_heat : Node object, optional (default: None) |bus_out_heat| age_installed : float or int, optional (default: 0) |age_installed| capex_var : float, optional (default: 0.0) |capex_var| opex_fix : float, optional (default: 0.0) |opex_fix| opex_var : float, optional (default: 0.0) |opex_var| lifetime : int, optional (default: None) |lifetime| optimize_cap : bool, optional (default: False) |optimize_cap| soc_max : float, optional (default: 1.0) |soc_max| soc_min : float, optional (default: 0.0) |soc_min| thermal_losses_relative : float, optional (default: 0.0) |fixed_thermal_losses_relative| thermal_losses_absolute : float, optional (default: 0.0) |fixed_thermal_losses_absolute| thermal_losses_absolute_investment : float, optional (default: 0) |energy_losses_absolute_investment| efficiency_charge : float, optional (default: 1.0) |efficiency_charge| efficiency_discharge : float, optional (default: 1.0) |efficiency_discharge| theoretical_time_charge : float, optional (default: 1.0) |theoretical_time_charge| theoretical_time_discharge : float, optional (default: None) |theoretical_time_discharge| maximum_capacity_investment : float, optional (default: float("+inf")) |maximum_capacity_investment| Examples -------- >>> from oemof.eesyplan import Project >>> from oemof.eesyplan import CarrierBus >>> my_project = Project( ... name="my_project", ... lifetime=20, ... tax=0, ... discount_factor=0.01 ... ) >>> heat_bus = CarrierBus(name="my_heat_bus") >>> my_storage = ThermalStorage( ... name="thermal_storage", ... project_data=my_project, ... bus_in_heat=heat_bus, ... installed_capacity=10, ... ) >>> my_invest_storage = ThermalStorage( ... name="thermal_storage_extension", ... bus_in_heat=heat_bus, ... bus_out_heat=heat_bus, ... age_installed=0, ... installed_capacity=0.1, ... capex_var=3, ... opex_fix=5, ... opex_var=0, ... lifetime=10, ... optimize_cap=True, ... soc_max=1, ... soc_min=0, ... theoretical_time_charge=1, ... theoretical_time_discharge=1, ... efficiency_charge=0.99, ... project_data=my_project, ... thermal_losses_relative=0.6, ... thermal_losses_absolute_investment=20, ... ) """ self.thermal_losses_relative = thermal_losses_relative self.thermal_losses_absolute = thermal_losses_absolute self.thermal_losses_absolute_investment = ( thermal_losses_absolute_investment ) super().__init__( name, project_data=project_data, installed_capacity=installed_capacity, bus_in=bus_in_heat, bus_out=bus_out_heat, age_installed=age_installed, capex_var=capex_var, opex_fix=opex_fix, opex_var=opex_var, lifetime=lifetime, optimize_cap=optimize_cap, soc_max=soc_max, soc_min=soc_min, energy_losses_relative=thermal_losses_relative, energy_losses_absolute=thermal_losses_absolute, energy_losses_absolute_investment=( thermal_losses_absolute_investment ), efficiency_charge=efficiency_charge, efficiency_discharge=efficiency_discharge, theoretical_time_charge=theoretical_time_charge, # hours theoretical_time_discharge=theoretical_time_discharge, # hours maximum_capacity_investment=maximum_capacity_investment, )