""" 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