From 61d4c012dcca65665af9891c25ee719d24950eac Mon Sep 17 00:00:00 2001 From: Saeed Ranjbar Date: Sun, 13 Aug 2023 10:26:36 -0400 Subject: [PATCH] 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. --- .../energy_systems/energy_storage_system.py | 30 ++----- ...eration_system.py => generation_system.py} | 24 ++++- ...tion_system.py => pv_generation_system.py} | 87 +------------------ .../data_models/energy_systems/system.py | 8 +- .../energy_systems/montreal_custom_catalog.py | 2 +- 5 files changed, 37 insertions(+), 114 deletions(-) rename hub/catalog_factories/data_models/energy_systems/{heat_generation_system.py => generation_system.py} (83%) rename hub/catalog_factories/data_models/energy_systems/{electricity_generation_system.py => pv_generation_system.py} (54%) diff --git a/hub/catalog_factories/data_models/energy_systems/energy_storage_system.py b/hub/catalog_factories/data_models/energy_systems/energy_storage_system.py index e76c0b65..7ac5d7d0 100644 --- a/hub/catalog_factories/data_models/energy_systems/energy_storage_system.py +++ b/hub/catalog_factories/data_models/energy_systems/energy_storage_system.py @@ -8,6 +8,8 @@ Code contributors: Saeed Ranjbar saeed.ranjbar@concordia.ca from __future__ import annotations 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: @@ -15,22 +17,20 @@ 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, + def __init__(self, model_name, manufacturer, storage_type, volume, rated_output_power, + nominal_efficiency, battery_voltage, depth_of_discharge, self_discharge_rate, diameter, 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._physical_volume = 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 @@ -58,19 +58,11 @@ class EnergyStorageSystem: @property def storage_type(self): """ - Get storage type from [electrical, electrochemical, mechanical, thermal], chemical] + Get storage type from ['lithium_ion', 'sensible', 'latent'] :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): """ @@ -127,14 +119,6 @@ class EnergyStorageSystem: """ 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): """ @@ -196,7 +180,6 @@ class EnergyStorageSystem: 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, @@ -204,7 +187,6 @@ class EnergyStorageSystem: '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, diff --git a/hub/catalog_factories/data_models/energy_systems/heat_generation_system.py b/hub/catalog_factories/data_models/energy_systems/generation_system.py similarity index 83% rename from hub/catalog_factories/data_models/energy_systems/heat_generation_system.py rename to hub/catalog_factories/data_models/energy_systems/generation_system.py index 4b290d15..5179eb8d 100644 --- a/hub/catalog_factories/data_models/energy_systems/heat_generation_system.py +++ b/hub/catalog_factories/data_models/energy_systems/generation_system.py @@ -10,14 +10,14 @@ from __future__ import annotations from typing import Union -class HeatGenerationSystem: +class GenerationSystem: """ Heat Generation system class """ 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_mass_flow): + source_mass_flow, nominal_electricity_output, cogeneration_ratio): self._model_name = model_name self._manufacturer = manufacturer self._system_type = system_type @@ -30,6 +30,8 @@ class HeatGenerationSystem: self._electricity_efficiency = electricity_efficiency self._source_temperature = source_temperature self._source_mass_flow = source_mass_flow + self._nominal_electricity_output = nominal_electricity_output + self._cogeneration_ratio = cogeneration_ratio @property def model_name(self): @@ -127,6 +129,22 @@ class HeatGenerationSystem: """ 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): """Class content to dictionary""" content = {'Heat Generation component': {'model name': self.model_name, @@ -141,6 +159,8 @@ class HeatGenerationSystem: 'heat efficiency': self.heat_efficiency, 'cooling efficiency': self.cooling_efficiency, 'electricity efficiency': self.electricity_efficiency, + 'nominal power output [kW]': self.nominal_electricity_output, + 'cogeneration ratio': self.cogeneration_ratio, } } return content diff --git a/hub/catalog_factories/data_models/energy_systems/electricity_generation_system.py b/hub/catalog_factories/data_models/energy_systems/pv_generation_system.py similarity index 54% rename from hub/catalog_factories/data_models/energy_systems/electricity_generation_system.py rename to hub/catalog_factories/data_models/energy_systems/pv_generation_system.py index bc1bdb81..78bd2bd6 100644 --- a/hub/catalog_factories/data_models/energy_systems/electricity_generation_system.py +++ b/hub/catalog_factories/data_models/energy_systems/pv_generation_system.py @@ -10,21 +10,13 @@ from __future__ import annotations from typing import Union -class ElectricityGenerationSystem: +class PvGenerationSystem: """ Electricity Generation system class """ - def __init__(self, model_name, manufacturer, system_type, energy_source, nominal_power_output, nominal_efficiency, - nominal_ambient_temperature, nominal_cell_temperature, nominal_radiation, - 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 + def __init__(self, nominal_ambient_temperature, nominal_cell_temperature, nominal_radiation, + standard_test_condition_cell_temperature, standard_test_condition_maximum_power, width, height): self._nominal_ambient_temperature = nominal_ambient_temperature self._nominal_cell_temperature = nominal_cell_temperature self._nominal_radiation = nominal_radiation @@ -32,55 +24,6 @@ class ElectricityGenerationSystem: self._standard_test_condition_maximum_power = standard_test_condition_maximum_power self._width = width 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 def nominal_ambient_temperature(self): @@ -138,29 +81,9 @@ class ElectricityGenerationSystem: """ 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): """Class content to dictionary""" - content = {'Electricity Generation component': {'id': self.model_name, - '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, + content = {'Electricity Generation component': { 'nominal ambient temperature [Celsius]': self.nominal_ambient_temperature, 'nominal cell temperature [Celsius]': self.nominal_cell_temperature, 'nominal radiation [W/m2]': self.nominal_radiation, @@ -170,8 +93,6 @@ class ElectricityGenerationSystem: self.standard_test_condition_maximum_power, 'width': self.width, 'height': self.height, - 'cogeneration ratio': self.cogeneration_ratio, - 'control strategy': self.control_strategy } } return content diff --git a/hub/catalog_factories/data_models/energy_systems/system.py b/hub/catalog_factories/data_models/energy_systems/system.py index 743c5b56..f8b47905 100644 --- a/hub/catalog_factories/data_models/energy_systems/system.py +++ b/hub/catalog_factories/data_models/energy_systems/system.py @@ -7,8 +7,8 @@ Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca 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.electricity_generation_system import ElectricityGenerationSystem +from hub.catalog_factories.data_models.energy_systems.generation_system import GenerationSystem +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.emission_system import EmissionSystem @@ -69,7 +69,7 @@ class System: return self._demand_types @property - def heat_generation_system(self) -> HeatGenerationSystem: + def heat_generation_system(self) -> GenerationSystem: """ Get heat generation system :return: HeatGenerationSystem @@ -77,7 +77,7 @@ class System: return self._heat_generation_system @property - def electricity_generation_system(self) -> ElectricityGenerationSystem: + def electricity_generation_system(self) -> PvGenerationSystem: """ Get electricity generation system :return: ElectricityGenerationSystem diff --git a/hub/catalog_factories/energy_systems/montreal_custom_catalog.py b/hub/catalog_factories/energy_systems/montreal_custom_catalog.py index e190e49a..91c8d4e4 100644 --- a/hub/catalog_factories/energy_systems/montreal_custom_catalog.py +++ b/hub/catalog_factories/energy_systems/montreal_custom_catalog.py @@ -10,7 +10,7 @@ import xmltodict 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.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.emission_system import EmissionSystem from hub.catalog_factories.data_models.energy_systems.archetype import Archetype