system_assignation/city_model_structure/thermal_zone.py

102 lines
2.8 KiB
Python

"""
ThermalZone module
SPDX - License - Identifier: LGPL - 3.0 - or -later
Copyright © 2020 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca
"""
from typing import List
from city_model_structure.thermal_boundary import ThermalBoundary
from city_model_structure.usage_zone import UsageZone
from helpers.configuration import Configuration
class ThermalZone:
def __init__(self, surfaces):
self._surfaces = surfaces
self._floor_area = None
self._bounded = None
self._heated = Configuration().heated
self._cooled = Configuration().cooled
self._additional_thermal_bridge_u_value = Configuration().additional_thermal_bridge_u_value
self._effective_thermal_capacity = None
self._indirectly_heated_area_ratio = Configuration().indirectly_heated_area_ratio
self._infiltration_rate_system_on = Configuration().infiltration_rate_system_on
self._infiltration_rate_system_off = None
self._usage_zones = None
@property
def heated(self):
return self._heated
@property
def cooled(self):
return self._cooled
@property
def floor_area(self):
if self._floor_area is None:
self._floor_area = 0
for s in self._surfaces:
if s.type == 'Ground':
self._floor_area += s.area
return self._floor_area
@property
def bounded(self) -> List[ThermalBoundary]:
return self._bounded
@bounded.setter
def bounded(self, value):
self._bounded = value
@property
def surfaces(self):
return self._surfaces
@property
def additional_thermal_bridge_u_value(self):
return self._additional_thermal_bridge_u_value
@additional_thermal_bridge_u_value.setter
def additional_thermal_bridge_u_value(self, value):
self._additional_thermal_bridge_u_value = value
@property
def effective_thermal_capacity(self):
return self._effective_thermal_capacity
@effective_thermal_capacity.setter
def effective_thermal_capacity(self, value):
self._effective_thermal_capacity = value
@property
def indirectly_heated_area_ratio(self):
return self._indirectly_heated_area_ratio
@indirectly_heated_area_ratio.setter
def indirectly_heated_area_ratio(self, value):
self._indirectly_heated_area_ratio = value
@property
def infiltration_rate_system_on(self):
return self._infiltration_rate_system_on
@infiltration_rate_system_on.setter
def infiltration_rate_system_on(self, value):
self._infiltration_rate_system_on = value
@property
def infiltration_rate_system_off(self):
return self._infiltration_rate_system_off
@infiltration_rate_system_off.setter
def infiltration_rate_system_off(self, value):
self._infiltration_rate_system_off = value
@property
def usage_zones(self) -> List[UsageZone]:
return self._usage_zones
@usage_zones.setter
def usage_zones(self, values):
self._usage_zones = values