Few modifications were mafe to heat_generation_system.py and electricity_generation_system.py classes.
A new class named energy_storage_system.py is created to represent different possible energy storage systems in energy systems.
This commit is contained in:
parent
9034c3375e
commit
fde6f0f751
|
@ -12,16 +12,17 @@ from typing import Union
|
||||||
|
|
||||||
class ElectricityGenerationSystem:
|
class ElectricityGenerationSystem:
|
||||||
"""
|
"""
|
||||||
Heat Generation system class
|
Electricity Generation system class
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, model_name, manufacturer, system_type, nominal_power_output, nominal_efficiency,
|
def __init__(self, model_name, manufacturer, system_type, energy_source, nominal_power_output, nominal_efficiency,
|
||||||
nominal_ambient_temperature, nominal_cell_temperature, nominal_radiation,
|
nominal_ambient_temperature, nominal_cell_temperature, nominal_radiation,
|
||||||
standard_test_condition_cell_temperature, standard_test_condition_maximum_power, width, height,
|
standard_test_condition_cell_temperature, standard_test_condition_maximum_power, width, height,
|
||||||
control_strategy):
|
cogeneration_ratio, control_strategy):
|
||||||
self._model_name = model_name
|
self._model_name = model_name
|
||||||
self._name = manufacturer
|
self._name = manufacturer
|
||||||
self._type = system_type
|
self._type = system_type
|
||||||
|
self._energy_source = energy_source
|
||||||
self._nominal_power_output = nominal_power_output
|
self._nominal_power_output = nominal_power_output
|
||||||
self._nominal_efficiency = nominal_efficiency
|
self._nominal_efficiency = nominal_efficiency
|
||||||
self._nominal_ambient_temperature = nominal_ambient_temperature
|
self._nominal_ambient_temperature = nominal_ambient_temperature
|
||||||
|
@ -32,31 +33,39 @@ class ElectricityGenerationSystem:
|
||||||
self._width = width
|
self._width = width
|
||||||
self._height = height
|
self._height = height
|
||||||
self._control_strategy = control_strategy
|
self._control_strategy = control_strategy
|
||||||
|
self._cogeneration_ratio = cogeneration_ratio
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self):
|
def model_name(self):
|
||||||
"""
|
"""
|
||||||
Get system id
|
Get system model
|
||||||
:return: float
|
:return: float
|
||||||
"""
|
"""
|
||||||
return self._model_name
|
return self._model_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def manufacturer(self):
|
||||||
"""
|
"""
|
||||||
Get name
|
Get name of manufacturer
|
||||||
:return: string
|
:return: string
|
||||||
"""
|
"""
|
||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def type(self):
|
def system_type(self):
|
||||||
"""
|
"""
|
||||||
Get type
|
Get type
|
||||||
:return: string
|
:return: string
|
||||||
"""
|
"""
|
||||||
return self._type
|
return self._type
|
||||||
|
|
||||||
|
@property
|
||||||
|
def energy_source(self):
|
||||||
|
"""
|
||||||
|
Get the energy source of the electricity generation system from [sun, wind, natural gas, biogas, diesel, biomass]
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nominal_power_output(self):
|
def nominal_power_output(self):
|
||||||
"""
|
"""
|
||||||
|
@ -129,6 +138,13 @@ class ElectricityGenerationSystem:
|
||||||
"""
|
"""
|
||||||
return self._height
|
return self._height
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cogeneration_ratio(self):
|
||||||
|
"""
|
||||||
|
Get the ratio between the heat output and electricity output of CHP units
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def control_strategy(self):
|
def control_strategy(self):
|
||||||
""""
|
""""
|
||||||
|
@ -139,21 +155,23 @@ class ElectricityGenerationSystem:
|
||||||
|
|
||||||
def to_dictionary(self):
|
def to_dictionary(self):
|
||||||
"""Class content to dictionary"""
|
"""Class content to dictionary"""
|
||||||
content = {'Generation component': {'id': self.id,
|
content = {'Electricity Generation component': {'id': self.model_name,
|
||||||
'name': self.name,
|
'name': self.manufacturer,
|
||||||
'type': self.type,
|
'type': self.system_type,
|
||||||
'nominal power output [kW]': self.nominal_power_output,
|
'energy source': self.energy_source,
|
||||||
'nominal efficiency': self.nominal_efficiency,
|
'nominal power output [kW]': self.nominal_power_output,
|
||||||
'nominal ambient temperature [Celsius]': self.nominal_ambient_temperature,
|
'nominal efficiency': self.nominal_efficiency,
|
||||||
'nominal cell temperature [Celsius]': self.nominal_cell_temperature,
|
'nominal ambient temperature [Celsius]': self.nominal_ambient_temperature,
|
||||||
'nominal radiation [W/m2]': self.nominal_radiation,
|
'nominal cell temperature [Celsius]': self.nominal_cell_temperature,
|
||||||
'standard test condition cell temperature [Celsius]':
|
'nominal radiation [W/m2]': self.nominal_radiation,
|
||||||
self.standard_test_condition_cell_temperature,
|
'standard test condition cell temperature [Celsius]':
|
||||||
'standard test condition maximum power [kW]':
|
self.standard_test_condition_cell_temperature,
|
||||||
self.standard_test_condition_maximum_power,
|
'standard test condition maximum power [kW]':
|
||||||
'width': self.width,
|
self.standard_test_condition_maximum_power,
|
||||||
'height': self.height,
|
'width': self.width,
|
||||||
'control strategy': self.control_strategy
|
'height': self.height,
|
||||||
}
|
'cogeneration ratio': self.cogeneration_ratio,
|
||||||
|
'control strategy': self.control_strategy
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return content
|
return content
|
||||||
|
|
|
@ -0,0 +1,217 @@
|
||||||
|
"""
|
||||||
|
Energy System catalog heat generation system
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2023 Concordia CERC group
|
||||||
|
Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
|
||||||
|
Code contributors: Saeed Ranjbar saeed.ranjbar@concordia.ca
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
|
||||||
|
class EnergyStorageSystem:
|
||||||
|
""""
|
||||||
|
Energy Storage System Class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, model_name, manufacturer, storage_type, storage_subtype, physical_volume, rated_output_power,
|
||||||
|
nominal_efficiency, battery_voltage, depth_of_discharge, self_discharge_rate, diameter, height,
|
||||||
|
storage_material, storage_thickness, material_conductivity, insulation_material, insulation_thickness,
|
||||||
|
insulation_conductivity, maximum_operating_temperature):
|
||||||
|
self._model_name = model_name
|
||||||
|
self._manufacturer = manufacturer
|
||||||
|
self._storage_type = storage_type
|
||||||
|
self._storage_subtype = storage_subtype
|
||||||
|
self._physical_volume = physical_volume
|
||||||
|
self._rated_output_power = rated_output_power
|
||||||
|
self._nominal_efficiency = nominal_efficiency
|
||||||
|
self._battery_voltage = battery_voltage
|
||||||
|
self._depth_of_discharge = depth_of_discharge
|
||||||
|
self._self_discharge_rate = self_discharge_rate
|
||||||
|
self._diameter = diameter
|
||||||
|
self._height = height
|
||||||
|
self._storage_material = storage_material
|
||||||
|
self._storage_thickness = storage_thickness
|
||||||
|
self._material_conductivity = material_conductivity
|
||||||
|
self._insulation_material = insulation_material
|
||||||
|
self._insulation_thickness = insulation_thickness
|
||||||
|
self._insulation_conductivity = insulation_conductivity
|
||||||
|
self._maximum_operating_temperature = maximum_operating_temperature
|
||||||
|
|
||||||
|
@property
|
||||||
|
def model_name(self):
|
||||||
|
"""
|
||||||
|
Get system model
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._model_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def manufacturer(self):
|
||||||
|
"""
|
||||||
|
Get name of manufacturer
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
return self._manufacturer
|
||||||
|
|
||||||
|
@property
|
||||||
|
def storage_type(self):
|
||||||
|
"""
|
||||||
|
Get storage type from [electrical, electrochemical, mechanical, thermal], chemical]
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
return self._storage_type
|
||||||
|
|
||||||
|
@property
|
||||||
|
def storage_subtype(self):
|
||||||
|
"""
|
||||||
|
Get storage subtype from [lithium ion, lead acid, niMH, caes, flywheel, sensible heat storage, latent heat storage]
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
return self._storage_subtype
|
||||||
|
|
||||||
|
@property
|
||||||
|
def physical_volume(self):
|
||||||
|
"""
|
||||||
|
Get the physical volume of the storage system in cubic meters
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._physical_volume
|
||||||
|
|
||||||
|
@property
|
||||||
|
def rated_output_power(self):
|
||||||
|
"""
|
||||||
|
Get the rated output power of storage system in kW
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._rated_output_power
|
||||||
|
|
||||||
|
@property
|
||||||
|
def nominal_efficiency(self):
|
||||||
|
"""
|
||||||
|
Get the nominal efficiency of the storage system
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._nominal_efficiency
|
||||||
|
|
||||||
|
@property
|
||||||
|
def battery_voltage(self):
|
||||||
|
"""
|
||||||
|
Get the battery voltage in Volt
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._battery_voltage
|
||||||
|
|
||||||
|
@property
|
||||||
|
def depth_of_discharge(self):
|
||||||
|
"""
|
||||||
|
Get the depth of discharge as a percentage
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._depth_of_discharge
|
||||||
|
|
||||||
|
@property
|
||||||
|
def self_discharge_rate(self):
|
||||||
|
"""
|
||||||
|
Get the self discharge rate of battery as a percentage
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._self_discharge_rate
|
||||||
|
|
||||||
|
@property
|
||||||
|
def diameter(self):
|
||||||
|
"""
|
||||||
|
Get the diameter of the storage system in meters
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._diameter
|
||||||
|
|
||||||
|
@property
|
||||||
|
def height(self):
|
||||||
|
"""
|
||||||
|
Get the height of the storage system in meters
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._height
|
||||||
|
|
||||||
|
@property
|
||||||
|
def storage_material(self):
|
||||||
|
"""
|
||||||
|
Get the name of the storage system material
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
return self._storage_material
|
||||||
|
|
||||||
|
@property
|
||||||
|
def storage_thickness(self):
|
||||||
|
"""
|
||||||
|
Get the thickness of the storage system in meters
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._storage_thickness
|
||||||
|
|
||||||
|
@property
|
||||||
|
def material_conductivity(self):
|
||||||
|
"""
|
||||||
|
Get the thermal conductivity of the storage system material in W/(m.K)
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._material_conductivity
|
||||||
|
|
||||||
|
@property
|
||||||
|
def insulation_material(self):
|
||||||
|
"""
|
||||||
|
Get the name of the material used as insulation
|
||||||
|
:return: string
|
||||||
|
"""
|
||||||
|
return self._insulation_material
|
||||||
|
|
||||||
|
@property
|
||||||
|
def insulation_thickness(self):
|
||||||
|
"""
|
||||||
|
Get the thickness of the insulation used for the storage system in meters
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._storage_thickness
|
||||||
|
|
||||||
|
@property
|
||||||
|
def insulation_conductivity(self):
|
||||||
|
"""
|
||||||
|
Get the thickness of the insulation used for the storage system in W/(m.K)
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._insulation_conductivity
|
||||||
|
|
||||||
|
@property
|
||||||
|
def maximum_operating_temperature(self):
|
||||||
|
"""
|
||||||
|
Get maximum operating temperature of the storage system in degree Celsius
|
||||||
|
:return: float
|
||||||
|
"""
|
||||||
|
return self._maximum_operating_temperature
|
||||||
|
|
||||||
|
def to_dictionary(self):
|
||||||
|
"""Class content to dictionary"""
|
||||||
|
content = {'Storage component': {'model name': self.model_name,
|
||||||
|
'manufacturer': self.manufacturer,
|
||||||
|
'storage type': self.storage_type,
|
||||||
|
'storage subtype': self.storage_subtype,
|
||||||
|
'physical volume [m3]': self.physical_volume,
|
||||||
|
'rated power [kW]': self.rated_output_power,
|
||||||
|
'nominal efficiency': self.nominal_efficiency,
|
||||||
|
'battery voltage [V]': self.battery_voltage,
|
||||||
|
'depth of discharge': self.depth_of_discharge,
|
||||||
|
'self discharge rate': self.self_discharge_rate,
|
||||||
|
'diameter [m]': self.diameter,
|
||||||
|
'height [m]': self.height,
|
||||||
|
'storage material': self.storage_material,
|
||||||
|
'storage thickness [m]': self.storage_thickness,
|
||||||
|
'storage material thermal conductivity [W/m.K]': self.material_conductivity,
|
||||||
|
'insulation material': self.insulation_material,
|
||||||
|
'insulation thickness[m]': self.insulation_thickness,
|
||||||
|
'insulation thermal conductivity [W/m.K]': self.insulation_conductivity,
|
||||||
|
'maximum operating temperature [Celsius]': self.maximum_operating_temperature
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return content
|
|
@ -129,18 +129,18 @@ class HeatGenerationSystem:
|
||||||
|
|
||||||
def to_dictionary(self):
|
def to_dictionary(self):
|
||||||
"""Class content to dictionary"""
|
"""Class content to dictionary"""
|
||||||
content = {'Generation component': {'model name': self.model_name,
|
content = {'Heat Generation component': {'model name': self.model_name,
|
||||||
'manufacturer': self.manufacturer,
|
'manufacturer': self.manufacturer,
|
||||||
'type': self.system_type,
|
'type': self.system_type,
|
||||||
'fuel type': self.fuel_type,
|
'fuel type': self.fuel_type,
|
||||||
'nominal thermal output': self.nominal_thermal_output,
|
'nominal thermal output': self.nominal_thermal_output,
|
||||||
'modulation_range': self.modulation_range,
|
'modulation_range': self.modulation_range,
|
||||||
'source types': self.source_types,
|
'source types': self.source_types,
|
||||||
'source temperature [Celsius]': self.source_temperature,
|
'source temperature [Celsius]': self.source_temperature,
|
||||||
'source mass flow [kg/s]': self.source_mass_flow,
|
'source mass flow [kg/s]': self.source_mass_flow,
|
||||||
'heat efficiency': self.heat_efficiency,
|
'heat efficiency': self.heat_efficiency,
|
||||||
'cooling efficiency': self.cooling_efficiency,
|
'cooling efficiency': self.cooling_efficiency,
|
||||||
'electricity efficiency': self.electricity_efficiency,
|
'electricity efficiency': self.electricity_efficiency,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return content
|
return content
|
||||||
|
|
Loading…
Reference in New Issue
Block a user