diff --git a/properties.py b/properties.py new file mode 100644 index 0000000..610f56b --- /dev/null +++ b/properties.py @@ -0,0 +1,267 @@ +""" +Properties module to be used by mockup building +SPDX - License - Identifier: LGPL - 3.0 - or -later +Copyright © 2023 Concordia CERC group +Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca +""" + +from __future__ import annotations + + +class EnergySystem: + """ + EnergySystem class + """ + def __init__(self): + self._generation_system = None + self._demand_types = None + + @property + def generation_system(self) -> GenerationSystem: + """ + Get building generation system + :return: GenerationSystem + """ + return self._generation_system + + @generation_system.setter + def generation_system(self, value): + """ + Set building generation system + :param value: GenerationSystem + """ + self._generation_system = value + + @property + def demand_types(self): + """ + Get demand types covered by an energy system + :return: [str] + """ + return self._demand_types + + @demand_types.setter + def demand_types(self, value): + """ + Set demand types covered by an energy system + :param value: [str] + """ + self._demand_types = value + + +class GenerationSystem: + """ + GenerationSystem class + """ + + def __init__(self): + self._generic_generation_system = None + + @property + def generic_generation_system(self) -> GenericGenerationSystem: + """ + Get generic generation system + :return: GenericGenerationSystem + """ + return self._generic_generation_system + + @generic_generation_system.setter + def generic_generation_system(self, value): + """ + Set generic generation system + :param value: GenericGenerationSystem + """ + self._generic_generation_system = value + + +class GenericGenerationSystem: + """ + GenericGenerationSystem class + """ + + def __init__(self): + self._fuel_type = None + + @property + def fuel_type(self): + """ + Get fuel type of generic generation system + :return: str + """ + return self._fuel_type + + @fuel_type.setter + def fuel_type(self, value): + """ + Set fuel type of generic generation system + :param value: str + """ + self._fuel_type = value + + +class ThermalZone: + """ + ThermalZone class + """ + + def __init__(self): + self._thermal_boundaries = None + self._total_floor_area = None + + @property + def thermal_boundaries(self) -> [ThermalBoundary]: + """ + Get thermal boundaries + :return: [ThermalBoundary] + """ + return self._thermal_boundaries + + @thermal_boundaries.setter + def thermal_boundaries(self, value): + """ + Set thermal boundaries + :param value: [ThermalBoundary] + """ + self._thermal_boundaries = value + + @property + def total_floor_area(self): + """ + Get total floor area in m2 + :return: float + """ + return self._total_floor_area + + @total_floor_area.setter + def total_floor_area(self, value): + """ + Get total floor area in m2 + :param value: float + """ + self._total_floor_area = value + + +class ThermalBoundary: + """ + ThermalBoundary class + """ + + def __init__(self): + self._type = None + self._opaque_area = None + self._window_ratio = None + + @property + def type(self): + """ + Get thermal boundary type + :return: str + """ + return self._type + + @type.setter + def type(self, value): + """ + Set thermal boundary type + :param value: str + """ + self._type = value + + @property + def opaque_area(self): + """ + Get thermal boundary opaque area in m2 + :return: float + """ + return self._opaque_area + + @opaque_area.setter + def opaque_area(self, value): + """ + Set thermal boundary opaque area in m2 + :param value: float + """ + self._opaque_area = value + + @property + def window_ratio(self): + """ + Get thermal boundary window ratio + :return: float + """ + return self._window_ratio + + @window_ratio.setter + def window_ratio(self, value): + """ + Set thermal boundary window ratio + :param value: float + """ + self._window_ratio = value + + +class Roof: + """ + Roof class + """ + + def __init__(self): + self._solid_polygon = None + self._solar_collectors_area_reduction_factor = None + + @property + def solid_polygon(self) -> Polygon: + """ + Get solid polygon + :return: Polygon + """ + return self._solid_polygon + + @solid_polygon.setter + def solid_polygon(self, value): + """ + Set solid polygon + :param value: Polygon + """ + self._solid_polygon = value + + @property + def solar_collectors_area_reduction_factor(self): + """ + Get solar-collectors-area reduction factor + :return: float + """ + return self._solar_collectors_area_reduction_factor + + @solar_collectors_area_reduction_factor.setter + def solar_collectors_area_reduction_factor(self, value): + """ + Set solar-collectors-area reduction factor + :param value: float + """ + self._solar_collectors_area_reduction_factor = value + + +class Polygon: + """ + Polygon class + """ + + def __init__(self): + self._area = None + + @property + def area(self): + """ + Get polygon area in m2 + :return: float + """ + return self._area + + @area.setter + def area(self, value): + """ + Set polygon area in m2 + :param value: float + """ + self._area = value