""" UsageZone module SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ from typing import List import pandas as pd from city_model_structure.internal_gains import InternalGains from helpers.configuration_helper import ConfigurationHelper from city_model_structure.occupancy import Occupancy class UsageZone: """ UsageZone class """ def __init__(self): self._usage = None self._internal_gains = None self._heating_setpoint = None self._heating_setback = None self._cooling_setpoint = None self._hours_day = None self._days_year = None # todo: this must come from library, talk to Rabeeh self._mechanical_air_change = ConfigurationHelper().min_air_change self._occupancy = None self._schedules = None @property def internal_gains(self) -> List[InternalGains]: """ Get usage zone internal gains :return: [InternalGains] """ return self._internal_gains @internal_gains.setter def internal_gains(self, value): """ Set usage zone internal gains :param value: [InternalGains] :return: None """ self._internal_gains = value @property def heating_setpoint(self): """ Get usage zone heating set point in celsius grads :return: float """ return self._heating_setpoint @heating_setpoint.setter def heating_setpoint(self, value): """ Set usage zone heating set point in celsius grads :param value: float :return: None """ self._heating_setpoint = value @property def heating_setback(self): """ Get usage zone heating setback in celsius grads :return: float """ return self._heating_setback @heating_setback.setter def heating_setback(self, value): """ Set usage zone heating setback in celsius grads :param value: float :return: None """ self._heating_setback = value @property def cooling_setpoint(self): """ Get usage zone cooling setpoint in celsius grads :return: float """ return self._cooling_setpoint @cooling_setpoint.setter def cooling_setpoint(self, value): """ Set usage zone cooling setpoint in celsius grads :param value: float :return: None """ self._cooling_setpoint = value @property def hours_day(self): """ Get usage zone usage hours per day :return: float """ return self._hours_day @hours_day.setter def hours_day(self, value): """ Set usage zone usage hours per day :param value: float :return: float """ self._hours_day = value @property def days_year(self): """ Get usage zone usage days per year :return: float """ return self._days_year @days_year.setter def days_year(self, value): """ Set usage zone usage days per year :param value: float :return: None """ self._days_year = value @property def mechanical_air_change(self): """ Set usage zone mechanical air change in air change per hour :return: float """ return self._mechanical_air_change @mechanical_air_change.setter def mechanical_air_change(self, value): """ Get usage zone mechanical air change in air change per hour :param value: float :return: None """ self._mechanical_air_change = value @property def usage(self): """ Get usage zone usage :return: str """ return self._usage @usage.setter def usage(self, value): """ Get usage zone usage :param value: str :return: None """ self._usage = value @property def occupancy(self): """ Get occupancy data :return: [Occupancy] """ return self._occupancy @occupancy.setter def occupancy(self, values): """ Set occupancy :param values: [Occupancy] """ self._occupancy = values @property def schedules(self): """ Get schedule of Sundays :return: [Sundays Schedule_Values] """ return self._schedules @schedules.setter def schedules(self, value): """ occupancy schedules of Sundays :param value: Sunday schedules """ self._schedules = value