Renamed the electricity_generation_system.py to pv_generation_system.py and modified the heating_generation_system to generation_system.py to account for all the generation systems.

This commit is contained in:
Saeed Ranjbar 2023-08-13 10:26:36 -04:00
parent fde6f0f751
commit 61d4c012dc
5 changed files with 37 additions and 114 deletions

View File

@ -8,6 +8,8 @@ Code contributors: Saeed Ranjbar saeed.ranjbar@concordia.ca
from __future__ import annotations from __future__ import annotations
from typing import Union from typing import Union
from hub.catalog_factories.data_models.construction.material import Material
from hub.catalog_factories.data_models.construction.layer import Layer
class EnergyStorageSystem: class EnergyStorageSystem:
@ -15,22 +17,20 @@ class EnergyStorageSystem:
Energy Storage System Class Energy Storage System Class
""" """
def __init__(self, model_name, manufacturer, storage_type, storage_subtype, physical_volume, rated_output_power, def __init__(self, model_name, manufacturer, storage_type, volume, rated_output_power,
nominal_efficiency, battery_voltage, depth_of_discharge, self_discharge_rate, diameter, height, nominal_efficiency, battery_voltage, depth_of_discharge, self_discharge_rate, diameter,
storage_material, storage_thickness, material_conductivity, insulation_material, insulation_thickness, storage_material, storage_thickness, material_conductivity, insulation_material, insulation_thickness,
insulation_conductivity, maximum_operating_temperature): insulation_conductivity, maximum_operating_temperature):
self._model_name = model_name self._model_name = model_name
self._manufacturer = manufacturer self._manufacturer = manufacturer
self._storage_type = storage_type self._storage_type = storage_type
self._storage_subtype = storage_subtype self._physical_volume = volume
self._physical_volume = physical_volume
self._rated_output_power = rated_output_power self._rated_output_power = rated_output_power
self._nominal_efficiency = nominal_efficiency self._nominal_efficiency = nominal_efficiency
self._battery_voltage = battery_voltage self._battery_voltage = battery_voltage
self._depth_of_discharge = depth_of_discharge self._depth_of_discharge = depth_of_discharge
self._self_discharge_rate = self_discharge_rate self._self_discharge_rate = self_discharge_rate
self._diameter = diameter self._diameter = diameter
self._height = height
self._storage_material = storage_material self._storage_material = storage_material
self._storage_thickness = storage_thickness self._storage_thickness = storage_thickness
self._material_conductivity = material_conductivity self._material_conductivity = material_conductivity
@ -58,19 +58,11 @@ class EnergyStorageSystem:
@property @property
def storage_type(self): def storage_type(self):
""" """
Get storage type from [electrical, electrochemical, mechanical, thermal], chemical] Get storage type from ['lithium_ion', 'sensible', 'latent']
:return: string :return: string
""" """
return self._storage_type 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 @property
def physical_volume(self): def physical_volume(self):
""" """
@ -127,14 +119,6 @@ class EnergyStorageSystem:
""" """
return self._diameter return self._diameter
@property
def height(self):
"""
Get the height of the storage system in meters
:return: float
"""
return self._height
@property @property
def storage_material(self): def storage_material(self):
""" """
@ -196,7 +180,6 @@ class EnergyStorageSystem:
content = {'Storage component': {'model name': self.model_name, content = {'Storage component': {'model name': self.model_name,
'manufacturer': self.manufacturer, 'manufacturer': self.manufacturer,
'storage type': self.storage_type, 'storage type': self.storage_type,
'storage subtype': self.storage_subtype,
'physical volume [m3]': self.physical_volume, 'physical volume [m3]': self.physical_volume,
'rated power [kW]': self.rated_output_power, 'rated power [kW]': self.rated_output_power,
'nominal efficiency': self.nominal_efficiency, 'nominal efficiency': self.nominal_efficiency,
@ -204,7 +187,6 @@ class EnergyStorageSystem:
'depth of discharge': self.depth_of_discharge, 'depth of discharge': self.depth_of_discharge,
'self discharge rate': self.self_discharge_rate, 'self discharge rate': self.self_discharge_rate,
'diameter [m]': self.diameter, 'diameter [m]': self.diameter,
'height [m]': self.height,
'storage material': self.storage_material, 'storage material': self.storage_material,
'storage thickness [m]': self.storage_thickness, 'storage thickness [m]': self.storage_thickness,
'storage material thermal conductivity [W/m.K]': self.material_conductivity, 'storage material thermal conductivity [W/m.K]': self.material_conductivity,

View File

@ -10,14 +10,14 @@ from __future__ import annotations
from typing import Union from typing import Union
class HeatGenerationSystem: class GenerationSystem:
""" """
Heat Generation system class Heat Generation system class
""" """
def __init__(self, model_name, manufacturer, system_type, fuel_type, nominal_thermal_output, modulation_range, def __init__(self, model_name, manufacturer, system_type, fuel_type, nominal_thermal_output, modulation_range,
source_types, heat_efficiency, cooling_efficiency, electricity_efficiency, source_temperature, source_types, heat_efficiency, cooling_efficiency, electricity_efficiency, source_temperature,
source_mass_flow): source_mass_flow, nominal_electricity_output, cogeneration_ratio):
self._model_name = model_name self._model_name = model_name
self._manufacturer = manufacturer self._manufacturer = manufacturer
self._system_type = system_type self._system_type = system_type
@ -30,6 +30,8 @@ class HeatGenerationSystem:
self._electricity_efficiency = electricity_efficiency self._electricity_efficiency = electricity_efficiency
self._source_temperature = source_temperature self._source_temperature = source_temperature
self._source_mass_flow = source_mass_flow self._source_mass_flow = source_mass_flow
self._nominal_electricity_output = nominal_electricity_output
self._cogeneration_ratio = cogeneration_ratio
@property @property
def model_name(self): def model_name(self):
@ -127,6 +129,22 @@ class HeatGenerationSystem:
""" """
return self._source_mass_flow return self._source_mass_flow
@property
def nominal_electricity_output(self):
"""
Get nominal_power_output of electricity generation devices or inverters in kW
:return: float
"""
return self._nominal_electricity_output
@property
def cogeneration_ratio(self):
"""
Get the ratio between the heat output and electricity output of CHP units
:return: float
"""
return self._cogeneration_ratio
def to_dictionary(self): def to_dictionary(self):
"""Class content to dictionary""" """Class content to dictionary"""
content = {'Heat Generation component': {'model name': self.model_name, content = {'Heat Generation component': {'model name': self.model_name,
@ -141,6 +159,8 @@ class HeatGenerationSystem:
'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,
'nominal power output [kW]': self.nominal_electricity_output,
'cogeneration ratio': self.cogeneration_ratio,
} }
} }
return content return content

View File

@ -10,21 +10,13 @@ from __future__ import annotations
from typing import Union from typing import Union
class ElectricityGenerationSystem: class PvGenerationSystem:
""" """
Electricity Generation system class Electricity Generation system class
""" """
def __init__(self, model_name, manufacturer, system_type, energy_source, nominal_power_output, nominal_efficiency, def __init__(self, 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,
cogeneration_ratio, control_strategy):
self._model_name = model_name
self._name = manufacturer
self._type = system_type
self._energy_source = energy_source
self._nominal_power_output = nominal_power_output
self._nominal_efficiency = nominal_efficiency
self._nominal_ambient_temperature = nominal_ambient_temperature self._nominal_ambient_temperature = nominal_ambient_temperature
self._nominal_cell_temperature = nominal_cell_temperature self._nominal_cell_temperature = nominal_cell_temperature
self._nominal_radiation = nominal_radiation self._nominal_radiation = nominal_radiation
@ -32,55 +24,6 @@ class ElectricityGenerationSystem:
self._standard_test_condition_maximum_power = standard_test_condition_maximum_power self._standard_test_condition_maximum_power = standard_test_condition_maximum_power
self._width = width self._width = width
self._height = height self._height = height
self._control_strategy = control_strategy
self._cogeneration_ratio = cogeneration_ratio
@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._name
@property
def system_type(self):
"""
Get type
:return: string
"""
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
def nominal_power_output(self):
"""
Get nominal_power_output of electricity generation devices or inverters in kW
:return: float
"""
return self._nominal_power_output
@property
def nominal_efficiency(self):
"""
Get nominal_efficiency of electricity generation devices or inverters
:return: float
"""
return self._nominal_efficiency
@property @property
def nominal_ambient_temperature(self): def nominal_ambient_temperature(self):
@ -138,29 +81,9 @@ 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
def control_strategy(self):
""""
Get control_strategy of Inverter from [MPPT, grid_tied, power_factor_control]
:return: string
"""
return self._control_strategy
def to_dictionary(self): def to_dictionary(self):
"""Class content to dictionary""" """Class content to dictionary"""
content = {'Electricity Generation component': {'id': self.model_name, content = {'Electricity Generation component': {
'name': self.manufacturer,
'type': self.system_type,
'energy source': self.energy_source,
'nominal power output [kW]': self.nominal_power_output,
'nominal efficiency': self.nominal_efficiency,
'nominal ambient temperature [Celsius]': self.nominal_ambient_temperature, 'nominal ambient temperature [Celsius]': self.nominal_ambient_temperature,
'nominal cell temperature [Celsius]': self.nominal_cell_temperature, 'nominal cell temperature [Celsius]': self.nominal_cell_temperature,
'nominal radiation [W/m2]': self.nominal_radiation, 'nominal radiation [W/m2]': self.nominal_radiation,
@ -170,8 +93,6 @@ class ElectricityGenerationSystem:
self.standard_test_condition_maximum_power, self.standard_test_condition_maximum_power,
'width': self.width, 'width': self.width,
'height': self.height, 'height': self.height,
'cogeneration ratio': self.cogeneration_ratio,
'control strategy': self.control_strategy
} }
} }
return content return content

View File

@ -7,8 +7,8 @@ Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
from typing import Union from typing import Union
from hub.catalog_factories.data_models.energy_systems.heat_generation_system import HeatGenerationSystem from hub.catalog_factories.data_models.energy_systems.generation_system import GenerationSystem
from hub.catalog_factories.data_models.energy_systems.electricity_generation_system import ElectricityGenerationSystem from hub.catalog_factories.data_models.energy_systems.pv_generation_system import PvGenerationSystem
from hub.catalog_factories.data_models.energy_systems.distribution_system import DistributionSystem from hub.catalog_factories.data_models.energy_systems.distribution_system import DistributionSystem
from hub.catalog_factories.data_models.energy_systems.emission_system import EmissionSystem from hub.catalog_factories.data_models.energy_systems.emission_system import EmissionSystem
@ -69,7 +69,7 @@ class System:
return self._demand_types return self._demand_types
@property @property
def heat_generation_system(self) -> HeatGenerationSystem: def heat_generation_system(self) -> GenerationSystem:
""" """
Get heat generation system Get heat generation system
:return: HeatGenerationSystem :return: HeatGenerationSystem
@ -77,7 +77,7 @@ class System:
return self._heat_generation_system return self._heat_generation_system
@property @property
def electricity_generation_system(self) -> ElectricityGenerationSystem: def electricity_generation_system(self) -> PvGenerationSystem:
""" """
Get electricity generation system Get electricity generation system
:return: ElectricityGenerationSystem :return: ElectricityGenerationSystem

View File

@ -10,7 +10,7 @@ import xmltodict
from hub.catalog_factories.catalog import Catalog from hub.catalog_factories.catalog import Catalog
from hub.catalog_factories.data_models.energy_systems.system import System from hub.catalog_factories.data_models.energy_systems.system import System
from hub.catalog_factories.data_models.energy_systems.content import Content from hub.catalog_factories.data_models.energy_systems.content import Content
from hub.catalog_factories.data_models.energy_systems.heat_generation_system import GenerationSystem from hub.catalog_factories.data_models.energy_systems.generation_system import GenerationSystem
from hub.catalog_factories.data_models.energy_systems.distribution_system import DistributionSystem from hub.catalog_factories.data_models.energy_systems.distribution_system import DistributionSystem
from hub.catalog_factories.data_models.energy_systems.emission_system import EmissionSystem from hub.catalog_factories.data_models.energy_systems.emission_system import EmissionSystem
from hub.catalog_factories.data_models.energy_systems.archetype import Archetype from hub.catalog_factories.data_models.energy_systems.archetype import Archetype