""" Configuration helper SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ import configparser from pathlib import Path class ConfigurationHelper: """ Configuration class """ def __init__(self): config_file = Path(Path(__file__).parent.parent / 'config/configuration.ini').resolve() self._config = configparser.ConfigParser() self._config.read(config_file) @property def h_i(self): """ Configured internal convective coefficient in W/m2K :return: float """ return self._config.getfloat('convective_fluxes', 'h_i') @property def h_e(self): """ Configured external convective coefficient in W/m2K :return: float """ return self._config.getfloat('convective_fluxes', 'h_e') @property def frame_ratio(self): """ Configured frame ratio :return: float """ return self._config.getfloat('windows', 'frame_ratio') @property def heated(self): """ Configured heated flag :return: Boolean """ return self._config.getboolean('thermal_zones', 'heated') @property def cooled(self): """ Configured cooled flag :return: Boolean """ return self._config.getboolean('thermal_zones', 'cooled') @property def additional_thermal_bridge_u_value(self): """ Configured additional thermal bridge u value W/m2K :return: """ return self._config.getfloat('thermal_zones', 'additional_thermal_bridge_u_value') @property def indirectly_heated_area_ratio(self): """ Configured indirectly heated area ratio :return: float """ return self._config.getfloat('thermal_zones', 'indirectly_heated_area_ratio') @property def infiltration_rate_system_on(self): """ Configured infiltration rate system on in air change per hour :return: float """ return self._config.getfloat('thermal_zones', 'infiltration_rate_system_on') @property def outside_solar_absorptance(self): """ Configured exterior solar absorptance :return: float """ return self._config.getfloat('thermal_zones', 'outside_solar_absorptance') @property def min_air_change(self): """ Configured minimum air change rate in air changes per hour :return: float """ return self._config.getfloat('thermal_zones', 'min_air_change') @property def max_location_distance_for_shared_walls(self): """ Configured maximal distance between attributes to consider that they may share walls in meters :return: float """ return self._config.getfloat('buildings', 'max_location_distance_for_shared_walls') @property def min_coordinate(self) -> float: """ Configured minimal coordinate value :return: float """ return self._config.getfloat('buildings', 'min_coordinate')